3PM Daily: Solo-Operated Closing Terminal — From ~800 Bars to 4 Setups
Active traders do not log off at the bell. Between 1:00 PM and 3:00 PM PT, institutional desks settle closing auction imbalances (MOC), after-hours earnings releases, and next-day rotation. 3PM Daily turns ~800 15-minute bars into 4 high-conviction setups by 3:00 PM PT. Heavy compute runs locally; Cloud Run + Redis deliver the debrief in under 3 minutes.
The 3PM Gap: Wall Street's Afternoon Settlement Window
Wall Street does not shut down at 1:00 PM PT (4:00 PM ET). That is when institutional execution desks process Market-On-Close (MOC) prints, auction imbalances, after-hours earnings releases, and closing order flow. Retail traders log off at the bell or get buried in fragmented 4,000-word financial commentary hours late.
“A) LIVE TAPE ONLY: If it appears, it's from live exchange tape. No placeholder prices. B) MATH DOES MATH: TA-Lib calculates stops and targets deterministically. LLMs provide context and debate. Never let an LLM hallucinate a price.”
5 Jobs, Not 5 Behavioral Archetypes
Designing a monolithic dashboard for an abstract “retail trader” caused immediate cognitive overload. 11 field interviews plus v1 system telemetry confirmed that trader intent splits during the afternoon close by available time budget and mental fatigue:
Whether managing operational data, budgets, or exchange tape: people do their best work when tools show clean, unvarnished data instead of guesses.
Math Does Math, LLMs Do Context: The 4-Artifact Pipeline
To ensure zero hallucination, the system enforces a strict division of responsibility: Math does math, LLMs do context. TA-Lib runs compiled C-bindings over NumPy arrays to calculate support/resistance, VWAP reclaims, and 1x ATR stops deterministically. LLMs never touch price calculations — they only synthesize context and debate narrative.
Technical Analysis Library — a 30-year industry-standard C-library. Unlike generative models, it is purely deterministic. If the mathematical criteria aren't met on verified tape, it returns null. No badge > fake badge.
for_distributionblog_contentindustry_leader_reportsai_debate_ledger8 Widgets Taxonomy & 5 Cockpits
LangGraph StateGraph DAG: 9 Bounded Investment Agents
Replaced speculative single-prompt cheerleading with a LangGraph StateGraph DAG coordinating 9 distinct investment-style perspectives: buffett, graham, lynch, soros, burry, wood, dalio, oneil, and simons.
Deterministic math computes prices; LLMs translate context and debate risk. If any indicator is null, the badge is suppressed. No badge > fake badge.
test_regression.py)// Math calculates stops and targets deterministically
const levels = taLib.findConfluence(verifiedTape);
if (!levels) return null; // No badge > fake badge
// LangGraph StateGraph DAG: 9 agents debate fundamental context
const debateLedger = await langGraphDAG.invoke({
symbols: levels.passedHurdle, // Score >= +4
agents: ['buffett', 'graham', 'lynch', 'soros', 'burry', 'wood', 'dalio', 'oneil', 'simons'],
tape: verifiedTape
});
// UI contract: Badge renders iff grounded in deterministic math
<LevelBadge visible={!!levels && levels.score >= 4} score={levels.score} />- React 19 Re-render Loop: Async fetch inside client component resolved via
useEffectlifecycle guards, sustaining 60fps. - Treemap Contrast Bleed: Evaluated dynamic tile luminance via
getTileTextColor()switching text to slate (#0F172A) for WCAG AA. - 600px Viewport Dead Zone: Harmonized container min-height bounds across 8-col blotter and 4-col sidebar.
- Stale State Hydration: Decoupled consensus payloads into on-demand drawers (sub-200ms hydrate) with Live / Settled / Stale badges.
- Privacy-First Telemetry: Tracking lens switch rate, blotter expand rate, and paper trade to signup conversion.
- Performance Profile: 192ms TTFB via Next.js 15 Turbopack; 0.00 Cumulative Layout Shift (CLS) across all 5 cockpits.
- $0 CAC Syndication: 1-click publishing pipeline from /admin stages and broadcasts to web, Discord, and automated X threads.
Solo Operator Reality, Not Vanity Metrics
I built this terminal as a production tool for my own close process and operate it daily. Deleted all vanity metrics. The real outcome is that a high-density financial terminal runs on live exchange tape, computes deterministic math locally, and serves globally for ~$18/month.