pptx - R/Finance
Download
Report
Transcript pptx - R/Finance
Trader's DFA
Marc Wildi - Statistician and Economist
Kent Hoxsey - Programmer and Trader
A Practioner's Introduction
to the Direct Filter Approach
Signalextraction
• Noise
• Filter
• Signal
Signal
X t Noisy Data:
Financial (stocks), macro (GDP)
Filter: a set of weights k such that
Yt
k
k
X t k
is `free of noise'
Yt is the Signal
For example a Trend (Momentum)
Eurostoxx50, MA(200) Equal-Weights
(Faber 2009)
Real-Time Signalextraction
Idealized Trend:
YT
k
k
X T k `senses' the future (XT 1 , XT 2 ,...)
vs.
Real-Time Finite Sample Estimate
T 1
YˆT ˆk X T k
k 0
Eurostoxx50, MA(200) Symmetric and
MA(200) Real-Time
Real-Time Perspective
• Turning-points (trades) are delayed
o Performances affected
• Delay could be decreased by selecting
shorter filters
o Generate more `false’ alarms
o Performances affected
• Tradeoff: speed/timeliness vs.
smoothness/reliability
Frequency Domain
• Timeliness
• Reliability
• Both!
Real-Time Signalextraction
Frequency Domain
Idealized Target: YT
k
k
X T k
T 1
Real-Time Estimate: YˆT ˆk X T k
k 0
Transferfunctions
( ):= k exp(ik ) (
if symmetric)
k
T 1
ˆ ( ):= ˆk exp(ik )
k 0
Optimization Criterion: Mean-Square
Filter error: rt Yt Yˆt
Criterion: E[ rt ] min FILTERWEIGHTS ˆk
2
Frequency Domain
ˆ ) min
ˆ
(
)
(
)
S(
k
k
k
ˆ
2
k
Objectives
1.Real-time filters which are `fast’
o Detect turning-points timely
2.Real-time filters which are `reliable’
o Impose strong noise suppression
2
ˆ ) in MS-Criterion
Idea: decompose Γ(k )-Γ(
k
ˆ ) min
ˆ
(
)
(
)
S(
k
k
k
ˆ
2
k
Cosine Law applied to
( ) ˆ ( )
2
ˆ ( )
ˆ ()
()
ˆ ()
( )
2
( ) ˆ ( )
2
ˆ ( ))
( ) ˆ ( ) 2 ( ) ˆ ( ) 1 cos(
Decomposition of Mean-Square
Criterion
T /2
(k ) ˆ (k ) Sˆ (k ) 0
2
k 1
T /2
ˆ )
A( ) A(
k 1
T /2
k
k
2
Sˆ (k )
ˆ ) 1 cos(
ˆ ( )) Sˆ ( )
(1 ) 2A(k )A(
k
k
k
k 1
Mean-Square: 0
Faster Filter : >0
Slower Filter: <0
Timeliness and Noise Suppression
T /2
ˆ ) Sˆ ( )W ( , expweight )
A(k ) A(
k
k
k
2
k 1
T /2
ˆ ) 1 cos(
ˆ ( )) Sˆ ( )W ( , expweight )
(1 ) 2A(k )A(
k
k
k
k
k 1
1 , if k cutoff (k in passband)
W (k , expweight )
expweight
k >cutoff (k in stopband)
|1+k cutoff|
Three Hyperparameters: , expweight, cutoff
Timeliness, Reliability, Signal
Control: Interfacing with the Criterion
Mean-Square: expweight 0
CUSTOMIZATION:
Smaller delay : >0
Stronger noise suppression: expweight 0
Both...
Cutoff: signal
Next : Kents work on these hyperparameters
Latest Developments (2011,2012)
• Fast closed-form solutions
o I-MDFA
• Generic Approach
o Replicate model-based approaches, HP-designs, CFdesigns (see http://blog.zhaw.ch/idp/sefblog)
o Customize traditional mean-square approaches
• Alleviate/control overfitting
o Regularization
o Rmetrics-2012
Background
• SEFBlog:
o http://blog.zhaw.ch/idp/sefblog
o Articles, books, applications, R-code, tutorials
• Recent Articles:
o Wildi/McElroy (2012)
http://blog.zhaw.ch/idp/sefblog/index.php?/archives/263
-On-a-Trilemma-Between-Accuracy,-Timeliness-andSmoothness-in-Real-Time-Forecasting-and-SignalExtraction.html
o Wildi (2012)
http://blog.zhaw.ch/idp/sefblog/index.php?/archives/262
-Up-Dated-I-MDFA-Code-and-Working-Paper.html
Background
• R-Code/tutorials
o Check the categories `I-MDFA code repository’ or
`tutorial’ on SEFBlog
• Macro-indicators
o http://www.idp.zhaw.ch/usri
o http://www.idp.zhaw.ch/euri
• Trading
o http://www.idp.zhaw.ch/MDFA-XT
o http://blog.zhaw.ch/idp/sefblog/index.php?/archives/1
57-A-Generalization-of-the-GARCH-in-Mean-ModelVola-in-I-MDFA-filter.html
A Hybrid Approach
• iMetrica
o Access to State Space, ARIMA, I-MDFA, Stochastic
Volatility, Hybrid
o Chris Blakely: www.cd-blakely.com
Vola in I-MDFA
Described in a blog post, and then in more
detail later in a conference presentation.
Exercise: Reproduce the Example
Code available on SEF-Blog at:
http://blog.zhaw.ch/idp/sefblog/uploads/Vola_in_I-MDFA_prototype1.r
Runs as-is, but you need a "trading" function
Zero-crossing function:
start with your filter weights and data series
create a vector of NAs as long as your index to be your signal
set signal to 1 where filtered data > 0
set signal to 0 where filtered data < 0
fill your NAs - na.locf() is your best friend
Not sophisticated, but tricky: watch your lags
Veddy importante: signal *today* means returns *tomorrow*
Exercise: Reproduce the Example
(2)
Corollary: Understand the Behavior
Reference code runs a multi-stage loop
calculates filters for combinations of params
runs an optimizer over the param space
Effective, but not illuminating for me
parameter changes not intuitive (for me)
needed a feel for sensitivity
And I just happen to have a lot of machines...
easy code changes: expand.grid and foreach
lots of cpu time
eventually, lots of results
Finale: Descend into Obsession
Finale: Descend into Obsession
Finale: Descend into Obsession
Finale: Descend into Obsession
Finale: Descend into Obsession
Finale: Descend into Obsession
Finale: Descend into Obsession
Results: Qualitative Analysis of M/S
Results: Qualitative Analysis of M/S