Timeline Pro — System Architecture

Полная схема работы системы: запуск → фоновые потоки → API endpoint → фронтенд

1. Запуск Backend (python main.py)

1
TradingApp pipes connect
DatumPipes() — создаёт объект (без реального подключения)
0.0s
2
Load trades (245K rows)
trades_enriched_v3.csv → pandas DataFrame. Score columns, grades, ML predictions.
~5s +400 MB RAM
3
Pre-compute v5 scores (55 factors, 15 layers)
Vectorized scoring на 245K trades. XGBoost meta-layer.
~8s +200 MB RAM
4
Build score buckets (O(1) lookup)
GroupBy (direction, gap_bucket, score_bucket) → 1241 buckets. WR + avg_ret pre-computed.
0.1s
5
Load exit955 cache (235K rows)
Historical exit data for day results panel.
~3s +100 MB RAM
6
Compute v5 grades
A+: 5,983 | A: 22,512 | B+: 24,713 | B: 66,822 | C: 110,942 | F: 4,621
~2s
7
Uvicorn ready
HTTP server на :8000. Принимает запросы.
Total: ~20s ~850 MB RAM

2. Фоновые потоки (daemon threads)

LIVE FEED
Цикл каждые 30 сек:
① Polygon all_tickers_snapshot (cached 120s) → 12K тикеров → filter → ~2500 universe
② PIPES.get_batch_gaps(2500, chunk=400) → gap% для всех → 0.0s
③ PIPES._request_data(200 × 9 fields) → Bid, Ask, ImbExch, PreMktVolN, ADV90 → 0.0s
④ Сохраняет в LIVE_QUOTES + LIVE_ENRICHMENT (в памяти)
MAE LOADER
Однократно, через 5 мин после старта:
Загружает MAE data → merge с trades (245K rows) → ~60s, блокирует GIL.
⚠ Если совпадёт с 9:28-9:29 — endpoint зависнет на 60 сек.
Delay = 300s от старта. При старте в 9:00 → MAE грузится в 9:05.

3. API Endpoint: GET /api/timeline

Waterfall (8.7 сек total)

Polygon snapshot (cached)
2.7s
Regime (from Polygon)
0.0s
Build candidates (LIVE cache)
0.1s
Enrichment (from cache)
0.0s — zero pipe calls!
Scoring × 500
0.0s — O(1) buckets
Imbalances (from cache)
0.0s
Earnings (Datum API)
0.8s (cached 10min)
Events + Warnings
0.0s
Foreign signals (Polygon)
~1s
JSON serialize + response
~4s (500 stocks)
0s2s4s6s8s10s

Ключевой принцип: ZERO PIPE CALLS из endpoint

Все данные TradingApp (gaps, imbalances, pre-vol, ADV90) читаются из LIVE_ENRICHMENT cache, который обновляется фоновым LIVE FEED потоком каждые 30 сек. Endpoint НЕ обращается к Named Pipes напрямую — это устраняет pipe contention и зависания.

4. Фазы Timeline (фронтенд)

Время ET
Фаза
Refresh
Данные
04:00
Night Scan
2 мин
Polygon gaps + regime + scoring
07:00
Pre-Scan
30 сек
+ Finviz (RSI, ATR, patterns)
09:00
Candidates
15 сек
+ Finviz + pre-vol (TRAP enrichment)
09:25
Imbalance 9:25
10 сек
+ NYSE/NASDAQ imbalances из cache
09:28
Imbalance 9:28
8 сек
+ уточнённые imbalances
09:29
EXECUTE
2 мин
Snapshot замораживается → copy baskets
09:55+
Post-strategy
Показывает saved snapshot до 4:00 AM

5. Источники данных

ИсточникЧто даётКакСкоростьCache
Polygon 12K тикеров: gap%, price, volume, sector ETFs REST API → all_tickers_snapshot() 2.7s 120s TTL
TradingApp 2500 тикеров: live gap%, bid/ask, imbalance, pre-vol, ADV90 Named Pipes (фоновый поток) 0.0s 30s (LIVE feed cycle)
Datum API 34 earnings: ticker, timing (BMO/AMC) REST API → /reports 0.8s 10 мин TTL
Finviz 3K тикеров: RSI, ATR, SMA20/50, patterns Web scraper (Elite account) 3-5s 5 мин TTL
Events NFP, FOMC, OPEX, earnings season Static calendar + computed 0.0s Session
Scoring WR prediction, grade, rules Pre-computed buckets (245K trades) 0.0s Pre-built at startup

6. Архитектура потоков данных

Source
TradingApp
Named Pipes
Cache
LIVE_QUOTES
LIVE_ENRICHMENT
обновляется 30s
Endpoint
/api/timeline
читает из cache
Frontend
Timeline Pro
auto-refresh
Source
Polygon API
REST
Cache
_POLY_SNAP_CACHE
TTL 120s
Process
Regime + Universe
gap filter
Score
O(1) Buckets
1241 buckets
TRAP → Cache → Endpoint: TRAP background thread — единственный кто обращается к Named Pipes. Endpoint читает ТОЛЬКО из памяти. Нет contention, нет зависаний.

7. Ресурсы

КомпонентRAMCPUПорт
Backend (Python/FastAPI)~850 MB<5%:8000
Vite dev server (Node)~160 MB<1%:5174
TradingApp (Datum)~5.7 GBvariesNamed Pipes
Итого наше~1 GB<5%
Система32 GB (16 свободно)i7-14700KF 20c/28t

8. Чеклист запуска (завтра)

1
TradingApp — обычный запуск (НЕ от админа!)
Двойной клик. Если от админа — Named Pipes недоступны backend-у.
2
Backend
cd C:\datum-api-examples-main\trading-dashboard\backend && python main.py
Ждать "[LIVE] Pulled ..." — значит TRAP подключён.
3
Vite (фронтенд)
cd C:\datum-api-examples-main\timeline-pro && npm run dev
4
Открыть
http://100.121.113.68:5174
Timeline Pro v1.0 • $(date) • System: i7-14700KF / 32GB / Win