-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathresearch.html
More file actions
157 lines (142 loc) · 10.7 KB
/
Copy pathresearch.html
File metadata and controls
157 lines (142 loc) · 10.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Research – Sefa Avci</title>
<link rel="icon" type="image/png" href="favicon.png">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css">
<link href="styles.css" rel="stylesheet">
</head>
<body class="theme-dark">
<!-- Navbar -->
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top shadow-sm">
<a class="navbar-brand brand" href="index.html">Sefa Avci</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#nav" aria-controls="nav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="nav">
<ul class="navbar-nav ml-auto align-items-center">
<li class="nav-item active"><a class="nav-link" href="research.html">Research</a></li>
<li class="nav-item"><a class="nav-link" href="projects.html">Projects</a></li>
<li class="nav-item"><a class="nav-link" href="experience.html">Experience</a></li>
<li class="nav-item"><a class="nav-link" href="about.html">About</a></li>
<li class="nav-item"><a class="nav-link" href="contact.html">Contact</a></li>
<li class="nav-item"><a class="nav-link" href="files/Sefa_Avci_CV.pdf" target="_blank" rel="noopener noreferrer">CV</a></li>
<li class="nav-item"><a class="nav-link nav-icon-link" href="https://github.com/sefaav" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><i class="bi bi-github"></i></a></li>
<li class="nav-item"><a class="nav-link nav-icon-link" href="https://www.linkedin.com/in/sefa-avci" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn"><i class="bi bi-linkedin"></i></a></li>
<li class="nav-item ml-md-3">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="themeSwitch" aria-label="Theme switch">
<label class="custom-control-label text-light" for="themeSwitch">Light mode</label>
</div>
</li>
</ul>
</div>
</nav>
<main class="container pt-5">
<header class="mt-4 mb-4 text-center">
<p class="kicker mb-2">Portfolio</p>
<h1>Research</h1>
<p class="text-muted mb-0">
Independent, reproducible empirical research in quantitative finance — research questions tested
with walk-forward validation and fold-clustered statistical inference.
</p>
</header>
<section class="mb-5 reveal">
<div class="card shadow-sm lift featured-card">
<div class="card-body">
<h3 class="card-title">Does ADF Filtering Improve Pairs-Trading Performance Out of Sample? <span class="badge-featured">Latest</span></h3>
<h6 class="text-muted mb-2">Independent Research · 2026</h6>
<p class="mb-3">
<span class="tech-badge">Python</span><span class="tech-badge">Statistics</span><span class="tech-badge">Hypothesis Testing</span><span class="tech-badge">Time Series</span><span class="tech-badge">Pairs Trading</span><span class="tech-badge">Jupyter</span>
</p>
<h5 class="mt-4">Research question</h5>
<p>
Pairs traders often keep only the pairs whose formation-window spread rejects a unit root
in an Augmented Dickey–Fuller (ADF) test. Do those pairs actually go on to outperform, in
the next out-of-sample trading window, the pairs that failed the test — once both groups
are traded with the same rule, costs, and capital?
</p>
<h5 class="mt-4">Design</h5>
<p>
92 economically related ETF pairs · 34 walk-forward folds · 2008–2026 · 252-day formation
window · 126-day out-of-sample trading window. Formation-window estimates (hedge ratio,
spread mean/std, ADF p-value) are frozen before each trading window; a pair is eligible if
its p-value is below 5%. Every pair is then traded with the same z-score rule and realistic
transaction costs.
</p>
<h5 class="mt-4 mb-3">Main finding</h5>
<div class="quant-metrics">
<div class="row text-center">
<div class="col-4">
<div class="metric-value">−0.25 pp</div>
<div class="metric-label">Mean difference</div>
</div>
<div class="col-4">
<div class="metric-value">p = 0.23</div>
<div class="metric-label">Fama–MacBeth</div>
</div>
<div class="col-4">
<div class="metric-value">[−0.66, +0.17]</div>
<div class="metric-label">95% CI (pp)</div>
</div>
</div>
</div>
<p>
No statistically detectable out-of-sample benefit from the ADF filter in this experiment:
pairs that pass the formation-window stationarity test do not outperform pairs that fail
it in the following trading window.
</p>
<h5 class="mt-4">Inference & robustness</h5>
<ul class="feature-highlights">
<li><i class="bi bi-check2-circle"></i> <span>Primary inference via fold-clustered Fama–MacBeth test across the 34 folds</span></li>
<li><i class="bi bi-check2-circle"></i> <span>Cross-checked with a Newey–West test and a fold-block bootstrap — both agree closely with the primary result</span></li>
<li><i class="bi bi-check2-circle"></i> <span>Two-way clustered regression on all 3,128 pair-fold observations (clustered by fold and by pair)</span></li>
<li><i class="bi bi-check2-circle"></i> <span>Seven additional robustness checks: formation-window length, transaction costs, reversed pair orientation, hedge-ratio sign, and an Engle–Granger alternative filter — every interval still contains zero</span></li>
</ul>
<h5 class="mt-4 mb-2">Per-fold differences</h5>
<img
src="https://raw.githubusercontent.com/sefaav/Quant-Research-Notebooks/main/pairs_trading_stationarity/figures/fig5_per_fold_differences.png"
class="d-block mx-auto rounded responsive-img-large mb-4"
alt="Per-fold difference in mean return between ADF-passing and ADF-failing pairs, across 34 walk-forward folds"
/>
<p class="text-muted" style="font-size:.88rem;">
Built on top of <a href="https://github.com/sefaav/QuantLab" target="_blank" rel="noopener noreferrer">QuantLab</a>'s
data pipeline, walk-forward windows, cost model, and fold-clustered inference. Code, data cache,
results, and the executed notebook are all in the repository.
</p>
<div class="d-flex flex-wrap" style="gap:.6rem;">
<a href="https://github.com/sefaav/Quant-Research-Notebooks/blob/main/pairs_trading_stationarity/README.md"
target="_blank" rel="noopener noreferrer"
class="btn btn-primary">
Read study
</a>
<a href="https://github.com/sefaav/Quant-Research-Notebooks/blob/main/pairs_trading_stationarity/study.ipynb"
target="_blank" rel="noopener noreferrer"
class="btn btn-outline-primary">
View executed notebook
</a>
</div>
</div>
</div>
</section>
</main>
<footer class="text-center small text-muted py-4">
<div class="social-links mb-2">
<a href="https://github.com/sefaav" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><i class="bi bi-github"></i></a>
<a href="https://www.linkedin.com/in/sefa-avci" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn"><i class="bi bi-linkedin"></i></a>
<a href="mailto:sefa.avci@epfl.ch" aria-label="Email"><i class="bi bi-envelope"></i></a>
</div>
<p>© <span id="year"></span> Sefa Avci</p>
</footer>
<button id="backToTop" class="btn btn-primary" aria-label="Back to top">↑</button>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script>
<script src="main.js"></script>
</body>
</html>