Strategies
US Equity Turn-of-Month Seasonality — Long/Short Index Timing on QQQ: Capture the Documented Turn-of-Month Return Cluster (Long), Short the Post-ToM Mid-Month Window ONLY in a Bearish Regime, Calendar-Driven with Near-Zero Fitted Parameters (QQQ.USEQ, Daily Bars, 2-Parameter)
Outcome: Abandoned
QqqTurnOfMonthSeasonalityLS
avg_trade_return_pct 0.203% clears the USEQ cost floor (not a fee failure)
Hypothesis
Structurally low-Sharpe USEQ calendar anomaly with no robust edge to optimize. Base Sharpe is 0.237 with a bootstrap CI [-0.11, 0.60] that straddles zero — statistically indistinguishable from no-skill before any optimization selection bias, and deflation/holdout only lower it. profit_factor 1.195 is below the 1.2 meaningful-edge line; on near-frictionless USEQ that means the turn-of-month effect is barely present net of spread, not fee-suppressed (L75). Over 27 years it returns only ~116% (~2.9%/yr) with a NEGATIVE information ratio (-0.296), so it fails to beat buy-and-hold, and the conditional short leg is a drag (short_win_rate 0.457) that still absorbs large directional losses (2002 -33.5%, 2001 -14.5%) — the drawdown-immunity premise does not hold (max DD 43.7%, CI to 87.8%). With only 2 free parameters there is no path to lift a 0.24 Sharpe to a promotable, robust level. This is the L75 USEQ turn-of-month zero-survivor pattern; abandon at BACKTEST_REVIEW rather than iterate.
Implementation
Calendar-seasonality index timing on QQQ.USEQ daily bars, long and short. LONG leg: buy at the close of the last trading session of each month (or on the first two sessions of the new month if that close was missed) and exit at the close of trading day 3 of the new month, capturing the documented turn-of-month return cluster. SHORT leg (optional, regime-conditional): short the post-ToM mid-month lull, trading days 7-15 of the month, only while QQQ sits meaningfully below its 200-session regime SMA; the short covers when the window ends or the bearish regime disappears. calculate_signal returns a continuous calendar-proximity score every bar - an exponential lobe peaking inside the ToM window minus a mid-month lobe scaled by how bearish the regime is - and should_enter thresholds that score. Sizing is capital-relative whole shares (95% of equity long, 50% short, leverage 1.0), with a 5% catastrophe stop as the only price-based rule. Roughly 12 long trades per year plus the conditional shorts.
Verification Results
CLEAN RESTART 2026-09-04 — this run's verdict history and learning records were removed and it was restarted from verification. Its previous abandonment came from the pipeline, not from the market: the Layer-2 harness mis-bound @staticmethod helpers (fixed), QA issued terminal performance verdicts on an unoptimized smoke test (removed — QA now judges correctness only), and sandbox timeouts came from backtest-slot starvation (fixed). The hypothesis and the strategy code are unchanged. Verify the code on its merits; performance is decided later by the full backtest and the optimizer.
Optimize short_enabled True vs False as a first-class fork; ship long-only ToM if the short leg doesn't improve OOS Sharpe net of its tail.
The regime-conditional short leg (19 sandbox trades) is the main tail-risk source and the part least supported by the published anomaly (ToM is a long-side effect; the bearish mid-month short is a developer overlay). Not a defect, but it widens the drawdown CI (max_dd_ci_high 47%) and its edge is unproven at this sample. Not blocking.
Backtest Review
- Sharpe
- 0.24
- Total return
- 116.03%
- Max drawdown
- 43.70%
- Trades
- 460
- Win rate
- 55.7%
- Profit factor
- 1.20
avg_trade_return_pct 0.203% clears the USEQ cost floor (not a fee failure)
460 trades over 27 years — adequate sample, calendar-driven so low overfitting surface
low market beta (0.087) — the return is not just index exposure
Sharpe 0.237 with bootstrap CI [-0.11, 0.60] straddles zero — no statistically robust risk-adjusted edge before any optimization
profit_factor 1.195 below the 1.2 meaningful-edge threshold (L75: near-frictionless USEQ + PF<1.2 means the anomaly is absent, not fee-suppressed)
information_ratio -0.296: underperforms buy-and-hold on a risk-adjusted active basis; total_return only ~116% over 27 years (~2.9%/yr)
conditional short leg is a net drag (short_win_rate 0.457) and the strategy still takes large directional hits (2002 -33.5%, 2001 -14.5%), contradicting the drawdown-immunity claim
max_drawdown 43.7% (CI to 87.8%) against a sub-3%/yr return
matches the L75 USEQ turn-of-month zero-survivor pattern
Iteration History
Backtest and paper results are hypothetical. Trading involves risk of loss.