Studies 88-102 — fifteen more folk-strategy teardowns #14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: tests | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| # Single dependency source of truth: pyproject.toml, installed through the | |
| # requirements.txt alias (-e .[studies,dev]). That covers the engine, the | |
| # econometrics/ML stack behind the studies (scipy/statsmodels/arch/scikit-learn) | |
| # and pytest. The test-suite itself stays offline: network/real-data tests are | |
| # cache-gated and skip when the cache is absent. | |
| pip install -r requirements.txt | |
| - name: Study-construction gate (every published study, same construction) | |
| run: python tools/check_study_completeness.py | |
| - name: Core engine test-suite (quantlab, offline, deterministic) | |
| run: pytest -q | |
| - name: Study 02 — Falling-Knife test-suite | |
| run: pytest -q studies/02-falling-knife/tests | |
| - name: Study 03 — Fear-Gauge test-suite | |
| run: pytest -q studies/03-fear-gauge/tests | |
| - name: Study 04 — Social-Oracle test-suite | |
| run: pytest -q studies/04-social-oracle/tests | |
| - name: Study 05 — Twin-Spread test-suite | |
| run: pytest -q studies/05-twin-spread/tests | |
| - name: Study 09 — Phantom-Kernel test-suite | |
| run: pytest -q studies/09-phantom-kernel/tests | |
| - name: Study 11 — Vanishing-Penny test-suite | |
| run: pytest -q studies/11-vanishing-penny/tests | |
| - name: Study 16 — Storm-Shy test-suite | |
| run: pytest -q studies/16-storm-shy/tests | |
| - name: Study 06 — Clockwork-Vol test-suite | |
| run: pytest -q studies/06-clockwork-vol/tests | |
| - name: Study 07 — Coiled-Spring test-suite | |
| run: pytest -q studies/07-coiled-spring/tests | |
| - name: Study 08 — True-Strength test-suite | |
| run: pytest -q studies/08-true-strength/tests | |
| - name: Study 10 — Markov-Mint test-suite | |
| run: pytest -q studies/10-markov-mint/tests | |
| - name: Study 12 — Paper-Prophet test-suite | |
| run: pytest -q studies/12-paper-prophet/tests | |
| - name: Study 13 — Crimson-Hour test-suite | |
| run: pytest -q studies/13-crimson-hour/tests | |
| - name: Study 14 — Gamma-Gospel test-suite | |
| run: pytest -q studies/14-gamma-gospel/tests | |
| - name: Study 15 — Sigma-Sleight test-suite | |
| run: pytest -q studies/15-sigma-sleight/tests | |
| - name: Study 17 — Glass-Ceiling test-suite | |
| run: pytest -q studies/17-glass-ceiling/tests | |
| - name: Study 18 — Dull-Roar test-suite | |
| run: pytest -q studies/18-dull-roar/tests | |
| - name: Study 19 — Rubber-Band test-suite | |
| run: pytest -q studies/19-rubber-band/tests | |
| - name: Study 20 — Freight-Train test-suite | |
| run: pytest -q studies/20-freight-train/tests | |
| - name: Study 21 — Fools-Gold test-suite | |
| run: pytest -q studies/21-fools-gold/tests | |
| - name: Study 22 — Crystal-Ball test-suite | |
| run: pytest -q studies/22-crystal-ball/tests | |
| - name: Study 23 — Broken-Tether test-suite | |
| run: pytest -q studies/23-broken-tether/tests | |
| - name: Study 24 — Stampede test-suite | |
| run: pytest -q studies/24-stampede/tests | |
| - name: Study 25 — Clean-Slate test-suite | |
| run: pytest -q studies/25-clean-slate/tests | |
| - name: Study 26 — Sand-Castle test-suite | |
| run: pytest -q studies/26-sand-castle/tests | |
| - name: Study 27 — Steamroller test-suite | |
| run: pytest -q studies/27-steamroller/tests | |
| - name: Study 28 — Carousel test-suite | |
| run: pytest -q studies/28-carousel/tests | |
| - name: Study 29 — Hedgers-Toll test-suite | |
| run: pytest -q studies/29-hedgers-toll/tests | |
| - name: Study 30 — House-Edge test-suite | |
| run: pytest -q studies/30-house-edge/tests | |
| - name: Study 31 — Trade-Winds test-suite | |
| run: pytest -q studies/31-trade-winds/tests | |
| - name: Study 32 — Rip-Tide test-suite | |
| run: pytest -q studies/32-rip-tide/tests | |
| - name: Study 33 — Slingshot test-suite | |
| run: pytest -q studies/33-slingshot/tests | |
| - name: Study 34 — Aftershock test-suite | |
| run: pytest -q studies/34-aftershock/tests | |
| - name: Study 35 — Contango test-suite | |
| run: pytest -q studies/35-contango/tests | |
| - name: Study 36 — Greenback test-suite | |
| run: pytest -q studies/36-greenback/tests | |
| - name: Study 37 — Barometer test-suite | |
| run: pytest -q studies/37-barometer/tests | |
| - name: Study 38 — Chorus test-suite | |
| run: pytest -q studies/38-chorus/tests | |
| - name: Study 39 — Black-Box test-suite | |
| run: pytest -q studies/39-black-box/tests | |
| - name: Study 40 — Paper-Tiger test-suite | |
| run: pytest -q studies/40-paper-tiger/tests | |
| - name: Study 41 — Hangover test-suite | |
| run: pytest -q studies/41-hangover/tests | |
| - name: Study 42 — Last-Call test-suite | |
| run: pytest -q studies/42-last-call/tests | |
| - name: Study 43 — Free-Lunch test-suite | |
| run: pytest -q studies/43-free-lunch/tests | |
| - name: Study 44 — Growth-Spurt test-suite | |
| run: pytest -q studies/44-growth-spurt/tests | |
| - name: Study 45 — Vanishing-Act test-suite | |
| run: pytest -q studies/45-vanishing-act/tests | |
| - name: Study 46 — Bargain-Bin test-suite | |
| run: pytest -q studies/46-bargain-bin/tests | |
| - name: Study 47 — Paper-Moon test-suite | |
| run: pytest -q studies/47-paper-moon/tests | |
| - name: Study 48 — Groundhog test-suite | |
| run: pytest -q studies/48-groundhog/tests | |
| - name: Study 49 — Black-Gold test-suite | |
| run: pytest -q studies/49-black-gold/tests | |
| - name: Study 50 — High-Water test-suite | |
| run: pytest -q studies/50-high-water/tests | |
| - name: Study 51 — Blue-Chip test-suite | |
| run: pytest -q studies/51-blue-chip/tests | |
| - name: Study 52 — Smoke-Screen test-suite | |
| run: pytest -q studies/52-smoke-screen/tests | |
| - name: Study 53 — Jackpot test-suite | |
| run: pytest -q studies/53-jackpot/tests | |
| - name: Study 54 — Static test-suite | |
| run: pytest -q studies/54-static/tests | |
| - name: Study 55 — Summer-Lull test-suite | |
| run: pytest -q studies/55-summer-lull/tests | |
| - name: Study 56 — Tide-Table test-suite | |
| run: pytest -q studies/56-tide-table/tests | |
| - name: Study 57 — Yield-Trap test-suite | |
| run: pytest -q studies/57-yield-trap/tests | |
| - name: Study 58 — Bunker test-suite | |
| run: pytest -q studies/58-bunker/tests | |
| - name: Study 59 — Downhill test-suite | |
| run: pytest -q studies/59-downhill/tests | |
| - name: Study 60 — Long-Shot test-suite | |
| run: pytest -q studies/60-long-shot/tests | |
| - name: Study 61 — Slow-Burn test-suite | |
| run: pytest -q studies/61-slow-burn/tests | |
| - name: Study 62 — Premium-Seller test-suite | |
| run: pytest -q studies/62-premium-seller/tests | |
| - name: Study 63 — Free-Fall test-suite | |
| run: pytest -q studies/63-free-fall/tests | |
| - name: Study 64 — Share-Shuffle test-suite | |
| run: pytest -q studies/64-share-shuffle/tests | |
| - name: Study 65 — Scorecard test-suite | |
| run: pytest -q studies/65-scorecard/tests | |
| - name: Study 66 — Inverted test-suite | |
| run: pytest -q studies/66-inverted/tests | |
| - name: Study 67 — Fed-Drift test-suite | |
| run: pytest -q studies/67-fed-drift/tests | |
| - name: Study 68 — All-Weather test-suite | |
| run: pytest -q studies/68-all-weather/tests | |
| - name: Study 69 — Safe-Haven test-suite | |
| run: pytest -q studies/69-safe-haven/tests | |
| - name: Study 70 — Digital-Gold test-suite | |
| run: pytest -q studies/70-digital-gold/tests | |
| - name: Study 71 — Ambush test-suite | |
| run: pytest -q studies/71-ambush/tests | |
| - name: Study 72 — Loaded-Dice test-suite | |
| run: pytest -q studies/72-loaded-dice/tests | |
| - name: Study 73 — First-Light test-suite | |
| run: pytest -q studies/73-first-light/tests | |
| - name: Study 74 — Mind-the-Gap test-suite | |
| run: pytest -q studies/74-mind-the-gap/tests | |
| - name: Study 75 — Knee-Jerk test-suite | |
| run: pytest -q studies/75-knee-jerk/tests | |
| - name: Study 76 — Rice-Paper test-suite | |
| run: pytest -q studies/76-rice-paper/tests | |
| - name: Study 77 — Golden-Mean test-suite | |
| run: pytest -q studies/77-golden-mean/tests | |
| - name: Study 78 — Crossed-Wires test-suite | |
| run: pytest -q studies/78-crossed-wires/tests | |
| - name: Study 79 — Sleigh-Ride test-suite | |
| run: pytest -q studies/79-sleigh-ride/tests | |
| - name: Study 80 — Cold-Open test-suite | |
| run: pytest -q studies/80-cold-open/tests | |
| - name: Study 81 — Four-Year-Itch test-suite | |
| run: pytest -q studies/81-four-year-itch/tests | |
| - name: Study 82 — Witching-Hour test-suite | |
| run: pytest -q studies/82-witching-hour/tests | |
| - name: Study 83 — Half-Life test-suite | |
| run: pytest -q studies/83-half-life/tests | |
| - name: Study 84 — Moon-Math test-suite | |
| run: pytest -q studies/84-moon-math/tests | |
| - name: Study 85 — Dr-Copper test-suite | |
| run: pytest -q studies/85-dr-copper/tests | |
| - name: Study 86 — Tail-Radar test-suite | |
| run: pytest -q studies/86-tail-radar/tests | |
| - name: Study 87 — Center-Line test-suite | |
| run: pytest -q studies/87-center-line/tests | |
| - name: Study 88 — Dogs-of-the-Dow test-suite | |
| run: pytest -q studies/88-dogs-of-the-dow/tests | |
| - name: Study 89 — Turn-of-the-Month test-suite | |
| run: pytest -q studies/89-turn-of-the-month/tests | |
| - name: Study 90 — Weekend test-suite | |
| run: pytest -q studies/90-weekend/tests | |
| - name: Study 91 — Death-Cross test-suite | |
| run: pytest -q studies/91-death-cross/tests | |
| - name: Study 92 — Easy-Money test-suite | |
| run: pytest -q studies/92-easy-money/tests | |
| - name: Study 93 — Round-Numbers test-suite | |
| run: pytest -q studies/93-round-numbers/tests | |
| - name: Study 94 — Level-Pegging test-suite | |
| run: pytest -q studies/94-level-pegging/tests | |
| - name: Study 95 — Holiday-Cheer test-suite | |
| run: pytest -q studies/95-holiday-cheer/tests | |
| - name: Study 96 — New-Year-Pop test-suite | |
| run: pytest -q studies/96-new-year-pop/tests | |
| - name: Study 97 — Balancing-Act test-suite | |
| run: pytest -q studies/97-balancing-act/tests | |
| - name: Study 98 — High-Noon test-suite | |
| run: pytest -q studies/98-high-noon/tests | |
| - name: Study 99 — Safety-Net test-suite | |
| run: pytest -q studies/99-safety-net/tests | |
| - name: Study 100 — Melting-Ice test-suite | |
| run: pytest -q studies/100-melting-ice/tests | |
| - name: Study 101 — Slow-and-Steady test-suite | |
| run: pytest -q studies/101-slow-and-steady/tests | |
| - name: Study 102 — Free-Rebalance test-suite | |
| run: pytest -q studies/102-free-rebalance/tests | |
| - name: Smoke-run the offline demos | |
| run: | | |
| python studies/01-overnight-anomaly/examples/run_synthetic_demo.py | |
| python studies/71-ambush/examples/run_synthetic_demo.py | |
| python studies/72-loaded-dice/examples/run_synthetic_demo.py | |
| python studies/03-fear-gauge/examples/run_synthetic_demo.py | |
| python studies/04-social-oracle/examples/run_synthetic_demo.py | |
| python studies/05-twin-spread/examples/run_synthetic_demo.py | |
| python studies/09-phantom-kernel/examples/run_synthetic_demo.py | |
| python studies/11-vanishing-penny/examples/run_synthetic_demo.py | |
| python studies/16-storm-shy/examples/run_synthetic_demo.py | |
| python studies/30-house-edge/examples/run_synthetic_demo.py | |
| python studies/31-trade-winds/examples/run_synthetic_demo.py | |
| python studies/32-rip-tide/examples/run_synthetic_demo.py | |
| python studies/33-slingshot/examples/run_synthetic_demo.py | |
| python studies/34-aftershock/examples/run_synthetic_demo.py | |
| python studies/35-contango/examples/run_synthetic_demo.py | |
| python studies/36-greenback/examples/run_synthetic_demo.py | |
| python studies/37-barometer/examples/run_synthetic_demo.py | |
| python studies/38-chorus/examples/run_synthetic_demo.py | |
| python studies/39-black-box/examples/run_synthetic_demo.py |