Removed timed loss cooldowns from CortanaROI MK2

Compiled Truth. On 2026-04-30 we removed all timed post-loss cooldowns from the trading engine. The two systems (a 20-min same-direction gate in scoring.py and a pair of timed gates in PositionRiskGate.can_enter) had been quietly costing valid re-entries and were gameable by an opposite- direction loss erasing a same-direction cooldown (Task #25). The user accepts faster re-entry risk in exchange for not missing setups during chop-recovery windows. The 3-consecutive-same-bias daily ban survives because it is a hard circuit breaker, not a timed cooldown.

State

  • Removed: scoring.py 20-min post-loss same-direction gate (lines 1136-1160 of pre-change file). Writer in app.py (lines 1831-1842) was deleted at the same time.
  • Removed: PositionRiskGate same_bias_cooldown_sec (1200s default) and consecutive_loss_cooldown_sec (1800s default).
  • Kept: daily max_daily_loss circuit breaker, VIX circuit breaker, daily 3-loss same-bias ban (_state.blocked_bias), max_trades_per_day, max_trades_macro_day.
  • Commit: fbffc3e (feat(risk): remove timed loss cooldowns per user directive).

Why this matters

The 20-min same-direction cooldown was added 2026-04-10 in response to trades #24/25/26 (a -$39K bearish PUT 3-peat cluster). The intent was preventing revenge-style re-entries. In practice:

  • Bug: only the most-recent loss direction was tracked; an opposite- direction loss would erase the cooldown for the original direction (Task #25). So the gate was already unreliable.
  • False negatives: 20 min is a long time inside a 0DTE session. Real chop-recovery setups were getting thrown away because of an earlier loss in the same direction.
  • Mandate conflict: project mandates “early and right” - passing on valid re-entries is a direct violation.

Open Threads

  • The Task #25 underlying bug (per-direction cooldown tracking) is now moot - close the task as superseded.
  • We did NOT touch consecutive_losses tracking or the day-ban (_state.blocked_bias). Three same-direction losses still ends that bias for the day.
  • If the system shows revenge-trading patterns post-removal (e.g., 3 losses in 3 minutes), revisit. The first thing to add back would be a per-direction cooldown that tracks both directions independently (5 min, not 20).

See Also

  • projects/cortana.md - root project state
  • (memory) project_losses_april16_chop.md - original cluster that motivated cooldowns
  • (memory) feedback_no_kill_with_open_positions.md - restart safety

2026-04-30 | trader directive | Removed both cooldown systems mid-market hours after stuck-OPEN trade #87 + active BEAR cooldown left engine effectively offline at 08:50 CT. Force-cancelled #87 manually. Code change pushed; engine restart required for in-memory cooldown state to clear.