21c25282026-08-28auto-data-snapshot: 2026-08-28T01:33:48 (1 data files) — .yoloforever/ledger.md
7a16bf92026-08-28yoloforever cycle 2: buy-score is CAP-DEPENDENT. Backtest now SEGMENTED by cap tier (large 120d +0.68 works / small -0.6 inverts); backtest panel shows both; per-stock cap-tier flag (large=sweet-spot, small<20B=INVERTS warning, mid 20-40B=untested); /api/cap resolves cap for manual adds
b40722e2026-08-28yoloforever cycle 1: 3D encodings legend (height/volume/verdict/peak-glow/MA key), default-collapsed per Cody (avoids occluding 3D ticker labels)
5ff54702026-08-283D volume reads: per-vertex volume color (bright=heavy/dim=light) on the ribbons, white glow marker on each stock's peak-volume day, and a per-stock<->comparable normalization toggle. Also: backtest-sweet-spot flag on scores (40-79 validated band)
d1e5b8a2026-08-28Evidence-driven sweet-spot flag: mark scores in the backtest-validated 40-79 band (beat baseline at every horizon); warn on 80+ (rare + underperformed) — surfaces the counterintuitive finding at decision time
5ca55742026-08-28CSV export: download scan matches (ticker/name/score/price/drawdown/RSI/MA-dist/zone) as a dated CSV; button appears after a scan
ef0e6462026-08-28Score transparency: expose scoreParts from the engine + render per-stock breakdown chips (fit/dip/RSI/entry/vol) — answers the DTD 'arbitrary weights' critique by making the score auditable
340e7452026-08-27Ship the backtest into the UI: /api/backtest (built at boot, cached) + in-app score-backtest panel showing forward-return by score band across 20/60/120d; reframe 'buy score' -> 'setup score ~6mo' per the validated finding; spec now 15 checks
5b21ae42026-08-27One-command gated redeploy: redeploy.sh runs panel spec against a throwaway local server as a PRE-DEPLOY GATE (aborts if red), then rsync + zero-downtime pm2 reload + prod smoke test; npm run deploy
7b594522026-08-27auto-data-snapshot: 2026-08-27T17:33:56 (1 data files) — .deploy.conf
d251eb02026-08-27DTD 7/8-B rework: gate dip-depth reward on newHigh (kill falling-knife), drop redundant new-high +8; add decile forward-return backtest. Finding: buy-score is INVERTED at 20-60d but works at ~120d (corr +0.67, 40-79 bands beat baseline +7-12%)
368c7372026-08-27Fix scan race: await autoLoadMatches before printing 'loaded top N' (message now truthful + test deterministic); 3x14/14 green
93ee25b2026-08-27Add GO button at bottom of filter section — runs the scan with current criteria (mirrors top Scan button)
254436e2026-08-27Panel spec 14/14 green; serve /favicon.ico as 204 to eliminate the only 404 (real fix, not a filtered assertion)
9b99f9e2026-08-273D volume-extruded ribbons: each layer's z-thickness swells/pinches with daily volume (replaces flat ribbon + separate volume bars); depth capped to lane spacing
4d8a1272026-08-27Volume-by-price as a left-anchored bar-graph layer (bars grow from left axis = shares at each price), POC gold bar + value area, on-top overlay with Vol-layer toggle; + panel Playwright spec (npm test)
fdcc20e2026-08-275x report: six-way core PASS all 3 browsers, 0 console errors; click-through fails are collapsed-panel test artifact (controls proven working)
27672c82026-08-27Include ETFs in scan (48 major ETFs: SPY/QQQ/sector SPDRs/ARKK/etc, high scan priority) + Reset watchlist/Reset all buttons + fix cached-universe filter dropping price-0 entries
2c3a2dc2026-08-27Volume profile (shares-at-price / POC + value area), OBV volume-force + price-velocity data points, draggable chart range brush, scan auto-loads top winners onto board with adaptive lane spacing, options-availability badges on scan results
runScan gained a 5th largeOnly param + cap>=40e9 filter but the only
caller passed 4 args, so largeOnly was always undefined and the filter
was dead. Read it in filtersFromQuery (bool('largeOnly'), defaults off)
and pass filters.largeOnly at the /api/scan/start call site.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pnon7dut9MfPekhhm9YY4Q
File tree
15 files tracked. Click any to browse the source at HEAD.