turn_of_month standalone gate SHIP-OFF does not clear program bar, see below ↓
Survived the pre-registered gate. That is all it means. It lands off by default for a human to graduate, it is not registered as a book, and it is not a claimed return.
The turn-of-month equity seasonal, measured over the longest free daily total-return history that exists: the CRSP value-weighted US market from 1926-07-01, with its matching daily risk-free rate. Candidate holds the whole market on the four canonical turn-of-month sessions (the last trading day of each month through the third trading day of the next, the McConnell-Xu 2008 window adopted verbatim) and holds the risk-free asset on every other session, charged a pre-registered round-trip transaction cost at each transition. Baseline is buy-and-hold of the identical market series. Tests whether concentrating equity exposure into roughly a fifth of the sessions beats simply owning the market for all of them. Run standalone rather than as a risk-parity sleeve because the hundred-year history is the entire point and the fund's own universe is floored at 2011.
- Does not clear its own research program's selection bar. The gate above deflates the selection luck inside this one pre-registered run, which is correctly zero for a single candidate. It is not a charge against the fund's whole research program, of which this ship is the maximum of 43 distinct trials, the fund's counted trial number over the pinned ledger state this charge was computed against, at the time of that run (`data/backtest/trial-ledger.jsonl`). Charged against that program (`data/backtest/program-selection/charge.md`), the published selection bar at that trial count is +0.714 Sharpe against this candidate's observed uplift of +0.455 -- the bar sits ABOVE the uplift. This candidate clears that bar only under the more optimistic of the two pre-registered dispersion assumptions and fails it under the other. The pre-registered label is UNRESOLVED, and UNRESOLVED is explicitly NOT a pass: THIS SHIP MAY NOT BE CITED AS A CLEAN SURVIVING EDGE. The frozen pre-registered verdict above is unchanged and was awarded correctly by the gate as the gate stood; what this charge changes is what the ship may be cited as.
- The edge is concentrated before publication. Before 1987-01-01 the candidate ran Sharpe 1.302 against the baseline's 0.602, an advantage of +0.700. From 1987-01-01 onward it runs 0.790 against 0.681, +0.109, a decay of 84% in the advantage. The effect was published in the academic literature at that split date. Scored on its own the modern era has 9947 observations and therefore a detection floor of +0.274, which its +0.109 advantage does NOT clear, while the pre-publication era clears its own floor of +0.206 comfortably. The split is a pre-registered diagnostic, not a selection: neither half was scored through the gate and neither changed the verdict.
- The result is cost-model dependent. At the pre-registered 5 bps a side the candidate scores Sharpe 1.089 against the baseline's 0.634. At 20 bps it scores 0.597, BELOW the baseline, so the strategy dies somewhere between 5 and 20 bps a side. It turns the whole portfolio over across 1201 events and 2401 transitions. The pre-registered rate is a modern estimate applied to decades when fixed commissions ran and no index fund existed, so the true cost over the decades carrying the edge is plausibly at or beyond the rate that kills it.
The pre-registered gate
10 of 10 gates passed, scored over 1926-07-01 to 2026-06-30 (26274 sessions) against market_buy_and_hold. Cumulative trial count across every hypothesis this shop has ever tried, at the time of this run: 40.
| Deflated incremental edge | +0.455 PASS (threshold +0.000) |
| Walk-forward out-of-sample uplift | +0.269 PASS (threshold +0.000) |
| Probability of backtest overfitting (PBO) | 0.00 PASS (threshold 0.50) |
| Incremental DSR, the specificity gate (0.95 floor) | 1.00 PASS (threshold 0.95) |
| Worst month, against the baseline's | -0.184 PASS (threshold +0.000) |
| Expected shortfall (95% CVaR), against the baseline's | -0.016 PASS (threshold +0.000) |
| Drawdown through the 1929 great crash, against the baseline's | -0.296 PASS (threshold +0.000) |
| Drawdown through the 1987 black monday, against the baseline's | -0.310 PASS (threshold +0.000) |
| Drawdown through the 2008 global financial crisis, against the baseline's | -0.356 PASS (threshold +0.000) |
| Drawdown through the 2020 q1 covid crash, against the baseline's | -0.314 PASS (threshold +0.000) |
The numbers the gate scored
| Sharpe, candidate vs baseline | +1.089 vs +0.634 (uplift +0.455, standard error +0.102) |
| Annual return, candidate vs baseline | 8.07% vs 10.27% |
| Annualized volatility, candidate vs baseline | 7.06% vs 17.10% |
| Maximum drawdown, candidate vs baseline | 23.78% vs 84.07% |
| Worst month, candidate vs baseline | -10.67% vs -29.11% |
| Walk-forward out-of-sample Sharpe, candidate vs baseline | +1.022 vs +0.753 over 6 windows |
| PBO combinations evaluated | 924 |
Detection floor: what this sample could actually certify
The premise of a long-history test is that length buys resolution. That is checked rather than asserted, by inverting the exact statistic the gate decides on at this sample's own observation count and the candidate's own skew and kurtosis.
| Observations | 26273 |
| Smallest incremental Sharpe this sample could certify | +0.165 |
| Smallest certifiable at the fund's usual window (3000 observations) | +0.497 |
| Observed deflated uplift | +0.455 |
The observed edge is on the right side of that floor. That floor scales with the square root of the sample, so an edge smaller than it stays uncertifiable here by arithmetic rather than by effort: closing the gap would take a sample orders of magnitude longer than the one that exists. The previous longest run on this site, vrp_put_write, reported +0.311 at 7542 observations. This sample is the longest free daily total-return history that exists for any asset, so +0.165 is also the best floor free data can ever give this shop on a single return stream.
Check the source
Every number above is read straight from these committed files, nothing recomputed for this page:
config/hypotheses/standalone/turn-of-month.yaml # the pre-registration, written before this run existed data/backtest/validation/turn-of-month.json # the verdict, machine readable data/backtest/validation/turn-of-month.md # the same verdict, written out in full