Time-of-day + day-of-week corpus analysis

Context. 2026-05-14 mid-session, after the SL-tightening and peak-stop simulations both proved net-negative, the remaining downside-control hypothesis was time-weighted entry preference. Tested against the full corpus (22 trading days, 316 trades, 2026-04-07 → 2026-05-14).

Strongest finding yet: time-of-day is a clean, corpus-wide signal. Day-of-week is noisy and outlier-driven.

Time-of-day (CT) - 316 trades

WindownWRTP%sum $avg per trade
8:30-9:00 (open)3664%28%+$12,999+$361
9:00-10:00 (early)8364%18%+$39,969+$482
10:00-11:00 (midmorn)5358%19%+$24,636+$465
11:00-12:00 (late morn)4055%25%-$11,047-$276
12:00-13:00 (lunch)6758%21%-$43,410-$648
13:00-14:00 (early PM)3759%27%-$12,218-$330

Win rate stays flat 55-64% across all buckets. Expected value per trade flips sign at 11:00 CT. The engine produces the same quality of signal across the day, but the trades that fire in the morning realize positive EV and the trades that fire midday realize negative EV. The signal isn’t worse midday - the realized outcome is.

This is consistent with the THESIS_INVALID-lag failure mode (task #100): midday market is choppier, the lagging exit logic bleeds harder, and the wide-spread option vol in chop tilts payoffs against winners.

Day-of-week - be careful, dominated by outliers

DaynWRTP%sum $
Mon7666%13%+$12,684
Tue8167%30%+$67,004
Wed6850%16%-$18,869
Thu7258%28%-$42,682
Fri1953%21%-$7,207

Tuesday’s apparent +74,373). Strip that day: Tuesday becomes **-19.6k. With only ~4-5 of each weekday in 22 days, single outliers swamp signal.

Do not gate on day-of-week yet. Re-validate at 60+ days when each weekday has 12+ samples.

Heatmap: time × day (cumulative $)

                 Mon       Tue       Wed       Thu       Fri    TOTAL
8:30-9:00     +8,645    -3,032    -5,244   +12,630        0   +12,999
9:00-10:00    +6,595   +51,184    -8,530   -17,631   +8,350   +39,969
10:00-11:00     -226   +26,060      +283    -5,063   +3,582   +24,636
11:00-12:00   -5,567    -8,551    +6,644    -3,573        0   -11,047
12:00-13:00   +1,281    +2,319    -9,103   -17,868  -20,040   -43,410
13:00-14:00   +1,955      -976    -2,920   -11,177     +900   -12,218

The 9:00-10:00 Tuesday cell (+$51k) is the 05-05 outlier. Outside that single cell, morning rows (9:00-11:00) are positive on 4 of 5 weekdays. Midday row (12:00-13:00) is negative on 4 of 5 weekdays. The time-of-day pattern is robust even after stripping outliers.

Hypothetical impact on corpus

  • Actual corpus P&L: +$10,929
  • Skip all entries after 11:00 CT: +$77,605 (7× better)
  • Skip only 11:00-13:00 chop window: +$65,386 (6× better)

Caveats and interpretation

The pattern may be the engine’s defect, not market truth. This engine catches morning momentum well; chop and reversal regimes (more common midday) expose the THESIS_INVALID lag and TP/SL geometry issues. A well-designed MK3 with regime detection might trade midday productively. The time-of-day rule corrects for this engine’s weakness - fair filter for MK2 paper, but MK3 should aim for “trade well anytime.”

Sample-size sanity:

  • Each time-of-day bucket has 36-83 trades. Buckets are statistically meaningful.
  • Each weekday has 19-81 trades. Tuesday and Friday have low n. Tuesday is single-day-dominated.
  • 22 days is not enough for confident day-of-week claims.

Decision

For MK2 paper-trading:

  • Keep current behavior (trade all day). The point is data collection - including the bad midday trades that train the regime detector.

For MK3 design:

  • Bake the time-of-day pattern in as a feature, not as a hard gate. Let the model use “minutes from open” alongside other features. Already partially captured via session_edge.minutes_to_market_close and time_of_day_label in scoring_events.
  • Build the regime detector explicitly. Trending vs choppy is the underlying signal here; “time of day” is just a proxy. MK3 should learn the regime from features (VWAP distance, intraday range, IV term structure, flow signatures) and adapt strategy.

For potential real-cash deployment (long horizon, post-MK3):

  • Skip 11:00-13:00 CT entries is the simplest empirically-grounded rule. Would have improved corpus 6× with zero engine changes.
  • Do not gate on day-of-week. Insufficient data, outlier-contaminated.