commands: stats.md + batch.md aligned to canonical spec (Romanian, STOPPING_RULE highlight, _batch summary format)
This commit is contained in:
@@ -1,42 +1,57 @@
|
||||
---
|
||||
description: Show backtest statistics for data/jurnal.csv (overall, per-Set, per-calitate, per-instrument with Wilson + bootstrap CIs). --calibration shows P4 mismatch report.
|
||||
argument-hint: "[--calibration] [--seed N]"
|
||||
description: Afișează statistici WR / expectancy / per Set (din data/jurnal.csv). Cu --calibration arată raport P4.
|
||||
argument-hint: "[--calibration] [--overlay pl_marius|pl_theoretical] [--seed N]"
|
||||
---
|
||||
|
||||
# /stats — backtest statistics
|
||||
|
||||
Rulează `scripts/stats.py` și afișează raportul.
|
||||
Wrapper read-only peste `scripts/stats.py`. Afișează raportul stat ca atare; eventual adăugă highlight la final dacă observi un Set care îndeplinește pragul STOPPING_RULE.
|
||||
|
||||
## Arguments
|
||||
|
||||
- `--calibration` (flag) — afișează raportul P4 (mismatch field-by-field pe perechi `manual_calibration` ↔ `vision_calibration` join-uite pe `screenshot_file`).
|
||||
- `--seed N` (opțional) — seed pentru bootstrap RNG (default fără seed → output ne-determinist între run-uri). Folosește când vrei reproducibilitate.
|
||||
- `--overlay pl_marius|pl_theoretical` (opțional, default `pl_marius`) — care P/L overlay folosește.
|
||||
- `--seed N` (opțional) — seed pentru bootstrap RNG. Folosește pentru reproducibilitate.
|
||||
|
||||
Default (fără flag-uri): backtest stats — overall + per-Set + per-calitate + per-instrument WR, expectancy, Wilson 95% CI pe WR, bootstrap 95% CI pe expectancy.
|
||||
Default (fără flag-uri): backtest stats — overall + per-Set + per-calitate + per-instrument WR, expectancy, Wilson 95% CI pe WR, bootstrap 95% CI pe expectancy, pe overlay `pl_marius`.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Construiește comanda:
|
||||
1. **Parse `$ARGUMENTS`** și pasează-le direct prin:
|
||||
|
||||
```bash
|
||||
python scripts/stats.py [--calibration] [--seed N]
|
||||
python -m scripts.stats $ARGUMENTS
|
||||
```
|
||||
|
||||
`--csv data/jurnal.csv` e default-ul scriptului — nu îl pasezi.
|
||||
`--csv data/jurnal.csv` e default-ul scriptului; nu îl pasezi.
|
||||
|
||||
2. Rulează prin Bash tool. Output-ul vine pe stdout în UTF-8.
|
||||
2. Rulează prin Bash. Output-ul vine pe stdout în UTF-8.
|
||||
|
||||
3. Afișează output-ul **as-is** către user. Nu reformata, nu re-rezuma, nu interpreta. Scriptul are deja format ales (tabel + secțiuni text).
|
||||
3. **Afișează output-ul as-is** către user. NU reformata, NU re-rezuma, NU inventa numere. Scriptul are deja format ales (tabele + secțiuni text).
|
||||
|
||||
4. **Interpretare** scurtă (max 3 propoziții) DACĂ user-ul cere explicit sau dacă observi ceva ce merită menționat:
|
||||
- În modul backtest: Set-uri cu N ≥ 40 și Wilson lower bound > 50% → candidat pentru GO LIVE (vezi `STOPPING_RULE.md`).
|
||||
- În modul `--calibration`: dacă există ≥10 perechi și mismatch rate > 10% pe câmpuri core (`entry/sl/tp0/1/2/outcome_path/max_reached/directie`) → P4 FAIL, vision agent are nevoie de fix (`.claude/agents/m2d-extractor.md`).
|
||||
4. **Highlight STOPPING_RULE** la final, DOAR dacă observi în output un Set care îndeplinește toate cele 3 thresholds din `STOPPING_RULE.md`:
|
||||
- `N ≥ 40` trade-uri non-pending pe acel Set
|
||||
- `WR ≥ 55%` cu Wilson 95% CI lower bound ≥ 45%
|
||||
- `Expectancy ≥ +0.20R` pe overlay `pl_marius`
|
||||
|
||||
5. NU edita CSV. NU regenera MD (citire pură).
|
||||
Dacă DA pe vreun Set:
|
||||
|
||||
```
|
||||
🚀 STOPPING RULE: Set <X> îndeplinește pragurile (N=<n>, WR=<wr>, Wilson_LB=<lb>, E=<exp>R). Discută cu user dacă pornește forward paper trading la 0.25R per trade pe acest Set.
|
||||
```
|
||||
|
||||
Dacă **niciun Set** nu îndeplinește toate: nu adăuga highlight. Lasă raportul scriptului să vorbească.
|
||||
|
||||
5. **Highlight calibration P4** (în modul `--calibration`):
|
||||
- Dacă perechi `(manual_calibration, vision_calibration)` < 10 → adăugă: `Insuficient pentru P4 — continuă să acumulezi calibrare (minim 10 perechi).`
|
||||
- Dacă ≥ 10 perechi și mismatch rate > 10% pe câmpuri core (`entry/sl/tp0/tp1/tp2/outcome_path/max_reached/directie`) → adăugă: `⚠️ P4 FAIL: mismatch > 10% pe câmpuri core. Fix promptul vision agent (.claude/agents/m2d-extractor.md) și re-rulează calibrarea.`
|
||||
- Dacă ≥ 10 perechi și mismatch ≤ 10% → adăugă: `✅ P4 PASS: mismatch ≤ 10% pe câmpuri core.`
|
||||
|
||||
6. NU edita CSV. NU regenera MD. Citire pură.
|
||||
|
||||
## Reguli
|
||||
|
||||
- Read-only. Această comandă nu scrie nimic.
|
||||
- Output-ul scriptului e ground truth — nu inventezi numere.
|
||||
- `calitate` e descriptor biased (post-outcome) — vezi `STOPPING_RULE.md` §3 — raportul îl afișează informational only. NU sugerezi user-ului să folosească `calitate` ca filtru pentru GO LIVE.
|
||||
- Pentru calibration P4: minimum 10 perechi pentru ca verdictul să aibă sens. Sub 10 perechi → raportezi "insuficient pentru P4 — continuă să acumulezi calibrare".
|
||||
- Output-ul scriptului e ground truth — nu inventezi numere; doar le citești și aplici regulile STOPPING_RULE.
|
||||
- `calitate` e descriptor biased post-outcome (vezi `STOPPING_RULE.md` §3) — raportul îl afișează informational only. NU sugera user-ului să folosească `calitate` ca filtru pentru GO LIVE.
|
||||
- Highlight-ul `🚀 STOPPING RULE` e doar trigger pentru discuție; decizia GO LIVE rămâne a user-ului, cu caveats-urile semnate în `STOPPING_RULE.md`.
|
||||
|
||||
Reference in New Issue
Block a user