Professional Documents
Culture Documents
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
1 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
2 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
About me
Lead Data Scientist at Quantopian Inc (https://www.quantopian.com): Building a
crowd sourced hedge fund.
PhD from Brown University -- research on computational neuroscience and machine
learning using Bayesian modeling.
3 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
4 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
5 of 86
plot_strats()
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
6 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
D
ra
w
do
w
n
ta
Be
Ta
il r
is
k
Vo
la
til
ity
Types of risk
7 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
8 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Sharpe Ratio
In [24]:
Sharpe =
mean returns
volatility
9 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
10 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Types of risk
Model misspecication
Data issues
D
ra
w
do
w
n
ta
Be
Ta
il r
is
k
Programming errors
Vo
la
til
ity
Model Risk
Estimation Uncertainty
11 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
12 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
13 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
14 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
"When I bet on horses, I never lose. Why? I bet on all the horses." Tom Haverford
15 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
16 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
17 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
18 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Alternatively:
coin ~ Bernoulli(p=0.5)
coin is a random variable
Bernoulli is a probability distribution
~ reads as "is distributed as"
19 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
20 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
21 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [77]:
22 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Bayesian analysis
Most of the time n ...
Uncertainty about and
Turn and into random variables
How to estimate?
23 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
24 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Bayes Formula!
Prior
Bayes
Posterior
Data
Use prior knowledge and data to update our beliefs.
25 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
26 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [78]:
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Out[78]:
27 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
28 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Probabilistic Programming
Model unknown causes (e.g. ) of a phenomenon as random variables.
Write a programmatic story of how unknown causes result in observable data.
Use Bayes formula to invert generative model to infer unknown causes.
29 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
30 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
31 of 86
plot_want_get()
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
32 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
PyMC3
Probabilistic Programming framework written in Python.
Allows for construction of probabilistic models using intuitive syntax.
Features advanced MCMC samplers.
Fast: Just-in-time compiled by Theano.
Extensible: easily incorporates custom MCMC algorithms and unusual probability
distributions.
Authors: John Salvatier, Chris Fonnesbeck, Thomas Wiecki
Upcoming beta release!
33 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
34 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
35 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
36 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
37 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
38 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [82]:
39 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
40 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [83]:
41 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
42 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
43 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
44 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Priors
Data
45 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
46 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
print data_0.head()
2013-12-31 21:00:00
0.002143
2014-01-02 21:00:00
-0.028532
2014-01-03 21:00:00
-0.001577
2014-01-06 21:00:00
-0.000531
2014-01-07 21:00:00
0.011310
Name: 0, dtype: float64
47 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
48 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [14]:
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
import pymc as pm
with pm.Model() as model:
# Priors on Random Variables
mean_return = pm.Normal('mean return', mu=0, sd=.1)
volatility = pm.HalfNormal('volatility', sd=.1)
# Model returns as Normal
obs = pm.Normal('returns',
mu=mean_return,
sd=volatility,
observed=data_0)
sharpe = pm.Deterministic('sharpe ratio',
mean_return / volatility * np.sqrt(252))
49 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
50 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [15]:
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
with model:
# Instantiate MCMC sampler
step = pm.NUTS()
# Draw 500 samples from the posterior
trace = pm.sample(500, step)
[-----------------100%-----------------] 500 of 500 complete in 0.4 sec
51 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
52 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
53 of 86
In [84]:
Out[84]:
<matplotlib.text.Text at 0x7fde80cb5850>
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
54 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
55 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
In [85]:
Out[85]:
<matplotlib.text.Text at 0x7fde80e58310>
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
56 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [86]:
57 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
58 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [28]:
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
In [29]:
59 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
60 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
61 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [88]:
62 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Interim summary
Bayesian stats allows us to reformulate common risk metrics, use priors and
quantify uncertainty.
IB strategy seems better in almost every regard. Is it though?
63 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
64 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
65 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
66 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
67 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
68 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
returns T(, , 2 )
69 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [94]:
70 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
71 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
72 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Mean returns
In [96]:
73 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
74 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
75 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
76 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
77 of 86
sim_data = list(np.random.randn(75)*.01)
sim_data.append(-.2)
sns.distplot(sim_data, label='data', kde=False, norm_hist=True, color='.5'); sns.dis
tplot(sim_data, label='Normal', fit=stats.norm, kde=False, hist=False, fit_kws={'col
or': 'r', 'label': 'Normal'}); sns.distplot(sim_data, fit=stats.t, kde=False, hist=F
alse, fit_kws={'color': 'y', 'label': 'T'})
plt.xlabel('Daily returns'); plt.legend();
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
78 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
79 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
80 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
81 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
In [42]:
82 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Conclusions
Bayesian statistics allows us to quantify uncertainty -- measure orthogonal sources
of risk.
Rich statistical framework to compare different models against each other.
Blackbox inference algorithms allow estimation of complex models.
PyMC3 puts advanced samplers at your fingertips.
83 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
84 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
Further reading
Quantopian (https://www.quantopian.com) -- Develop trading algorithms like this in
your browser.
My blog for Bayesian linear regression (financial alpha and beta)
(https://twiecki.github.io)
Probilistic Programming for Hackers (http://camdavidsonpilon.github.io
/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/) -- IPython
Notebook book on Bayesian stats using PyMC2.
Doing Bayesian Data Analysis (http://www.indiana.edu/~kruschke
/DoingBayesianDataAnalysis/) -- Great book by Kruschke.
PyMC3 repository (https://github.com/pymc-devs/pymc3)
Twitter: @twiecki (https://twitter.com/twiecki)
85 of 86
03/17/2015 08:47 PM
bayesian_risk_perf_v3 slides
86 of 86
http://twiecki.github.io/bayesian_risk_perf_v3.slides.html?print-pdf#/
03/17/2015 08:47 PM