SolDailyTurnOfMonthLong
Hypotheses
SOL Turn-of-the-Month Long on Daily Bars
Hypotheses
A long-only single-instrument calendar-effect strategy on SOLUSDT perpetual futures using daily (1D) bars. Exploits the well-documented 'turn-of-the-month' (TOM) anomaly where institutional and retail capital flows concentrate around month boundaries. In TradFi (Ariel 1987, Lakonishok-Smidt 1988), the last 4 trading days plus first 3 of each month capture a disproportionate share of monthly equity returns due to pension contributions, payroll allocations, and 401k flow timing. Crypto has a parallel mechanism: monthly DCA programs (Coinbase recurring buys, Binance Auto-Invest, Strike), Grayscale-style fund rebalances, monthly altcoin index rebalances (CoinShares, Bitwise products), and retail 'first of month' wallet deposits all create predictable bid pressure around the calendar boundary. SOL is selected because (a) it has very high retail penetration via Phantom wallet and the Solana memecoin ecosystem, (b) it's a top constituent in most crypto indices that rebalance at month-end, (c) high beta means the TOM effect amplifies more than on BTC, and (d) SOL is NOT in the failure set or current pipeline. Strategy is fully deterministic — entry/exit triggered purely by calendar day position, no indicators, no thresholds, no regime filters. This minimizes parameters to fight overfitting and keeps verification fast.
Hypotheses
Iteration-2 minimal fix for the Layer-2 TypeError (_dt() takes 1 positional argument but 2 were given). Root cause is identical to the open-interest case: the datetime helper was a @staticmethod, but the Layer-2 _StrategyProxy rebinds class callables onto a stand-in instance, which discards the staticmethod descriptor and passes the proxy instance as an injected first positional argument, so the 1-param helper is called with 2 args and raises. The fix moves _dt out of the class to a module-level function (_tom_dt); module functions are never bound to an instance, so no self can be injected, and _is_tom now calls _tom_dt directly. Nothing else changed: imports stay clean (Layer 1 green), and the calendar/TOM-window/signal/entry/exit/sizing logic the harness exercised is byte-identical, so no earlier-layer regression. Venue and leverage (BINANCE USD-M futures, 1.0) are unchanged.
Hypotheses
The turn-of-the-month premise on SOL has no persistent edge — it is long-SOL beta that captured the 2021 mania (+1055%) and 2023 (+141%) and has lost money for three consecutive recent years (2024 -46.5%, 2025 -34.1%, 2026 -19.7%), with the rolling Sharpe falling from ~+8 to ~-6. The +653% headline is a front-loaded 2021 artifact (two +60% single days, skew 4.47, kurtosis 35) carrying a 74.9% max drawdown and ~110% annualized vol. The strategy is implemented correctly, so this is a premise failure, not a code issue — and as a pure calendar rule with only 2 tunable day-window params there is no signal to optimize; optimization would refit the windows to the 2021/2023 bulls and then fail the recent (2026) holdout. Not iterate: nothing for the developer to fix in code. Not worth 2 hours of optimization. FAILURE PATTERN: deterministic calendar-effect (turn-of-month) long on a high-beta crypto major produces a return series entirely concentrated in the 2021 bull with a 75% drawdown and three straight negative recent years — the seasonal anomaly is indistinguishable from long-beta exposure that has decayed/reversed, and a pure-calendar rule offers no optimizable signal to rescue it.
Implementation
Long-only turn-of-the-month calendar strategy on SOLUSDT.BINANCE USD-M futures, 1-DAY bars, OHLCV-only. Enters LONG during the turn-of-month window (last 4 calendar days of a month plus first 3 of the next) and exits when the bar leaves that window, with a max-holding safety net and a 12% stop floor. Pure deterministic calendar trigger driven by bar timestamps; the continuous signal is a price-ROC + in-window proxy for frozen-signal detection. leverage 1.0.
Verification Results
Verification failed (Layer 2 — synthetic scenarios):
Parameters used: ['min_notional', 'position_pct', 'stop_loss_pct', 'exit_days_after', 'max_holding_days', 'entry_days_before']
Check that __init__ sets all attributes from self.parameters.get().
- steady_uptrend: TypeError: SolDailyTurnOfMonthLong._dt() takes 1 positional argument but 2 were given (bar timestamp: 1735689660000)
- steady_downtrend: TypeError: SolDailyTurnOfMonthLong._dt() takes 1 positional argument but 2 were given (bar timestamp: 1735689660000)
- flat_ranging: TypeError: SolDailyTurnOfMonthLong._dt() takes 1 positional argument but 2 were given (bar timestamp: 1735689660000)
- volatility_spike: TypeError: SolDailyTurnOfMonthLong._dt() takes 1 positional argument but 2 were given (bar timestamp: 1735689660000)
- zero_volume: TypeError: SolDailyTurnOfMonthLong._dt() takes 1 positional argument but 2 were given (bar timestamp: 1735689660000)
- price_gap: TypeError: SolDailyTurnOfMonthLong._dt() takes 1 positional argument but 2 were given (bar timestamp: 1735689660000)
Backtest Review
Implemented correctly and deterministically: 74 turn-of-month entries, 0 dropped, all long — trades exactly as the calendar hypothesis specifies (no code bug)
Backtest Review
Edge is dead/reversed: annual returns +1055% (2021) and +141% (2023) front-load the entire +653%, then NEGATIVE three straight years — 2024 -46.5%, 2025 -34.1%, 2026 -19.7%; rolling Sharpe collapses from ~+8 to ~-6
Backtest Review
Headline is a 2021 SOL-mania artifact, not a TOM edge: two +60% single days (Jan/Feb 2021), return_skew 4.47, kurtosis 35, profit_factor only 1.15 (thin), win_rate 0.50
Backtest Review
Unacceptable risk: max_drawdown 74.9% (CI up to 88.8%), annualized_volatility 110%, downside_deviation 51%, avg_position_pct ~101% (full-equity), max_drawdown_duration 699 days
Backtest Review
No optimization surface: a pure day-of-month calendar rule with only 2 tunable window params — the optimizer cannot manufacture an edge from a decayed seasonal effect and would refit to the 2021/2023 bulls
Backtest Review
Holdout lands in the negative recent regime (2026 -19.7%), so post-optimization validation would fail with near-certainty; sample is also thin (74 trades / ~13/yr)
Outcome Summary
This strategy exploited the turn-of-the-month anomaly by simply buying SOL around month boundaries, a clean deterministic rule grounded in DCA/index-rebalance flow. It was implemented exactly as specified and showed a spectacular +653% headline — but that came almost entirely from 2021's SOL mania (with two +60% single days), after which it lost money in 2024, 2025, and 2026 as rolling Sharpe fell from +8 to -6, all atop a 74.9% drawdown and ~110% volatility. The analyst abandoned it at the backtest-review gate on its second iteration as a decayed seasonal indistinguishable from long-beta, with no optimizable surface and a holdout sure to land in the negative recent regime, so it never advanced to optimization or risk review.
Outcome Summary
A deterministic calendar anomaly on a high-beta crypto major can masquerade as edge while really being long-beta exposure — a +653% headline concentrated in 2021 with a 75% drawdown and three straight negative recent years is a decayed/reversed seasonal, and a pure-calendar rule has no signal to optimize once the effect dies.
Outcome Summary
The backtest-review analyst issued an 'abandon' verdict: the strategy was implemented correctly, so this is a premise failure — the turn-of-month effect on a high-beta major is indistinguishable from long-SOL beta that captured the 2021 mania and has since decayed/reversed, the headline is a 2021 artifact carrying a 75% drawdown, and a pure 2-parameter calendar rule offers no optimizable signal (optimization would refit the windows to the 2021/2023 bulls and fail the negative recent holdout).
Outcome Summary
A long-only, deterministic turn-of-the-month calendar strategy on SOLUSDT daily Binance futures (1.0x leverage, 0.95 position) — buying SOL during the last 4 calendar days of each month plus the first 3 of the next, exiting when out of that window (with a 12% stop and 12-day safety cap) — to capture monthly DCA/index-rebalance bid pressure, with no indicators or filters.
Outcome Summary
Across 74 trades it posted a +653.8% headline with Sharpe 0.95, profit factor 1.15 and a 50% win rate, but the return was front-loaded into 2021 (+1055%) and 2023 (+141%) and then lost money three straight years (2024 -46.5%, 2025 -34.1%, 2026 -19.7%), with rolling Sharpe collapsing from ~+8 to ~-6; risk was extreme — 74.9% max drawdown (CI to 88.8%), ~110% annualized vol, full-equity sizing, skew 4.47, kurtosis 35.
Backtest and paper results are hypothetical. Trading involves risk of loss.