ATMResearch
Join Overfit - free
Overfit cover card on dark navy, kicker 'Out-of-sample testing': the headline 'One check lifts survival to 91.7%.' over the line 'Parameter neighbours, scored on a sealed final 25%, from a 63.7% base rate.', with a corner badge reading '11 checks · 5,472 strategies'.
  1. Overfit/
  2. Research/
  3. Out-of-Sample Testing: One Check Lifts Survival to 91.7%

November 12, 2026

Out-of-Sample Testing: One Check Lifts Survival to 91.7%

Share

9 min read

Written by Ali Casey, founder of StatOasis and AlgoChef, creator of the Algo Trading Masterclass (ATM), with over 10 years of experience building systematic trading tools - building algorithmic strategies, testing ideas with data, and teaching traders how to build structured, portfolio-based trading workflows.

Published November 12, 2026 · Method

← Back to Research
Table of contents▾
  • TL;DR: the answer box
  • What is out-of-sample testing?
  • How I tested
  • How is a check scored?
  • Which in-sample check best predicts out-of-sample survival?
  • What does each check cost you?
  • How many checks do you need?
  • Did the longer checklists hold up out of sample?
  • Why do longer checklists stop helping?
  • Is a check's rank its value?
  • Which checks overlap?
  • The verdict
  • The honest limits
  • What this means for you
  • Methodology
  • FAQs

The short version

Out-of-sample testing is the one exam a backtest cannot cheat, and you only get to sit it once. So I scored 11 checks you can run in-sample against a sealed final 25% of history, on 5,472 strategies across 8 markets. One check carries almost the whole result: are the parameter settings either side of yours also profitable? Among the strategies that pass it, the share still profitable out of sample rises from a 63.7% base rate to 91.7%.

Every trader who has been burned by a backtest gets the same advice: test it out of sample. It is good advice. It is also a test you can only take once.

Look at the sealed data, go back and change a rule, look again, and it is not out of sample any more. You have fitted to it. I learned what overfitting costs the expensive way, early on, which is why I treat that one look as the most valuable thing a dataset gives you.

So the useful question is not "should I test out of sample?" It is: which check can I run before the exam that tells me how I will do in it?

The validation checklists I have read don't answer that. Split your data. Walk it forward. Run a Monte Carlo. Check parameter stability. Charge costs. Count the trades. All sensible. All unranked. Not one of them came with a test of whether following it helps.

Here is the version with the ranking attached. One check does almost all the work: 95.4% of the precision gain reached by the four-check list picked on a separate selection panel. Judged by the lists of one to four checks picked there under a 30% recall floor, the other ten are optional, and one of them is worse than not looking.

TL;DR: the answer box

  • Out of sample, the base rate is 63.7%. Of 5,472 strategies built and checked on the first 75% of history, 63.7% were still profitable in the sealed final 25%. Every check has to beat that.
  • One check lifts it to 91.7%. Every parameter neighbour also profitable. It passes 53.1% of candidates, catches 87.9% of failures and rejects only 23.5% of the strategies that would have worked.
  • Each check the selection panel added after that adds under a point. Its two-check list reaches 92.4%, three reach 93.0%, four reach 93.1%, while the pass rate falls from 53.1% to 39.0%.
  • The most precise check is also the most wasteful one that beats the base rate. A development Sharpe of at least 0.5 gets 94.5% precision but rejects 75.2% of the strategies that would have survived.
  • "Beats buy-and-hold" fails as a standalone check. Precision 41.2%, below the base rate, and none of the short lists picked on the selection panel includes it.

What is out-of-sample testing?

Out-of-sample testing judges a strategy on price history it was never built, tuned or checked on. Here, each market's history splits at 75%: the first 75% is in-sample, where every rule and every check lives, and the final 25% is out of sample, sealed until the end. A strategy "survived" if it was profitable in that sealed quarter.

The catch is the word sealed. The moment a result from the final 25% changes a decision, that history has been used to fit, and the next test on it is in-sample under a different label. Bailey, Borwein, Lopez de Prado and Zhu (2014) put a number on how far that goes wrong: with enough configurations tried, the best in-sample Sharpe carries essentially no information about out-of-sample performance.

That is why the in-sample checks matter. Think of them as mock exams. You can sit a mock as often as you like, because nothing rides on it. The real exam you sit once. This study asks which mock predicts the real grade.

How I tested

Eight markets on daily bars (SPY, QQQ, IWM, DIA and ES, NQ, NG, JY) and three strategy families that produce 684 parameter variants per market between them: RSI mean reversion, moving-average trend, Donchian breakout. 5,472 variants in total. Every trade follows Execution rule v2: the signal is read at the close, the trade buys the next open, and every exit sells at an open. Long only, one unit.

Everything a check can see lives in the first 75%, including a validation slice held back inside it, the last third of the development window. That held-back-slice design is the simplest member of the family Arlot and Celisse's survey of cross-validation procedures reviews, and the survey's warning applies here too: reusing one slice to both choose and score a procedure biases the score upward.

One more split decides which checks go on a list, and in what order. That choice is made on a separate selection panel: every check recomputed on each market's first half of history, with success measured only up to 2018-02-05, the first date any market's test window begins. The chosen lists are then scored on the sealed final 25%, and every list score below is that score. Picking a list on the same quarter that grades it would be the very overfitting you are trying to catch, which is why the selection panel is separated from the grading slice rather than merely sampled differently.

How is a check scored?

Base rate with no checks at all: 63.7% survived. That is the bar. A check meant to pick strategies that stay profitable and cannot beat 63.7% is not a check, it is a superstition.

Two words are used in their statistical sense throughout, because the whole article turns on the difference:

  • Precision: of the strategies a check passes, the share that survived. How much you can trust a pass.
  • Recall: of the strategies that survived, the share the check let through. How much good stuff you keep.

Any single number can be gamed by ignoring one of them. A check that passes three strategies and gets all three right has 100% precision and is useless.

Which in-sample check best predicts out-of-sample survival?

CheckPassesPrecisionRecallFailures caughtSurvivors thrown away
Development Sharpe ≥ 0.516.7%94.5%24.8%97.5%75.2%
Every parameter neighbour also profitable53.1%91.7%76.5%87.9%23.5%
Profitable in all three thirds41.0%91.3%58.8%90.2%41.2%
Profitable in the held-back validation slice65.5%84.2%86.6%71.6%13.4%
Still profitable at 5 bps per side66.5%83.9%87.6%70.6%12.4%
Profitable over the whole development sample71.1%82.2%91.8%65.1%8.2%
At least 100 trades28.7%81.2%36.5%85.2%63.5%
Validation CAGR ≥ half the fitted CAGR69.5%71.9%78.5%46.3%21.5%
Same parameters work on 5+ of 8 markets87.4%70.5%96.8%28.9%3.2%
No single trade worth a quarter of the profit71.0%68.8%76.6%39.0%23.4%
Beats buy-and-hold in development28.2%41.2%18.2%54.4%81.8%

Every check computed on the first 75% of history, scored on the sealed final 25%. 5,472 strategies, 63.7% base rate.

Precision on its own hides the cost: a development Sharpe of at least 0.5 buys 94.5% precision at 24.8% recall, while the parameter-neighbour check holds 91.7% precision and keeps 76.5% of the survivors.

Read the top two rows together, because they are the same trade in opposite directions.

Sharpe ≥ 0.5 is the most precise check in the study at 94.5%. It is also the most destructive of the checks that beat the base rate: it passes 16.7% of candidates and throws away 75.2% of the strategies that would have worked. Screen these 5,472 variants on it and three of every four that went on to survive die in the screen.

The parameter-neighbour check (is every setting immediately either side of yours also profitable?) gets 91.7% precision while letting through 53.1% of candidates and discarding only 23.5% of eventual survivors. Under three points less precise, and it costs you a third as much.

What does each check cost you?

Every check bills you in good strategies: the Sharpe screen discards 75.2% of the ones that would have survived, the parameter-neighbour check only 23.5%.

That is the column most checklists never mention. Every check has a price, paid in strategies you would have been happy to trade.

And at the bottom of the table: beats buy-and-hold in development has a precision of 41.2% against a 63.7% base rate. Strategies that beat the index during development were less likely to still be making money afterwards.

How many checks do you need?

Now the actual question. Not "which check is best" but "which set do I run."

I searched every combination of every size on the selection panel, with one constraint: the combination has to keep at least 30% of the strategies that survived there. Without that floor the search collapses into a veto, and a checklist that approves 2% of candidates is not a filter.

ChecklistPrecisionPasses
No checks63.7%100%
1 check: parameter neighbours also profitable91.7%53.1%
2 checks: + no single trade worth a quarter of the profit92.4%41.6%
3 checks: + still profitable at 5 bps per side93.0%40.5%
4 checks: + profitable in the held-back validation slice93.1%39.0%

Each list picked on the selection panel, then scored out of sample on the final 25%.

One check does 95.4% of the four-check list's gain: 63.7% to 91.7%. Three more checks take it to 93.1% while the pass rate falls from 53.1% to 39.0%.

One check gets you from 63.7% to 91.7%. The second adds 0.7 percentage points. The third adds 0.5, the fourth 0.1, and the list that started by passing 53.1% of candidates ends by passing 39.0%.

Did the longer checklists hold up out of sample?

The longer lists looked far better where they were picked. On the selection panel, where the base rate was 65.0%, the two-check list scored 97.4% and the one-check list 91.6%. Three and four checks both scored 97.9% there. On the sealed final quarter the one-check list held at 91.7%, and the two-, three- and four-check lists fell to 92.4%, 93.0% and 93.1%.

The single check kept its score on history it had not seen. Most of the extra checks' lead did not survive the move. Stopping at one is my reading of this final quarter, the same quarter that scores it. On the selection panel alone, every longer list scored higher than the single check.

That is the checklist. One item, and an optional second that buys 0.7 points:

  1. Are the parameter settings either side of yours also profitable? Not "is there a plateau", just: do the neighbours work? Move every parameter one grid step either side, diagonal combinations included, so your lookback and your threshold change together as well as alone. If any of those settings, or yours, was not profitable over the development window, the strategy fails the check.
  2. Optional: does any single trade carry more than a quarter of the profit? If one does, drop the strategy. On its own this check is weak, 68.8% precision, tenth of the eleven. Added to the neighbours it lifts precision from 91.7% to 92.4% and cuts the pass rate from 53.1% to 41.6%. Run it only if you can spare the pipeline.

The neighbour check is not free. The study scores it 3 on a 1-to-3 effort scale (my judgement, not a measurement), because it needs the runs either side of your settings. If you optimised on a parameter grid, those runs already exist. The single-trade check scores 1: it reads the trade list you already have.

Why do longer checklists stop helping?

There is a failure mode worth seeing, because it is what happens if you do the obvious thing and keep adding whatever check most improves your hit rate. Greedily selecting the next-best check against the same outcome you are trying to predict is data dredging with extra steps, which is why the ordering below is fixed on the selection panel before anything is graded.

Chasing precision check by check reaches 97.5% two steps in. Applying all eleven ends at 97.4% on 2.1% of the field and keeps 3.2% of the survivors: the nine remaining checks, applied together, buy no precision and only shrink the pool.

Greedy selection with no recall floor, picked on the selection panel, takes Sharpe ≥ 0.5 first: precision jumps to 94.5%, recall drops to 24.8%, and 16.7% of candidates remain. It takes "at least 100 trades" second: precision 97.5%, and now 6.5% of candidates remain, with recall at 10.0%.

Then the search runs out of road. After two checks the selection panel has no failures left among the strategies still standing, so the other nine cannot be put in any order. Apply them all together and you end at 97.4% precision on 2.1% of candidates. That is the same precision as two checks gave: 97.47% on 356 variants against 97.39% on 115, a gap smaller than one strategy in the smaller pool. The pool is 0.32 times the size. You have not built a validation process. You have built a machine for saying no.

Is a check's rank its value?

No. The second greedy step shows it. "At least 100 trades" is a middling check on its own: 81.2% precision, seventh of the eleven, and it rejects 63.5% of the strategies that would have survived. But conditional on already having a Sharpe of 0.5, it lifts precision from 94.5% to 97.5%.

The short lists show the same thing. "No single trade carries it" is tenth of eleven on its own, and it is still the check paired with the neighbours in the two-check list picked on the selection panel. A check's rank alone is not its value in company. Which is why "here are eleven checks, run the good ones" is not advice, and why the combination search matters more than the individual ranking.

Which checks overlap?

Some of these checks are near-duplicates.

PairCorrelationOf those passing the first, also pass the second
Profitable overall + survives costs0.897793.5%
Survives costs + parameter neighbours0.706778.2%
Profitable overall + parameter neighbours0.678374.7%
Profitable overall + validation slice profitable0.677086.0%

Across these 5,472 daily variants, charging 5 bps per side and asking "is it profitable" are nearly the same question: 93.5% of the strategies profitable over the development sample also stay profitable at 5 bps per side. That matches the robustness study's finding that costs at these levels are a haircut, not an executioner. Run both if you like, but do not feel more validated for having done so.

The verdict

Run one check before you look out of sample: parameter neighbours. 63.7% to 91.7%, which is 95.4% of the precision gain the selection panel's four-check list reaches. Every check that panel added was worth under a point on the final quarter.

Use Sharpe to rank, not to screen. It is the most precise single check at 94.5% and it discards 75.2% of your good ideas. Whether that trade is worth taking depends on your own pipeline and is not something this study measured: with a hundred candidates and time for one it looks cheap, with three it looks ruinous. What this study measured is the screen: ranking by Sharpe is my practice, not a result tested here.

Do not screen on beating buy-and-hold. Precision 41.2%, below the base rate. Benchmark against it, always, but as a separate question about whether the strategy is worth trading at all, not as a validation gate.

Stop adding checks when the next one buys under a point of precision. That is my stopping rule for the one-to-four-check lists picked here under the 30% recall floor, and on them it stops at one. The optional second check bought 0.7 points. The study did not test one point as a general threshold.

One check is a filter, not a process. Telling an overfit backtest from a real edge is one of the five things the Algo Trading Masterclass teaches, built on the same testing workflow these studies run on.

The honest limits

Long only, one unit, no leverage, no shorting, no stops, no position sizing, and no commissions or slippage when survival is scored on the final quarter. "Survived" means profitable in the final quarter. It does not mean the strategy beat buy-and-hold, and the robustness guide shows these checks actively select against that.

The effort scores in the underlying data are my judgement about how much work each check is, not a measurement. The 30% recall floor is a choice: a different floor produces a different short list.

The lists and the order are picked on a selection panel whose success window ends before 2018-02-05, with a 65.0% base rate against the final quarter's 63.7%, so a list's score there and its score here come from two different tests. The choice of one check over two is read off the final quarter, so it has no untouched history of its own.

Three strategy families are a sample of retail practice, not a census. And every result is a property of these eight markets over these date ranges.

What this means for you

  1. Check the neighbours first. 91.7% precision out of sample, and it passed 53.1% of the 5,472 candidates here.
  2. Add a second check only if you can spare the pipeline. No single trade worth more than a quarter of the profit takes you to 92.4% and cuts the pass rate to 41.6%.
  3. Stop there. The second check bought 0.7 points, the third 0.5 and the fourth 0.1.
  4. Rank the survivors on Sharpe rather than screening on it (ranking is my practice, the screen is what was tested), unless you can afford to lose three eventual survivors in four, as it did here.
  5. Do not screen on beating the index (41.2% precision), but do measure it, because it is the question your checklist cannot answer.
  6. Skip the duplicate. 93.5% of the strategies profitable over the development sample also survived 5 bps per side here.
  7. Then sit the real exam once. Out of sample is the grade. The checks are how you show up ready for it.

For what the out-of-sample result can and cannot tell you about the money you need to trade it, see what Monte Carlo gets wrong and the robustness guide that ties the validation steps together.

Mock exams are cheap. The real one you only get once.

Want the next study when it is finished, including the ones that overturn something I believed? That is what the newsletter is for: StatOasis.com/Overfit

Methodology and honesty footer: 5,472 strategy variants (three long-only families, 684 per market) on daily bars for SPY, QQQ, IWM, DIA, ES, NQ, NG and JY. Every check computed on the first 75% of each market's history, survival scored on the sealed final 25%. Short lists and check order picked on a separate selection panel whose success window ends before 2018-02-05. Execution rule v2 (signal at the close, fill at the next open, exits at an open). One unit, no leverage, frictionless survival scoring. Buy-and-hold and seeded, frequency-matched random controls computed on the same bars. Every figure here comes from the study's own results tables. This is research, not investment advice.

Methodology

Data source
Daily OHLC for SPY, QQQ, IWM, DIA (ETFs) and ES, NQ, NG, JY (continuous back-adjusted futures)
Date range
1993-02-02 to 2026-07-02, per-market ranges in the facts sheet
Entry / exit rules
Execution rule v2: signals read at the close, entry at the next open, exit at an open; long only, one unit, no pyramiding
Sizing
One unit, fully invested when in position, no leverage
Overlap mode
Overlapping signals extend the hold rather than adding a second position
Look-ahead
Signals are read at the close of bar t and the position is taken at the open of bar t+1. Exits are taken at an open. This is structural rather than declared: engine/vector_backtest.py builds positions as pos[u] = state[u-1] and returns as open-to-open, so a same-bar fill is not expressible in the code. The short lists and the check order are chosen on a separate selection panel (every check recomputed on each market's first half of history, success measured only up to 2018-02-05, the first date any market's test window begins) and then scored on the final 25%.
Minimum sample
The engine's default floor of 50 trades. Variants below it are flagged, never dropped, so a thin cell is visible rather than quietly removed.
Buy-and-hold benchmark
Fully-invested buy and hold on each of the eight markets over the same bars: SPY 8.82% CAGR at 0.551 Sharpe, QQQ 10.20% at 0.489, IWM 7.03% at 0.403, DIA 6.92% at 0.460, ES 6.71% at 0.537, NQ 9.11% at 0.710, and two markets that lost money outright, NG -9.68% at -0.170 and JY -3.15% at -0.330.
Random control
Frequency-matched random positions, matched on time in market (22-30% exposure, the median of the study's own variants) and averaged over 10 seeds from base seed 20260803. On SPY: 2.82% CAGR (sd 1.36pp) at Sharpe 0.339 (sd 0.147, 95th percentile 0.558), so a Sharpe under about 0.56 on SPY is inside what random entries reach roughly one time in twenty. Computed by the StatOasis control harness; the full eight-market table is in _facts.md.
Parameter scopeParameters swept

The study searched the parameter space and reports the spread, not one tuned setting.

The full family grids are swept on all eight markets and every check is scored across that whole space, not on a chosen variant. The checklist's value is measured by how the space as a whole behaves.

Run to v1 of the StatOasis research standard - the rules every study here has to meet before it is published. The version is the study's own: a standard that gained a rule later never reaches back and claims this one met it.

Historical backtest results are not a guarantee of future returns. This content is for educational purposes only and is not investment advice. Hypothetical performance disclosure (CFTC Rule 4.41).

Frequently asked questions

What is out-of-sample testing?⌄

Out-of-sample testing judges a strategy on price history it was never built, tuned or checked on. Here every strategy was built and checked on the first 75% of each market's history, and the final 25% stayed sealed until the end. Of 5,472 strategies, 63.7% were still profitable in that sealed quarter.

What is in-sample vs out of sample?⌄

In-sample is the data a strategy was fitted or checked on. Out-of-sample is data it never touched. Here, in-sample was the first 75% of each market's history and out-of-sample the final 25%. A strategy that passed the parameter-neighbour check in-sample was still profitable out of sample 91.7% of the time, against a 63.7% base rate.

What does OOS mean in trading?⌄

OOS is short for out-of-sample: results on price history the strategy never saw while it was being built. An OOS result only stays honest while it has not been used to change the strategy. Once it has, that history is in-sample too.

How can I tell if my backtest is overfit before testing it out of sample?⌄

Start with one check: are the parameter settings immediately either side of yours also profitable? Strategies passing it were still profitable in an untouched final quarter 91.7% of the time, against a 63.7% base rate, and it passes 53.1% of candidates. The second check the selection panel picked, no single trade worth more than a quarter of the profit, adds 0.7 percentage points.

How many validation checks do I need?⌄

One does most of the work. The lists picked on the selection panel reach 91.7% with one check, 92.4% with two, 93.0% with three and 93.1% with four, while the pass rate falls from 53.1% to 39.0%. The one-check list delivers 95.4% of the precision gain that four-check list reaches.

Does a high Sharpe ratio mean my backtest is not overfit?⌄

It is the single most precise check: 94.5% of strategies with a development Sharpe of at least 0.5 survived out of sample. But it is brutal. It passes only 16.7% of candidates and rejects 75.2% of the strategies that would have worked. Use it to rank, not to screen, with one limit: this study measured the screen, not the ranking.

Should a strategy have to beat buy-and-hold to pass validation?⌄

Not as a standalone check. On its own it has a precision of 41.2% against a 63.7% base rate: strategies that beat buy-and-hold in development were less likely to still be profitable later. It is in none of the short lists picked on the selection panel. Measure it as a separate question about whether a strategy is worth trading at all.

Do more validation checks make a strategy safer?⌄

Not in precision past two when you chase precision alone, and every check shrinks the pool. Adding checks purely to raise precision reaches 97.5% after two (a development Sharpe of at least 0.5, then at least 100 trades) with 6.5% of candidates left. Applying all 11 ends at 97.4% on 2.1% of candidates: the same precision, to within one strategy, on 0.32 times the pool.

Which validation checks overlap?⌄

Profitability over the development sample and surviving costs are near-duplicates, correlated at 0.898: 93.5% of the strategies passing the first also pass the second. Running both is close to running one twice.

What does a validation check cost me?⌄

Good strategies. A Sharpe of at least 0.5 rejects 75.2% of the strategies that would have survived, and requiring at least 100 trades rejects 63.5%. Of the three most precise checks, the parameter-neighbour check is the cheapest on this measure, rejecting only 23.5%.

Read the Backtesting & Validation hub
← Back to Research

Table of contents

  • TL;DR: the answer box
  • What is out-of-sample testing?
  • How I tested
  • How is a check scored?
  • Which in-sample check best predicts out-of-sample survival?
  • What does each check cost you?
  • How many checks do you need?
  • Did the longer checklists hold up out of sample?
  • Why do longer checklists stop helping?
  • Is a check's rank its value?
  • Which checks overlap?
  • The verdict
  • The honest limits
  • What this means for you
  • Methodology
  • FAQs

Overfit - the newsletter

Skip the hype. Trust the data.One practical takeaway per issue.

Running a quick security check before this can be sent.

Delivered +2 times a month - when the work is ready, not on a calendar.I'll never sell your address.Unsubscribe in one click, any time.

Related Articles

Back to all research
#122

Robustness Testing: Why Most Traders Fail, and What 36,252 Backtests Say Actually Works

Mar 28, 2025 · 18 min read

Robustness testing is the step between a good backtest and deciding whether to trade it. I measured which checks actually predict what a strategy does in held-back history, then retested the whole thing on 53 markets — where the stack still works, several individual checks turn out to have been overstated threefold, and two of them point the wrong way on some asset classes.

Read more→
#103

Monte Carlo for Traders: I Checked Whether the Simulation Was Right. It Wasn't.

Oct 4, 2024 · 7 min read

Monte Carlo resampling is how traders answer 'how bad can this really get?' I ran it on 3,418 strategies and then did the part the simulation cannot do for you: checked the answer against what actually happened next. The simulated 1-in-20 worst case was breached 23.3% of the time.

Read more→
#140

Can AI Build a Profitable Trading Strategy? I Backtested 5 LLM-Generated Rules on SPY to Find Out

Aug 22, 2026 · 11 min read

Two experiments on SPY: a 2,304-variant optimizer sweep standing in for what AI does when it hunts for "the best strategy," and 5 AI-generated rules implemented verbatim. The optimizer's top-25 risk-adjusted score collapsed 85% out-of-sample, and 0 of 2,068 eligible strategies beat buy-and-hold.

Read more→

Overfit - the newsletter

Skip the hype. Trust the data.

One practical, evidence-driven takeaway per issue - strategy testing, portfolio construction, market structure, trading psychology, tactical asset allocation.

Running a quick security check before this can be sent.

Delivered +2 times a month - when the work is ready, not on a calendar.I'll never sell your address.Unsubscribe in one click, any time.

StatOasis is calm, evidence-based algorithmic-trading education, founded by Ali Casey. Ali builds systematic trading strategies and teaches the workflow behind them: research, build, test, combine, deploy. He writes the Overfit newsletter, published since 2024, and runs the Algo Trading Masterclass.

Socials

  • X ↗
  • YouTube ↗
  • Instagram ↗
  • LinkedIn ↗
  • GitHub ↗
  • Muck Rack ↗
  • LinkedIn SO ↗
  • GitHub SO ↗

Products

  • Overfit - the newsletter
  • Algo Trading Masterclass
  • StatOasis Community
  • 36 Ways to Buy the Dip
  • AlgoChef ↗

Reading & tools

  • Research
  • Methodology
  • Survive the Decade
  • Wall of Love

StatOasis

  • About Ali Casey
  • Contact
© 2026 StatOasis. Calm, evidence-based.
PrivacyTermsHypothetical resultsCalifornia