watchtower-ozy0pe5nmtc8i…
ad95880 · /home/spark3/YYY
logs/nancy_umbrella_train_merged_m22.json · holdings logs/paper_holdings.json · outcomes: logs trade_outcomes globpaper_holdings × snapshot prices)
entry_projected_profit_pct on each close):
L1 (ST ~3.5–7%): $+0.00 / 0 ·
ST soft (≤3.5%): $+20.50 / 2 ·
Paper L2 / MT (≥7% or boost/legacy): $+0.00 / 0 ·
other (gap): $+0.00
00:00:00
paper_holdings.json (L1) · nancy_train_velocity_ranked_last.json ·
nancy_umbrella_train_merged_m22.json ·
Tier A1 drift detector / Tier B6 near-miss JSONL wired. Runtime counter reads paper_chart_session_start.txt.
| Reason | n | Capture % |
|---|---|---|
| — | ||
| Symbol | n | Total $ |
|---|
| Sym | Side | Base | Mult | Base Trade | % | $ unreal | Proj | Age |
|---|---|---|---|---|---|---|---|---|
| No Lane 1 positions open | ||||||||
| Sym | Signal | Proj | Buy score | p_up |
|---|---|---|---|---|
| OPNUSDT | LONG | 10.6515% | 62.9 | 1.0 |
| FLOCKUSDT | LONG | 8.9159% | 47.5 | 1.0 |
| UMAUSDT | LONG | 8.1566% | 44.2 | 1.0 |
| 1000RATSUSDT | LONG | 11.3086% | 38.3 | 0.0 |
| INUSDT | LONG | 10.8434% | 37.0 | 0.0 |
| MEUSDT | LONG | 6.4516% | 36.6 | 1.0 |
| 2ZUSDT | LONG | 6.4295% | 36.5 | 1.0 |
| AVNTUSDT | LONG | 6.3957% | 36.4 | 1.0 |
| HOTUSDT | LONG | 5.4176% | 31.9 | 1.0 |
| API3USDT | LONG | 5.1924% | 30.8 | 1.0 |
| Time | Sym | Side | $ | % | Peak | Cap | Hold | Reason |
|---|---|---|---|---|---|---|---|---|
| No trades in archive | ||||||||
| Sym | Side | Entry | Current | % | $ unreal | Proj | Age |
|---|---|---|---|---|---|---|---|
| No open LONG in MT bucket | |||||||
| Sym | Side | Entry | Current | % | $ unreal | Proj | Age |
|---|---|---|---|---|---|---|---|
| No open SHORT in MT bucket | |||||||
| Time | Sym | Side | $ | % | Peak | Cap | Hold | Reason |
|---|---|---|---|---|---|---|---|---|
| No closes in MT bucket (proj threshold + boost/legacy) | ||||||||
| Sym | Side | 24h | Vol | 5m vel | Score | Proj |
|---|---|---|---|---|---|---|
| No warming candidates (all picks held or scanner empty) | ||||||
| Sym | Side | 24h | Vol | 5m vel | Score |
|---|---|---|---|---|---|
| No picks this tick | |||||
| Time | Sym | Side | 24h | Entry | Score |
|---|---|---|---|---|---|
| No audit picks | |||||
| Sym | Side | Entry | Current | Sim % |
|---|---|---|---|---|
| No sim-computable picks yet | ||||
| Sym | Side | Entry | Current | % | $ unreal | Proj | Age |
|---|---|---|---|---|---|---|---|
No ST-soft positions open in paper_holdings | |||||||
| Time | Sym | Side | $ | % | Peak | Cap | Hold | Reason |
|---|---|---|---|---|---|---|---|---|
| 21:37:56 | TACUSDT | short | $-35.00 | -0.70% | +0.11% | -613% | 4.5m | Sell loser |
| 21:08:20 | GRIFFAINUSDT | long | $+55.50 | +1.11% | +1.44% | +77% | 13.7m | AI peak exit long |
| Sym | Side | Entry | Current | Sim % |
|---|---|---|---|---|
No shadow rows (enable NANCY_TRAIN_SOFT_SHADOW_ENABLED=1 on SPARK or sync logs/nancy_train_soft_shadow.jsonl) | ||||
| Time | Sym | Side | Funding | RSI | 1h | Entry |
|---|---|---|---|---|---|---|
| No picks yet | ||||||
| Sym | Side | Entry | Current | Sim % | Funding | RSI |
|---|---|---|---|---|---|---|
| No sim data yet | ||||||
| supervisor | 1 |
| fast_snapshot | 1 |
| executors | 3 |
| monitor | 0 |
| socks_tunnel | 0 |
SOCKS verify: blip (tunnel up)
| fast_snapshot | 1.0s |
| mt_hunter | 2.5min |
| btc_leader | 8.6s |
| umbrella_merged | 0.9s |
| funding_fader | missing |
| Direction | flat |
| 5m velocity | 0.0% |
| BTC price | $0 |
| Alt correlation | 0 |
| Regime | alts_decouple |
| Basket size | ? |
| UTC hour | $ |
|---|---|
| 2026-04-24T21Z | $+20.50 |
| Ranked rows | 0 |
| Gate passes | 25 |
| MT hunter merged | 0 |
| Opens this session | 2 |
2026-04-25T01:47:56Z, all_ok=False — end-of-15m-cron checks tied to the same lookback/tweaker pipeline (see page section below).Market right now (live tape): At 2026-04-25 01:58:46Z on spark-e8e1, the bulk USDT-M snapshot feeding this page was last refreshed 1.0s ago (watchtower treats data as stale if older than 300s). The following regime read is therefore anchored to that tick, not to off-exchange headlines. BTC leader / correlation regime: spot direction flat, 5-minute velocity 0.0%, reference price n/a, Pearson correlation of BTC 1m deltas vs the volume-weighted alt basket n/a across 0 names — classifier bucket unknown (insufficient basket / empty snapshot) (alts are not following BTC step-for-step (divergence or flat tape)). Leader-lag file notes: no_btc_price. Tape heat (universe file): the snapshot lists 458 universe rows from 609 bulk tickers (file timestamp 2026-04-25T01:58:45.721213+00:00); the embedded velocity audit reports 458 rows with primary inter-scan velocity fields and an approximate 90th percentile |24h move| of 9.223% across the board — a coarse read on whether perps are quiet or collectively swinging hard. Decision-plane freshness: train-merged umbrella (ranked rows the executor consumes) is 0.9s old by file mtime, path logs/nancy_umbrella_train_merged_m22.json — that lag is the gap between “tape tick” and “last ranked bundle written,” which matters when volatility spikes intraminute. Your book vs this tape: no open holdings in the file this page read — flat exposure for mark-to-market purposes here. Scope: synthesized only from Nancy logs on this machine (Binance fapi-derived JSON), refreshed every 20s with the watchtower — not a macro or sentiment forecast.
| Check | ? | Detail |
|---|---|---|
| SCRIPTS/nancy_stack_ssot_validate.py | OK | [nancy_ssot] OK schema_version=1.0.67 stack=nancy_paper_spark scripts=65 |
| SCRIPTS/nancy_env_check.py | OK | [nancy_env_check] OK |
| nancy binding docs (paths + anchors) | OK | ok |
| umbrella fallback guard | OK | ok |
| nancy runtime heartbeats | OK | ok |
| nancy always-on supervisor contract | OK | ok |
| nancy train live audit | OK | ok last_action=restart_train_executor:not_running close_events=2 open_events=2 closed_total_pnl_pct=0.41 trade_count=20 win_rate=0.3 tuning_action=hold |
| train hpc + epoxy data posture | OK | train_hpc_posture | severity=green | n_findings=1 | [{'id': 'train_ranked_live_data_ok', 'severity': 'green', 'detail': 'ranked JSON passed nancy_live_data_artifact_assert'}] |
| fast snapshot cadence + velocity hot ordering | OK | ok snapshot_age=1s hot_n=60 source_hot=logs/nancy_velocity_hot_last.json rows_primary_velocity_lookback=458 |
| paper chart ↔ spider (SSOT) | OK | ok |
| 15m cycle envelope (single roll-up) | OK | ok age_sec=0 seq=28 digest=36c6d83d5772 |
| 5m deep scan + policy freshness | FAIL | missing:state:logs/nancy_5m_market_state_last.json; missing:decision:logs/nancy_5m_micro_adjuster_last.json |
| lane-isolated tweaks architecture | FAIL | missing:mt:logs/nancy_runtime_tweaks_mt.json; global_has_per_trade_entry_gate_leak:['min_profit_ci_low_pct', 'min_profit_floor_pct_override', 'min_profit_pct'] |
| decision resources (docs + audit) | OK | host=spark-e8e1 | audit_expected=true | severity=yellow | findings_n=1 | audit_missing |
| compileall MODULE/nancy | OK | ok |
| py_compile SCRIPTS/nancy_*.py (325 files) | OK | ok |
| File | Age |
|---|---|
nancy_15min_lookback_report.json | 8.8min |
nancy_reverse_engineered_knobs_last.json | 8.9min |
nancy_elon_interrogation_latest.json | 2.9min |
nancy_runtime_tweaks.json | 5.8min |
nancy_spider_last.json | 10.8min |
nancy_lookback_cron_heartbeat.json | 10.8min |
The Binance Futures API is geo-blocked from the laptop, so all traffic is routed through an SSH SOCKS5 tunnel to SPARK3 (ssh -D 1080, pinned by a macOS LaunchAgent with KeepAlive). A sitecustomize.py shim monkey-patches socket.socket so urllib/requests transparently traverse the tunnel.
The Fast Market Snapshot loop polls every 5 seconds, fetching 467 USDT perpetual tickers with per-symbol velocity (inter_scan_velocity_pct_per_sec), quote volume, 24h change, and maintains a ring buffer of prices. It writes nancy_fast_market_snapshot_last.json + state file. The BTC Leader Lag publisher derives BTC direction, 5m velocity, and the Pearson alt-correlation (BTC 1m deltas vs basket-mean deltas of top-30 alts by volume), classifying the regime as alts_follow_btc / alts_decouple / mixed.
The Train Velocity Ranker scores every universe symbol each tick via a composite: velocity_weighted × conviction × path_efficiency × fractal_alignment. Symbols clearing hard thresholds enter gate_passed. Lower-conviction symbols with real momentum enter top_25 as sub-threshold candidates.
The Train Executor Bridge turns those into executor-ready ranked rows. Gate-passed rows get Lane 1 routing (projected_profit_pct scaled from v_weighted × 4, typically 3.5-7%). Soft-supplement rows (top_25 with |v_weighted|≥0.35) log to Sandbox 1 / nancy_train_soft_shadow.jsonl and may or may not be routed to the executor’s ranked list. MT Hunter rows merge separately for Paper Lane 2 (medium-term). The bridge applies the BTC leader graduated penalty (A05 P3), per-symbol dedupe (60s cooldown + already-open guard), and emits nancy_umbrella_train_merged.json.
Paper Lane 2 — MT Hunter (MODULE/nancy/mt_hunter.py + mt_hunter_bridge.py): primary medium-term path on this dashboard — open/closed/warming tables plus scanner KPIs. Merged into the umbrella; executor MT-prefer when NANCY_MT_HUNTER_ENABLED. There is no separate “Sandbox 2” section anymore.
Sandbox 1 — ST soft (≤3.5% proj): soft short-train supplement — paper tables when routed live, plus shadow scorecard from nancy_train_soft_shadow.jsonl. Graduation gate: swap-at-cap give-back + 55% sim WR (per internal notes).
Lane 4 — Funding Fader: mean-reversion experiment only (funding_fader_shadow.py). Not the MT path.
The Paper Executor (multiple child processes for parallelism) reads the merged umbrella, selects entries respecting side-loss guards, BTC penalty, hourly/daily caps, and opens $1000 × 5× = $5000 notional per trade. Exits are handled by Exit FSM (OPEN_GRACE → EARLY_RISK → RIDING → PROFIT_LOCKED → TRAILING → STAGNANT → EXITING), the AI peak-exit overlay (closes when unrealized retraces ≥0.22% from peak ≥+1.35%), and the profit-lock / stale-non-performer / sell-loser paths. Every open and close writes to nancy_trade_outcomes.json and nancy_audit.jsonl.
The Always-On Supervisor (PID parent of every child) does a 15-second repair cycle: kills duplicates, restarts dead processes (fast snapshot, executor, btc_leader, shard merger), auto-fixes stuck umbrella state, reloads the SOCKS LaunchAgent if the verify blips 3 times in a row. The Overnight Monitor ticks every 10 minutes, writing a structured row to nancy_overnight_monitor.jsonl with P&L delta, anomaly flags (stale feeds, realized drops >$50/10min, missing processes).
The Partner Watchtower is generated by SCRIPTS/nancy_partner_dashboard.py on the host that runs it
(build stamp in the page header). It reads logs/nancy_*.json and JSONL (plus logs/eu_chart/ when
chart_sync_source.json is present so laptop mirrors match SPARK), merges train umbrella from
nancy_umbrella_train_merged_m22.json or the eu_chart merged file, marks stale when the
fast snapshot mtime is older than NANCY_WATCHTOWER_MAX_SNAPSHOT_AGE_SEC (default 300s), and
recomputes HTML every 20s. The spider panel reflects nancy_spider_last.json written at the end of
run_nancy_lookback_cron.sh alongside lookback + tweaker outputs. Serve locally with python3 SCRIPTS/nancy_partner_dashboard.py (listens on
NANCY_WATCHTOWER_PORT, default 8899) or run gen once. Same slug in nancy_watchtower/.slug keeps the
public path stable when reverse-proxied. No operator actions on this page — read-only.