Skip to content

Commit e298fc7

Browse files
Studies 138-157 — twenty varied teardowns: ML (Random Forest, AI ETF), microstructure (Amihud, turnover), events (split drift, dividend capture), allocation/global (Permanent Portfolio, home bias, country & FX momentum), quirky seasonality (lunar, daylight-saving, SAD), long-run valuation (stocks-for-the-long-run, inflation hedge), fundamentals (NOA, leverage, asset turnover), and position sizing (martingale, Kelly)
Twenty deliberately VARIED ideas across ten families (zero new technical-indicator studies). Data widened: yfinance + the Shiller dataset (GitHub) + the EDGAR fundamentals cache; FRED/CBOE/AAII remain unreachable in this sandbox. - 138 Random-Forest — walk-forward RF; a shuffled-label control matches it (both just learn "be long"). NONE/MIRAGE - 139 AI-Powered-ETF — AIEQ (IBM Watson) trails SPY ~5pp/yr, alpha t=-1.28. WEAK/MIRAGE - 140 Amihud-Illiquidity — t=17 illiquidity "premium" is a survivorship-bias ghost. MIXED/MIRAGE - 141 Turnover-Anomaly — the effect inverts on the survivor S&P 500. MIXED/MIRAGE - 142 Split-Drift — split stocks trail their own baseline post-effective-date. NONE/MIRAGE - 143 Dividend-Capture — the ex-date drop offsets the dividend; costs+tax sink it. NONE/MIRAGE - 144 Permanent-Portfolio — Browne 25/25/25/25: real low-drawdown all-weather mix, but forfeits return. REAL/FRAGILE - 145 Home-Bias — rising global correlation has thinned the diversification lunch. NONE/MIRAGE - 146 Country-Momentum — a real but thin, cost-sensitive country-ETF momentum. WEAK/FRAGILE - 147 FX-Momentum — a documented but decayed FX factor, gone after costs. WEAK/MIRAGE - 148 Lunar-Effect — no full-moon return effect survives. NONE/MIRAGE - 149 Daylight-Saving — the clock-change slump doesn't hold. NONE/MIRAGE - 150 SAD-Effect — the seasonal-daylight return pattern is noise here. NONE/MIRAGE - 151 Stocks-For-Long-Run — Siegel's real equity premium holds in every long window, but the unit is the decade. REAL/FRAGILE - 152 Inflation-Hedge — stocks are a poor SHORT-run inflation hedge (Fama-Schwert). MIXED/MIRAGE - 153 Net-Operating-Assets — a faint balance-sheet-bloat signal, muted on large caps. WEAK/FRAGILE - 154 Leverage-Anomaly — no leverage premium on the survivor panel. NONE/MIRAGE - 155 Asset-Turnover — efficiency doesn't forecast returns here. NONE/MIRAGE - 156 Martingale — averaging down doesn't beat buy-and-hold and courts ruin. NONE/MIRAGE - 157 Kelly-Sizing — the maths is right but the drawdowns/estimation risk make it impractical. WEAK/FRAGILE Bench now 157 studies (156 stamped): 28 Real / 68 Weak / 60 None; 3 Investable / 42 Fragile / 111 Mirage. Two new real-but-fragile signals (Permanent Portfolio, Stocks-for-the-Long-Run) join the podium; ML is now 0-for-6. Published: 20 README rows, bench.md score+families+podium synced, bench_map.png regenerated, tests.yml wired. Gate 157/157 green, all study tests passing, all 40 notebooks executed clean.
1 parent 276213e commit e298fc7

324 files changed

Lines changed: 55303 additions & 30 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/tests.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,66 @@ jobs:
447447
- name: Study 137 — Mansfield-RS test-suite
448448
run: pytest -q studies/137-mansfield-rs/tests
449449

450+
- name: Study 138 — Random-Forest test-suite
451+
run: pytest -q studies/138-random-forest/tests
452+
453+
- name: Study 139 — AI-Powered-ETF test-suite
454+
run: pytest -q studies/139-ai-powered-etf/tests
455+
456+
- name: Study 140 — Amihud-Illiquidity test-suite
457+
run: pytest -q studies/140-amihud-illiquidity/tests
458+
459+
- name: Study 141 — Turnover-Anomaly test-suite
460+
run: pytest -q studies/141-turnover-anomaly/tests
461+
462+
- name: Study 142 — Split-Drift test-suite
463+
run: pytest -q studies/142-split-drift/tests
464+
465+
- name: Study 143 — Dividend-Capture test-suite
466+
run: pytest -q studies/143-dividend-capture/tests
467+
468+
- name: Study 144 — Permanent-Portfolio test-suite
469+
run: pytest -q studies/144-permanent-portfolio/tests
470+
471+
- name: Study 145 — Home-Bias test-suite
472+
run: pytest -q studies/145-home-bias/tests
473+
474+
- name: Study 146 — Country-Momentum test-suite
475+
run: pytest -q studies/146-country-momentum/tests
476+
477+
- name: Study 147 — FX-Momentum test-suite
478+
run: pytest -q studies/147-fx-momentum/tests
479+
480+
- name: Study 148 — Lunar-Effect test-suite
481+
run: pytest -q studies/148-lunar-effect/tests
482+
483+
- name: Study 149 — Daylight-Saving test-suite
484+
run: pytest -q studies/149-daylight-saving/tests
485+
486+
- name: Study 150 — SAD-Effect test-suite
487+
run: pytest -q studies/150-sad-effect/tests
488+
489+
- name: Study 151 — Stocks-For-Long-Run test-suite
490+
run: pytest -q studies/151-stocks-for-long-run/tests
491+
492+
- name: Study 152 — Inflation-Hedge test-suite
493+
run: pytest -q studies/152-inflation-hedge/tests
494+
495+
- name: Study 153 — Net-Operating-Assets test-suite
496+
run: pytest -q studies/153-net-operating-assets/tests
497+
498+
- name: Study 154 — Leverage-Anomaly test-suite
499+
run: pytest -q studies/154-leverage-anomaly/tests
500+
501+
- name: Study 155 — Asset-Turnover test-suite
502+
run: pytest -q studies/155-asset-turnover/tests
503+
504+
- name: Study 156 — Martingale test-suite
505+
run: pytest -q studies/156-martingale/tests
506+
507+
- name: Study 157 — Kelly-Sizing test-suite
508+
run: pytest -q studies/157-kelly-sizing/tests
509+
450510
- name: Smoke-run the offline demos
451511
run: |
452512
python studies/01-overnight-anomaly/examples/run_synthetic_demo.py

README.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Almost everything ends up bottom-right; two chips are green — and neither one
4545
![The bench map — every study placed on a Signal × Tradability grid](docs/bench_map.png)
4646

4747
The counts, the mortality by family of idea, and the five lessons the bench keeps
48-
teaching are in **[What 137 teardowns taught us](docs/bench.md)**.
48+
teaching are in **[What 157 teardowns taught us](docs/bench.md)**.
4949

5050
---
5151

@@ -190,6 +190,26 @@ teaching are in **[What 137 teardowns taught us](docs/bench.md)**.
190190
| **[135](studies/135-fomc-cycle/)** | **FOMC-Cycle** | Do stock returns really hide in the even weeks of the Fed cycle? | ![Weak](https://img.shields.io/badge/Weak-dab617?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
191191
| **[136](studies/136-mark-twain/)** | **Mark-Twain** | Is October really the most dangerous month to own stocks? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
192192
| **[137](studies/137-mansfield-rs/)** | **Mansfield-RS** | Does Weinstein's Stage-2 relative-strength screen beat the market? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
193+
| **[138](studies/138-random-forest/)** | **Random-Forest** | Does a walk-forward Random Forest on price features beat a shuffled-label control? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
194+
| **[139](studies/139-ai-powered-etf/)** | **AI-Powered-ETF** | Can IBM Watson's AI ETF beat a dirt-cheap S&P 500 index fund? | ![Weak](https://img.shields.io/badge/Weak-dab617?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
195+
| **[140](studies/140-amihud-illiquidity/)** | **Amihud-Illiquidity** | Does sorting on price-impact illiquidity earn a premium, or just survivorship? | ![Mixed](https://img.shields.io/badge/Mixed-dab617?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
196+
| **[141](studies/141-turnover-anomaly/)** | **Turnover-Anomaly** | Do low-turnover stocks deliver the Datar-Naik-Radcliffe liquidity premium? | ![Mixed](https://img.shields.io/badge/Mixed-dab617?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
197+
| **[142](studies/142-split-drift/)** | **Split-Drift** | Do stocks drift up after a split takes effect? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
198+
| **[143](studies/143-dividend-capture/)** | **Dividend-Capture** | Can you pocket a dividend by buying just before the ex-date? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
199+
| **[144](studies/144-permanent-portfolio/)** | **Permanent-Portfolio** | Does Harry Browne's four-way mix really survive every regime? | ![Real](https://img.shields.io/badge/Real-2ea44f?style=flat-square) | ![Fragile](https://img.shields.io/badge/Fragile-dab617?style=flat-square) |
200+
| **[145](studies/145-home-bias/)** | **Home-Bias** | Does diversifying abroad still improve a US investor's portfolio? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
201+
| **[146](studies/146-country-momentum/)** | **Country-Momentum** | Does rotating into the strongest-trending country ETFs pay? | ![Weak](https://img.shields.io/badge/Weak-dab617?style=flat-square) | ![Fragile](https://img.shields.io/badge/Fragile-dab617?style=flat-square) |
202+
| **[147](studies/147-fx-momentum/)** | **FX-Momentum** | Does currency momentum still pay after costs? | ![Weak](https://img.shields.io/badge/Weak-dab617?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
203+
| **[148](studies/148-lunar-effect/)** | **Lunar-Effect** | Do stocks really return less around the full moon? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
204+
| **[149](studies/149-daylight-saving/)** | **Daylight-Saving** | Does the market really slump after the clocks change? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
205+
| **[150](studies/150-sad-effect/)** | **SAD-Effect** | Do shorter autumn days really depress stock returns? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
206+
| **[151](studies/151-stocks-for-long-run/)** | **Stocks-For-Long-Run** | Do stocks really always win over the long run? | ![Real](https://img.shields.io/badge/Real-2ea44f?style=flat-square) | ![Fragile](https://img.shields.io/badge/Fragile-dab617?style=flat-square) |
207+
| **[152](studies/152-inflation-hedge/)** | **Inflation-Hedge** | Are stocks really an inflation hedge? | ![Mixed](https://img.shields.io/badge/Mixed-dab617?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
208+
| **[153](studies/153-net-operating-assets/)** | **Net-Operating-Assets** | Does a bloated balance sheet predict low returns? | ![Weak](https://img.shields.io/badge/Weak-dab617?style=flat-square) | ![Fragile](https://img.shields.io/badge/Fragile-dab617?style=flat-square) |
209+
| **[154](studies/154-leverage-anomaly/)** | **Leverage-Anomaly** | Do high-leverage firms earn the higher return theory promises? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
210+
| **[155](studies/155-asset-turnover/)** | **Asset-Turnover** | Do capital-efficient (high asset-turnover) firms beat the market? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
211+
| **[156](studies/156-martingale/)** | **Martingale** | Does averaging down ("martingale") beat just buying and holding? | ![None](https://img.shields.io/badge/None-c0392b?style=flat-square) | ![Mirage](https://img.shields.io/badge/Mirage-c0392b?style=flat-square) |
212+
| **[157](studies/157-kelly-sizing/)** | **Kelly-Sizing** | Does Kelly-optimal position sizing beat fixed sizing in practice? | ![Weak](https://img.shields.io/badge/Weak-dab617?style=flat-square) | ![Fragile](https://img.shields.io/badge/Fragile-dab617?style=flat-square) |
193213

194214
> **Click any study** for the full teardown — two narrative notebooks (one for the curious,
195215
> one for the quant), reproducible code, and every number behind the two stamps.

0 commit comments

Comments
 (0)