Trading System Audit.
A step-back read of Live V4.1, the Hunt Mode v2 plan, and what the database actually says is happening versus what the docs claim.
The next 48 hours matter more than the next 60 days.
Directionally correct on infrastructure and research. Overindexed on expansion before live validation. Two of the three strategies reported live on Apr 17 have produced zero paper trades. The one strategy that is firing is running at 30.8% win rate against a backtest that said 96%. The plan reorders cleanly once that's in view.
What Mini 3 actually shows, right now.
Pulled from live Postgres / Redis / launchctl on jrvis-trade (100.88.254.122), 2026-04-19 13:50 UTC (Sunday, market closed). These numbers supersede anything in the source docs where they conflict.
ffvg_composite. Zero IFVG. Zero VWAP Fade.Paper trade ledger, by strategy and direction
| Strategy | Symbol | Dir | Trades | W / L | Avg PnL | Total PnL |
|---|---|---|---|---|---|---|
| fvg_killzone | MGC | bearish | 5 | 3 / 2 | $7.08 | +$35.42 |
| fvg_killzone | MGC | bullish | 4 | 1 / 3 | −$2.93 | −$11.70 |
| fvg_killzone | MNQ | bearish | 1 | 0 / 1 | −$1.00 | −$1.00 |
| fvg_killzone | MNQ | bullish | 3 | 0 / 3 | −$10.00 | −$30.00 |
| ifvg_reversal | — | — | 0 | — | — | — |
| vwap_fade | — | — | 0 | — | — | — |
MNQ longs-only filter — the alleged edge — is 0 / 4 live
The v3.4 backtest that justified "MNQ longs only, 10am–4pm ET" as the highest-edge cell is losing money in paper. Four trades is thin evidence, but the sign is the opposite of the claim. Either the backtest was overfit (Apr 14 audit already flagged 44.7% walk-forward degradation) or the recent regime doesn't fit. Both are worth acting on.
What's hunting Monday morning.
Both channels run inside a single signal-processor process. They are execution paths, not separate systems. Both are paper. Both use the same 7-layer safety stack.
Strategies
- FVG Killzone — sweep → first FVG → pointer, all sessions
- IFVG Reversal — FFVG inverted + untapped, all sessions
- VWAP Fade — band touch, NY AM + London only
Direction filter
MNQ longs-only for ICT strategies; both directions for VWAP Fade. MGC both directions everywhere.
Reality check
Two of three silent Only FVG Killzone has fired since the stack was wired. See Finding 02.
Strategies
- FVG Killzone — high-score only
- IFVG Reversal — high-score only
- VWAP Fade — does not route here
Flow
Telegram alert to @Jrvsalertbot — user replies /take — 30-min pending signal TTL — paper trade opens with strategy="ict_manual".
Reality check
Never exercised Zero ict_manual rows in paper_trades. Either no setup has cleared 70 this week or the /take path has not been manually tested end-to-end.
Shared risk stack (applies to both)
| Layer | Scope | Setting |
|---|---|---|
| Min stop distance | per trade | 3 pt MNQ · 1.5 pt MGC |
| Zone dedup | per FVG / IFVG | 4 hours |
| Global cooldown | per symbol | 30 min |
| Session limits | per session | NY AM 3 · London 2 · Asia 1 · NY PM 0 |
| Daily cap | global | 5 trades |
| Daily drawdown | global hard stop | −$300 |
| Event filter | global | ±30 min FOMC / NFP / CPI EMPTY TABLE |
Where the docs and the database disagree.
The Apr 17 session report is the most recent source of truth in the repo. These are the lines where it drifts from what the database shows on Apr 19.
| Claim (Apr 17 session report) | Reality (Apr 19 DB) | Severity |
|---|---|---|
| "VWAP Fade live, first trade #146 MGC TP hit +$6.62" | Zero vwap_fade rows in paper_trades. The #146 counter is not the table sequence. |
High |
| "IFVG Reversal live, trade #143 TP hit +$6.30" | Zero ifvg_reversal rows. Zero IFVG pattern in signals. |
High |
| "3 active strategies" | One strategy has ever emitted on these rails. | High |
| "Economic event filter active" | Filter code runs; economic_events table empty for next 7 days. Filter is a no-op. |
High |
| "96.1% WR FVG Killzone backtest, 1% degradation" | Live 13 trades = 30.8% WR. MNQ longs 0 / 4. | High |
| "Yahoo VIX every 2hr, today 18.09" | Last row Apr 17 close = 17.48. Updater may only run weekdays. | Low |
| "141 historical paper trades" | Table has 13 rows. Pre-migration numbers weren't carried forward. | Low |
Nine places the current plan is suboptimal.
The Apr 16 strategic assessment recommended Path B — ship v3+fixes, keep v4.1 as a research layer, defer multi-asset. Apr 17 shipped Channel 2 correctly, then the Hunt Mode v2 doc committed the same weekend to building forex + crypto + news feeds. Two of three strategies on the current system aren't firing yet. Starting a second system on top of that is the "comprehensive system" anti-pattern the assessment warned against.
IFVG Reversal and VWAP Fade were loaded Apr 17 but have not produced a signal, a paper trade, or a telltale log line since. Three plausible causes, in order of likelihood: strategy runner silently failing to register them; scoring gate inherited from FFVG is too strict for these patterns; dedup / cooldown collision with FVG Killzone on the same symbol-direction within 30 minutes.
Filter code runs over an empty economic_events table for the next 7 days. Nothing is blocked. If FOMC / CPI / NFP lands on a trading day, the trade goes through. The documented "calendar through Dec 2026" exists as a file but never made it to the database.
Mini 3 cannot run git without command-line developer tools. No commits, no diffs, no rollback. Any bad live edit is unrecoverable from the Mini 3 shell. Commit history is frozen even though .git/ is initialised.
xcode-select --install before any further live edit. ~20 minutes including reboot.96% backtest WR vs 30.8% live WR on 13 paper trades. The sample is too small to conclude, but the direction is wrong — MNQ longs 0 / 4 is the exact inverse of the claimed backtest edge. The 44.7% walk-forward degradation flagged on v3.4 is the same class of problem.
14 signals across ~5 days. At a 30% win rate and 3 signals/day, that's noise, not edge. The Apr 16 assessment's binding constraint — signal generation rate — still binds.
The Apr 14 audit flagged this. Still unaddressed. Detector smoke tests with fixed candle fixtures are table-stakes and prevent the "rename breaks scorer silently" bug class the lazy-import audit surfaced.
signal_state:{ES,GC,NQ} keys persist despite those symbols being removed in v4.0. Cosmetic, but symptom of state management that writes without cleanup.
Five stale docs identified in the Apr 19 discovery: trading-deployment-plan.md says "Prod 1 on Mini 1" (it's on Mini 3); Strategy-Vault/04-Code-Strategies/vwap_bounce.md documents a 189-byte stub as a real strategy; the 86-node canvas in docs/ is superseded by a 43-node canvas in Canvases/Trading/; the Apr 17 session report's "141 trades" is pre-migration; the Apr 14 audit's "no git repo" is fixed on Mini 3 only. Each untruth costs future planning sessions a fact-checking tax.
What to do, in what order.
Times are wall-clock including DB churn and restart waits assuming a permissions-bypassed worktree on Mini 3, not human hours. Bottlenecks are backtests, soak time, and external account opens — not code.
P0 — Monday morning, before market open
Total wall clock ~4 hours. Ship as one bundle.
| # | Action | Bucket | Wall time |
|---|---|---|---|
| P0.1 | Install Xcode CLT on Mini 3. Restore git. Commit as v4.1-recovered | fix | 20 min |
| P0.2 | Backfill economic_events with 60 days of FOMC / CPI / NFP / PPI / GDP / Minutes | fix | 30 min |
| P0.3 | Per-strategy per-tick debug log line (strategy · ticked · gate_fail · score · emitted) | fix | 45 min |
| P0.4 | Synthetic sanity candles that SHOULD fire IFVG Reversal and VWAP Fade. Confirm they do | fix | 45 min |
| P0.5 | Purge legacy Redis signal_state:{ES,GC,NQ} | hygiene | 5 min |
| P0.6 | Add session_end + max_hold_hours=4 exits to paper_trader.py | fix | 30 min |
| P0.7 | Cold restart signal-processor + live-feeder. Verify all 3 strategies tick each cycle | fix | 15 min |
| P0.8 | Clean five stale docs flagged in discovery | hygiene | 30 min |
P1 — Mon/Tue this week
Total wall clock ~6 hours.
| # | Action | Bucket | Wall time |
|---|---|---|---|
| P1.1 | Drop VWAP Fade P2 threshold to 58 for 1 week. Force volume. Measure ≥20 trades | tune | 1 hr + monitor |
| P1.2 | RotatingFileHandler 10MB × 5 backups across all scripts | fix | 30 min |
| P1.3 | Move ~15 lazy imports to top-level. Drop dead detect_fvgs as _detect_fvgs | fix | 45 min |
| P1.4 | Add logger.exception() to 57 silent exception handlers. Let signal-emission path propagate | fix | 1.5 hr |
| P1.5 | Pytest smoke tests for the 7 detectors. One fixture each | fix | 2 hr |
| P1.6 | Core-signal-present gate on confidence scorer. Require FFVG or pointer or OB before P1/P2 | fix | 45 min |
P2 — This week, owner-only
Not Claude tasks. Flagged so they don't slip.
| # | Action | Why |
|---|---|---|
| P2.1 | Open Lucid Prop #1 eval ($100) via PickMyTrade | Without a funded prop account the stack is theoretical |
| P2.2 | Verify @Jrvsalertbot health; send a test /take end-to-end | Telegram service had exit 1 at some point |
| P2.3 | Decide fate of the MNQ longs-only filter (0 / 4 live) | Data thin but direction wrong |
P3 — Next week, gated
Only unblock if P1 + P2.1 complete.
| # | Action | Gate |
|---|---|---|
| P3.1 | Paper-validate all 3 strategies to ≥30 trades across 5+ session days | Combined PF ≥ 1.5 |
| P3.2 | 1-contract live on Lucid Prop #1, best strategy only | P3.1 passes |
| P3.3 | Trading Economics API ($49/mo) for automated event calendar | Optional if P0.2 backfill stable |
Single highest-leverage move tomorrow
Ship P0.1 → P0.4 as a single bundle before US market open (22:00 UTC Sunday). That's git working, calendar backfilled, per-strategy logging live, and forced sanity firings of IFVG + VWAP Fade confirmed in the paper_trades table. ~2 hours with a worktree and bypass. Everything else follows — because once that is true, the system actually is what the Apr 17 session report claims it is.
Deferred. Not cancelled.
Hunt Mode v2 is the right product vision. A terminal-resident co-pilot that scans 20+ instruments across futures / forex / crypto, narrates state changes in plain English, voice-alerts on high-conviction setups with entry/SL/TP, and leaves execution to the operator — that is the endgame. The argument here is purely about sequencing.
- Databento feed + candle writer pattern
- TimescaleDB + continuous aggregates
- 60s tick loop + launchctl service template
- All 7 detectors + confidence scorer
- Yahoo ingestion pattern (VIX)
- Telegram dual-channel dispatch
- Paper trader + kill switch + Grafana stack
- Forex feeder (Yahoo) +
candles_1m_forex - Crypto feeder (CoinGecko + Binance) +
candles_1m_crypto - News scanner (Finnhub) → Redis sentiment
- Correlation engine — rolling 20-period matrix
- Detector parametrisation (table + symbol)
hunt_mode.pyscanner + narration + voice- OANDA demo + Bybit testnet accounts
Unblock criteria
Begin Hunt Mode v2 code when — and only when — Live V4.1 has logged 30+ paper trades across all three strategies with a combined PF ≥ 1.5 over a rolling two-week window. Until then the research work stays active but no feeder code ships.
Realistic build time once unblocked
~12–18 hours of compressed parallel Claude-with-bypass work for the full MVP (forex feed + crypto feed + scanner + narration + correlation + voice). Plus ~1 week of passive stability soak before it earns its own launchctl slot. Earlier estimates in the Monday brief (38 hours) assumed linear build.
Infrastructure isolation
Safe to run on Mini 3 alongside Live V4.1 if: own Python venv; own launchctl label (com.jrvis.hunt-mode); own tree at ~/trading/hunt_mode/ outside the synced scripts/; Redis prefix hunt:* not trading:*; Postgres write load monitored so V4.1 tick latency stays under 60s. Do not touch signal_processor.py in place.
Don't break these.
- Infrastructure is production-grade. All 5 Docker containers up 26+ hours, healthy. Launchctl supervises cleanly. Kill switch is fail-closed on Redis outage.
- Syncthing sync is working. Mini 1 ↔ Mini 3
docs/are byte-identical where intended. - Disk and logs are not bottlenecks. 152 GiB free, 34 MiB of active logs, 1 GiB of rolling backups.
- Research vault is the real asset. The 18-trader agreement matrix in
Strategy-Vault/00-INDEX.mdis a genuine edge for strategy design. Protect it — don't let infra work hollow it out. - Channel 1 /take workflow is the right discretion model. Mobile approval, auditable trail.
- Prop firm path (Lucid via PickMyTrade) is correct for a solo operator.
- The Apr 17 Channel 2 shipment was right. Mechanical VWAP Fade as the auto path + ICT as the discretion path is a good split; the problem is only that two of the three strategies haven't actually fired yet.