Satoshi R&D · alpha-factory

Propozycja · samobudujący się research lab

Satoshi — autonomiczny agent R&D systemów tradingowych na Sparkach.

To samouczący się system BADAWCZY (alpha-research factory), nie samouczący się trader. Jeden agent-mózg prowadzi nocną pętlę: proponuje hipotezę o edge'u → pisze konfig w ramach LOCKED data standard → odpala na 4×Spark GB10 → ewaluuje walk-forward z deflacją → loguje wynik do jhonnys-brain → kalibracja trzyma go uczciwym → generuje następną hipotezę. Równolegle Darwin już prowadzi żywy turniej paper-strategii.

Darwin LIVE · :8093 · paper-only jhonnys-brain · 11 trials / 7 success Brier 0.284 · delta +0.168 Żywe pieniądze = osobna decyzja Bartosza
01 // WERDYKT

Co realnie budujemy — a co bramkujemy twardo.

Dwa poziomy, ostro rozdzielone. Pierwszy to inżynieria 2–4 tygodni na żywym fundamencie. Drugi to moonshot, który nigdy nie dotyka kluczy API bez osobnej, jawnej decyzji.

DOABLE · CZĘŚCIOWO JUŻ ŻYWE

Autonomiczna pętla R&D

To nie research-ryzyko, to spina istniejących klocków. Fundament działa i ma historię.

  • Darwin chodzi pod tmux supervisor (M1, paper-only, dashboard :8093) — allocator + spawner + orderbook-gate.
  • Pętla jhonnys-brain (experiment_proposeexperiment_log → auto-flip edge → calibration) jest zaimplementowana: 11 trials, 7 success, Brier 0.284.
  • Theory graf trzyma hipotezy V5: H6 regime-gate (prior 0.80), H7 CryptoMamba, tree ceiling 0.567 potwierdzony 8×.
  • Brakuje tylko spiny: Darwin M2 experiment_log wiring, cron nocny + agent piszący konfigi, DSR/PBO jako twarda bramka z licznikiem prób w postgres.
GATE HARD · NIE BUDUJEMY

Fully-autonomous live-money trader

Żaden krok pętli ani Darwin nie dotyka kluczy API i nie składa zleceń.

  • Przejście paper → micro-live to OSOBNA, jawna decyzja Bartosza [HIGH RISK] po ≥4–8 zielonych tygodniach deflowanego walk-forward + zielonego live-paper.
  • Pierwsza ekspozycja: wyłącznie funding-arb delta-neutral — jedyny edge z opublikowanym żywym plusem.
  • NIGDY directional. NIGDY lag-arb (własny live test: 303 trade'y, −$0.30).
  • Agent może REKOMENDOWAĆ promocję — nie może jej WYKONAĆ.

Wartość: moat R&D + żywy case-study („system przebadał N hipotez kiedy spaliście"), nie linia przychodu na 6mc. Cała filozofia z Alpha Factory: maszyna przyspiesza analizę, krytyczna decyzja zostaje u Bartosza.

02 // PĘTLA NOCNA

Krok po kroku — i kto za co odpowiada.

Dziesięć kroków od pre-flight guard do raportu porannego. Każdy krok jest oznaczony: gdzie wykonywany — Spark, jhonnys-brain (mózg/graf), Darwin czy człowiek.

Spark 4×GB10 jhonnys-brain Darwin Człowiek (gate)
0

Phase-A guard (pre-flight)

Sparkalert tylko gdy fail

Sprawdza warunki startu: swap+earlyoom aktywne, kraken dropped, dysk Mac Mini OK, raw immutable (md5 zweryfikowany). Bez tego trening = OOM (fact #597, edge 224 blocks prior 0.95). Fail → abort batch + alert do człowieka.

1

Propose hipotezy

jhonnys-brain

experiment_propose czyta theory edges gdzie verification_count=0, rankuje po confidence_prior, zwraca build-ready protokół (hypothesis + params/metrics schema + blast_radius + similar_past_trials + call_template). Dorzuca untested edges V5 (H6/H7).

2

Pisz konfig eksperymentu

mózggate na odstępstwo

Agent-mózg (Satoshi na vLLM Qwen3.5-397B) tłumaczy protokół na konkretny config treningu/backtestu w ramach LOCKED data standard (27 features, grid V4 $0.10, batch 512, SurvivalGridNet). Waliduje wzgl. TRAINING-BASELINE.md; KAŻDE odstępstwo → stop + zgłoś człowiekowi PRZED treningiem.

3

Trening / backtest

Spark 4×GB10

Odpala w oknie nocnym (GPU wolne od inference MiniMax/Qwen). PyTorch single-node lub NCCL multi-node TP gdy wszystkie 4 wolne. Pracuje WYŁĄCZNIE na kopiach raw (fact #455). Output do features/labels/views, nigdy do raw/.

4

Walk-forward + deflacja

Spark computelicznik prób

9-fold rolling 24h z buforem 5min, Sharpe_net z fees ≥10bps, bootstrap CI (block_size 600, eff n~1440), Deflated Sharpe Ratio + PBO liczone na CAŁEJ historii prób (licznik z postgres — bez niego deflacja jest fikcją). Bramka: edge przeżywa tylko jeśli DSR>0 po korekcie.

5

Log trial

experiment_log → trigger

experiment_log z outcome (success/failure/partial/inconclusive), metrics (AUC, Sharpe_net, DSR, PBO), failure_mode, observation, entity_names i theory_edge_ids. Trigger auto-aktualizuje liczniki edge'a i flipuje status (unverified → verified/contradicted/partially_verified).

6

Kalibracja

theory_calibration_report

Liczy Brier per relation_type, porównuje confidence_prior z observed_success_rate. Obecnie overall Brier 0.284, delta +0.168 (overconfident); causes +0.32, requires +0.375 najgorsze. Agent dyskontuje swoje nowe priory o calibration_delta dla danego typu relacji.

7

Darwin live-paper turniej

Darwin

Edge który przeżył deflację staje się nowym slotem/family w Darwin config.yaml. Handluje na ŻYWYCH feedach (BN spot + HL WS) z paper execution, orderbook-gate honest-fills (slip≤3bps, spread≤20bps, depth≥$50), allocator Thompson (cap 30%/slot) co godzinę, spawner co 24h. Family C = leak detector.

8

Darwin → theory feedback

Darwin → jhonnys-brainM2 #3

Każda promocja/degradacja/kill slotu = experiment_log trial przeciw edge'owi („orderbook-gated X ma pozytywny żywy edge na liquid coins"). Żywy turniej zasila theory graf + kalibrację. Domyka pętlę: paper-live wynik wraca jako evidence, nie tylko backtest.

9

Raport poranny

memory_store#ai-ops · decyzja

Co przetestowano, co przeżyło deflację, status slotów Darwin (stage/trades/net/p-value/negative-control), proponowane następne hipotezy. KAŻDA rekomendacja promocji live osobno oflagowana [HIGH RISK / WYMAGA DECYZJI BARTOSZA]. Post do #ai-ops via gateway.

03 // LEARNING LOOP w jhonnys-brain

Zamknięta pętla uczenia już istnieje — i jest udowodniona danymi.

Nie projektujemy jej od zera. Cykl: experiment_propose → trial → experiment_logpostgres trigger auto-flipuje edge → theory_calibration_report mierzy Brier → agent dyskontuje następny prior o calibration_delta. To samokorygujące: jeśli agent jest systematycznie zbyt pewny edge'ów typu causes, kalibracja go złapie.

experiment_propose
Czyta edges verification_count=0, rankuje po confidence_prior, zwraca call_template.
agent → trial
Mózg odpala trening/backtest na Sparkach, deflowany walk-forward.
experiment_log(theory_edge_ids)
Append-only. Wynik z metrykami before/after + failure_mode.
POSTGRES TRIGGER
Auto-inkrementuje verification/success/failure_count i FLIPUJE status edge'a (unverified → verified / contradicted / partially_verified).
theory_calibration_report
Brier per relation, porównuje prior z observed_success_rate, zwraca calibration_delta (dodatni = overconfident).
następna hipoteza
Agent dyskontuje swój prior o delta dla danego relation_type. Pętla się domyka.
11
tested edges
7 / 1
success / failure
0.284
overall Brier
+0.168
calibration delta

Immutable logs + provenance: experiment_trials są append-only; fact_provenance_set wiąże tool_outcomes → events → facts → trials w DAG, fact_lineage go przechodzi; belief_conflicts trigger (schema 013) wykrywa semantyczne duplikaty ≥0.85 cosine. Raw immutable (fact #455) + licznik prób w postgres = deflacja ma uczciwy mianownik.

04 // DARWIN

Żywy turniej strategii — który już działa.

Darwin to LIVE tournament + capital allocator. Nie jest planem — chodzi (M1, paper-only, tmux supervisor). W Autonomous Satoshi pełni rolę forward-test rigu: edge, który przeżył deflowany backtest, dostaje slot i handluje na żywych feedach bez ryzyka kapitału.

RUNNING · :8093

Darwin już prowadzi żywy turniej. M0 „mirage" (+773k bps) okazał się fikcją — HMSTR = 37% PnL z illiquid alts, liquid majors netto −13.4bps = zero edge. Orderbook-gate w M1 to zabił. To jest dowód, że honest-fills działa.

[1] Forward-test rig

Edge po deflacji dostaje slot, handluje na żywych feedach (BN aggTrade + HL trades + HL l2Book WS) z paper execution. Jeden konserwatywny cost model: round trip 12.64bps (HL taker 4.32 + BN 5 + slip 2bps/side).

[2] Honest-fills gate

gate.py chodzi po żywym L2 booku HL przed każdym open, odrzuca fill jeśli slip>3bps LUB spread>20bps LUB depth<$50. Odrzucenia → tabela rejections. To zabiło M0 mirage.

[3] Allocator (godzinowo)

allocator.py liczy rolling stats per slot, bramki promocji (INCUBATOR→CANDIDATE: wszystkie + 72h histereza), degradacja przy rolling-7d net<0 lub DD>400bps. Wagi Thompson-sampling, cap 30%/slot.

[4] Spawner (co 24h)

Top-3 po net PnL → 2 mutacje ±20% jitter każdy + 1 świeży random per family. Cap populacji 24, kill najsłabszego przy overflow. To ewolucja populacji strategii.

[5] Leak detector

Family C = random entry, identyczny risk mgmt. Jeśli kontrola kiedykolwiek przejdzie bramki promocji → bramki za słabe, WARNING. Built-in sanity check przeciw overfittingowi.

[M2] Brakujące ogniwo

experiment_log wiring (każda promocja/kill → trial w theory grafie) + Family B funding-arb + daily #ai-ops reporter. ZERO order-placement path, ZERO kluczy API.

INCUBATOR
Nowy slot zaczyna tu — bez wagi kapitału.
→ CANDIDATE
Promocja: wszystkie bramki + 72h histereza.
→ DEGRADE
rolling-7d net<0 lub DD breach (400bps).
→ KILLED
2× degrade. Linia ewolucyjna w parent_id/gen.
05 // REGISTRY

Jak definiować różne systemy tradingowe.

System tradingowy = wiersz w rejestrze, który Darwin już ewoluuje (tabela slots w darwin.db + config.yaml). To rozszerzenie istniejącego schematu, nie nowy wynalazek. Nowy system = nowy slot (backtest przeżył deflację) lub nowa family (nowy mechanizm).

PoleCo to jest
STRATEGY CLASS / familyKategoria mechanizmu. family A = spread/lag BN→HL (port z paper-trader-v4 „Grok"), family C = negative control (random entry), planowane family B = funding-rate arb (HL 1h vs BN 8h, delta-neutral). Mapuje na implementację w slots.py.
PARAMS (params_json)Słownik strojonych parametrów: {entry_bps, momentum_window_s, momentum_threshold_bps, hl_micro_ticks, min_edge_bps, sl_bps, timeout_s, max_positions, cooldown_s, trail_frac}. Spawner mutuje ±20% jitter.
DATA / feedsŻywe strumienie (BN spot aggTrade, HL trades, HL l2Book) + dla backtestu LOCKED data standard (Pakiet A: 27/65 features, raw immutable, training view).
REGIME GATEMeta-warunek kiedy strategia w ogóle handluje. Np. H6 regime_gate na deribit_dvol/funding/VIX wybiera 27% okien o AUC>0.6; orderbook-gate jako twardy regime na płynność.
RISKsl_bps, timeout_s, max_positions, max_drawdown_bps (400, instant degrade), cooldown_s, trailing stop (frac of peak), allocator weight cap 30%.
STATUS LIFECYCLEStage machine w slots.stage: INCUBATOR → CANDIDATE → degradacja → KILLED. Kolumny: weight, last_degraded_at, degrade_count, parent_id, gen (linia ewolucyjna spawnera).

Docelowo: theory_node per family (kind=component) + theory_edge „family X ma pozytywny żywy edge" z confidence_prior, który experiment_log z Darwin flipuje.

06 // SPARKI 4×GB10

Do czego służy sprzęt — w oknach czasowych.

GPU są współdzielone z inference, więc klaster dzieli się na trzy role w oknach. Konflikt zasobów rozwiązuje scheduler okien: ciężki trening tylko gdy inference-load niski.

DGX Spark GB10 (Blackwell)
512GB unified (128GB/node)
100GbE QSFP · RoCE / NCCL
80 / 4 / 333GB CPU / GPU / Ray
dzień + noc · stały

Agent brain

vLLM 0.17.1 serwuje Intel/Qwen3.5-397B-A17B-int4 (TP=4 przez Ray, max-len 200K, prefix-cache 98.5% hit) na :8000 przez LiteLLM :4000. Mózg Satoshi: czyta protokół, pisze konfigi, formułuje hipotezy, redaguje raport. Uwaga: thinking-mode bug → enable_thinking:false lub wysoki max_tokens.

okna nocne

Trening

PyTorch training SurvivalGridNet / regime-gate / Mamba. Single-node gdy inference zajmuje część klastra, NCCL multi-node TP gdy wszystkie 4 wolne (NCCL_SOCKET_IFNAME na QSFP, RoCE). Clock cap 210–2150MHz (VRM safety, −28% perf) zostaje. MemoryMax/earlyoom bo Tank ma zero swap + historię OOM.

noc · CPU-heavy

Walk-forward / deflacja

9-fold backtest + bootstrap CI + DSR/PBO. CPU-heavy (80 rdzeni Ray), więc może iść równolegle z lekkim inference. Sekwencja nocna: pre-flight Phase-A → trening na wolnym GPU → walk-forward na CPU → log.

07 // BEZPIECZNIKI

Non-negotiable. Tego pętla nie ma prawa złamać.

Dziesięć twardych reguł. Naruszenie którejkolwiek = stop. To one odróżniają system BADAWCZY od „samouczącego się tradera", który spaliłby kapitał.

G-01 · ŻADNEGO ONLINE-RL

Brak online-RL na kierunek/sizing. RL co najwyżej na egzekucję, później. Samouczenie = wolno rosnący ensemble stabilnych snapshotów (wzorzec Numerai/RD-Agent), NIE adaptacyjne wagi online.

G-02 · KOSZTY ≥ 10bps

Każdy backtest: koszty ≥10bps (Darwin live: round trip 12.64bps), walk-forward 9-fold, bootstrap CI — bez wyjątków.

G-03 · DEFLACJA Z LICZNIKIEM

DSR + PBO liczone na CAŁEJ historii prób (licznik w postgres). Bez licznika deflacja jest fikcją, a naiwna pętla retreningu = fabryka overfittingu (Bailey/López de Prado).

G-04 · ŻYWE PIENIĄDZE = OSOBNA DECYZJA

Micro-live dopiero po ≥4–8 zielonych tygodniach deflowanego WF + zielonego live-paper. Agent REKOMENDUJE, nie WYKONUJE. Pierwsza ekspozycja: funding-arb delta-neutral, NIE directional, NIE lag-arb.

G-05 · DATA STANDARD LOCKED

27 features, grid V4 $0.10, batch 512, SurvivalGridNet (decyzja Bartosza 2026-02-25, fact #438). Pętla NIE MA prawa go zmienić; każde odstępstwo → stop + zgłoś PRZED treningiem.

G-06 · RAW IMMUTABLE

raw/ read-only (chmod a-w), DuckDB read_parquet(raw) only, output ZAWSZE do features/labels/views, md5 verification (fact #455). Factory pracuje wyłącznie na kopiach.

G-07 · ANTY-LOOKAHEAD

Dane treningowe po cutoffie modelu (03–06/2026 > 01/2026) = memoryzacja LLM wykluczona. Strict exclusive t0 w label construction. HL mark NIGDY jako label (synthetyczny oracle, lagguje BN 3–8s — fact #440).

G-08 · NEGATIVE CONTROLS

Obowiązkowe (Darwin family C). Jeśli random-entry kontrola przechodzi bramki promocji → bramki za słabe, WARNING. Built-in leak detector.

G-09 · KALIBRACJA PRZED CONFIDENCE

theory_calibration_report przed każdym wysokim priorem; dyskontuj o calibration_delta (obecnie +0.168 overall, causes +0.32, requires +0.375). System overconfident — koryguj.

G-10 · ZERO ORDER-PATH

Darwin/pętla NIE czytają kluczy API, ZERO order-placement path, wszystkie feedy to publiczne dane rynkowe. Kill-switch live pojawia się dopiero z MICRO_LIVE (osobny milestone).

08 // REALITY-CHECK EDGE'ÓW

Uczciwie — co działa, co umiera, co jest fikcją.

To NIE jest linia przychodu na 6mc — to moonshot R&D z opcją na moat. Wpisywanie tego do prognozy = samooszukiwanie. Dlatego budujemy system BADAWCZY z deflacją, nie „samouczącego się tradera".

UMIERA

Directional short-horizon ML umiera przy kosztach: +182% brutto → −99% netto przy ledwie 10bps (arXiv 2606.00060). Tree ceiling potwierdzony 8×: CatBoost/LightGBM max 0.567 AUC na 65 features. Pakiet A mean WF = 0.6099, 0 foldów >0.70 — cytowane 0.7455 to best-fold cherry-pick (korekta fact #471).

JEDYNY ŻYWY +

Funding-rate arb cross-venue = jedyna klasa edge z opublikowanym pozytywnym wynikiem LIVE dla małego kapitału (14–19% rocznie 2024–25, ale tylko ~40% najlepszych spreadów netto-dodatnie, ryzyko = reversal). Dlatego pierwsza ekspozycja live = funding-arb (Darwin family B), delta-neutral. Spot-perp basis na majorach: zatłoczony poniżej rentowności T-bills od poł. 2024.

NIE DZIAŁA LIVE

Lag-arb BN→HL: lead-lag DWUKIERUNKOWY (HL prowadzi BN ~25% okien), median order-to-fill HL ~884ms zjada sub-sekundowe okno. Własny live test (v5 do 2026-03-03): 303 trade'y, PnL −$0.30 (fact #135). Paper 70% WR nie przełożył się na live. Darwin M0 +773k bps to był LIQUIDITY MIRAGE, zabity przez orderbook-gate.

ARTEFAKTY

FINSABER (replikacja 2004–2024 z delisted): „alpha" sławnych agentów LLM (FinMem, FinAgent) znika, Sharpe ujemny, p>0.34. Opublikowane sukcesy = artefakty wąskiej ewaluacji + lookahead przez memoryzację LLM (do 22% obserwacji trzeba wyciąć by zabić fałszywe Sharpe w GPT-4.1).

BASELINE

Retail baseline (dane regulatorów): 73–97% traci, <1% trwale profitable. Automatyzacja nie zmienia znaku dla mediany. RL end-to-end na kierunek/sizing: zero wiarygodnych żywych sukcesów w literaturze (działa tylko na egzekucji — JPM LOXM). FinRL FAQ sam przyznaje, że buy-and-hold trudno pobić.

09 // ROADMAPA

4–8 tygodni inżynierii na żywym fundamencie.

Bez nowego ryzyka research'owego do tygodnia 3. Twardy gate live na końcu — i to tylko jako rekomendacja do osobnej decyzji Bartosza.

Tydz 1

Domknij Darwin M2 #3 — experiment_log wiring. Każda promocja/degradacja/kill slotu → jhonnys-brain trial przeciw theory_edge („orderbook-gated spread/lag ma pozytywny żywy edge na liquid coins"). Dodaj theory_node per family (A/B/C). Zero nowego ryzyka — tylko spina istniejące.

Tydz 1–2

Daily #ai-ops reporter (Darwin M2 #2) — slot table (stage/trades/net/p-value/age), promotions/degradations, negative-control status, post do kanału via gateway. To poranny krok 9 pętli.

Tydz 2

Agent-brain harness na vLLM — Satoshi czyta experiment_propose call_template, pisze config walidowany wzgl. TRAINING-BASELINE.md (stop na odstępstwo). Zacznij od H6 regime_gate (prior 0.80, HIGHEST ROI, najtańszy do walidacji).

Tydz 2–3

DSR/PBO bramka + licznik prób w postgres. Bez tego deflacja walk-forward jest fikcją. Phase-A pre-flight guard (theory edge 224) jako krok 0 nocnej pętli.

Tydz 3

Cron nocny spinający kroki 0–9 jako resumable workflow (okna nocne, budżet eksperymentów, scheduler zasobów GPU vs inference).

Tydz 3–4

Darwin Family B funding-rate arb (HL 1h vs BN 8h, delta-neutral) + funding feed + orderbook-gate na obu nogach (BN leg dostaje depth check). Tani collector w ramach Collector Stack V3 ($70/mc już ratyfikowany).

Tydz 4–8

Akumulacja zielonych tygodni. Tylko po ≥4–8 zielonych (deflowany WF + zielony live-paper Darwin na funding-arb) agent może WYGENEROWAĆ rekomendację MICRO_LIVE [HIGH RISK] do osobnej decyzji Bartosza. Osobny milestone: kill-switch, real order path, klucze API — NIC z tego nie buduje pętla autonomicznie.