reboot: replace vision pipeline with Excel-first manual journal
Pipeline-ul vision (screenshot extraction + CSV append + Python stats) era
greoi pentru backtest semi-manual. Înlocuit cu un singur template Excel
generat din openpyxl + Dashboard cu comparație 5 strategii management pe
aceleași semnale blackbox.
- Strategii: TP0 only / TP1 only / TP2 only / Hybrid+BE / Hybrid no BE
- Input minim (12 coloane galbene); Sesiune și Zi derivate auto din Data+Ora
- Dashboard cu coloana "Cum citesc" + secțiune Glosar cu exemple concrete
- Breakdowns PER SESIUNE / STRATEGIE / INDICATOR / DIRECȚIE
- Equity curve cu 5 linii
Eliminat: m2d-extractor agent, /backtest, /batch, /m2d-log, /stats slash
commands, scripts/{append_row,pl_calc,stats,manual_log,regenerate_md,
vision_schema,calendar_parse}.py, tests/, screenshots/, data/extractions/.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
224
README.md
224
README.md
@@ -1,122 +1,144 @@
|
||||
# M2D Backtesting — Setup Proiect Claude
|
||||
# atm-backtesting
|
||||
|
||||
## 📂 Conținut
|
||||
Jurnal Excel manual pentru backtesting pe semnale blackbox (entry / SL / TP precalculate de alt trader sau de un indicator), cu comparație **5 strategii de management** side-by-side.
|
||||
|
||||
Acest ZIP conține tot ce ai nevoie pentru a configura proiectul Claude de backtesting M2D:
|
||||
## Ce face
|
||||
|
||||
| Fișier | Rol |
|
||||
Introduci datele de bază ale fiecărui trade — dată, oră, strategie, indicator, TF, direcție, SL/TP0/TP1/TP2 în %, outcome — și Excel calculează automat:
|
||||
|
||||
- **R-multiples** și **$ P&L** pentru 5 strategii paralele
|
||||
- **Dashboard**: Win Ratio, Average Win/Loss, Profit Factor, Risk:Reward, Expectancy, HWM Balance, Max Drawdown — câte un set per strategie
|
||||
- **Breakdown** per Sesiune, Strategie, Indicator, Direcție
|
||||
- **Equity curve** (5 linii — câte una per strategie)
|
||||
|
||||
Cele 5 strategii de management comparate:
|
||||
|
||||
| # | Strategie | Comportament |
|
||||
|---|---|---|
|
||||
| 1 | **TP0 only** | 100% poziție, close la TP0. Foarte conservator (bird in hand). |
|
||||
| 2 | **TP1 only** | 100% poziție, OCO la SL sau TP1, fără intervenție. |
|
||||
| 3 | **TP2 only** | 100% poziție, OCO la SL sau TP2 (let it ride). |
|
||||
| 4 | **Hybrid + BE** | 50% close la TP0, mut SL la BE, 50% close la TP1. Recomandat de trader. |
|
||||
| 5 | **Hybrid no BE** | 50% close la TP0, **fără** BE, 50% close la TP1. Compară direct cu #4 ca să vezi dacă BE-ul aduce valoare. |
|
||||
|
||||
Rezultatul: pe aceleași semnale, vezi care metodă de management produce cel mai mare expectancy, profit factor și cea mai mică drawdown.
|
||||
|
||||
### De ce 2 variante Hybrid (cu/fără BE)
|
||||
|
||||
BE move este o **regulă teoretică** de management, nu o decizie istorică pe fiecare trade. Așa că nu o marchezi manual pe rând — în schimb, ambele variante (cu și fără BE) se calculează automat pentru fiecare trade. Compari direct dacă regula BE-ului adaugă R-uri sau le scoate.
|
||||
|
||||
## Setup (o singură dată)
|
||||
|
||||
```powershell
|
||||
pip install openpyxl
|
||||
python scripts/generate_template.py
|
||||
```
|
||||
|
||||
Se generează `data/backtest.xlsx`. Deschide-l în Excel sau LibreOffice Calc.
|
||||
|
||||
## Workflow zilnic
|
||||
|
||||
1. Deschide `data/backtest.xlsx` și du-te în sheet-ul **Trades**.
|
||||
2. Adaugă un rând nou (continuă imediat sub ultimul completat — **nu lăsa goluri** între rânduri).
|
||||
3. Completează coloanele galbene (input) — restul (albastre) se calculează automat:
|
||||
- **Data**, **Ora RO** (sesiunea + ziua se derivă automat de aici)
|
||||
- **Strategie** (M2D / EMA cross / ... — dropdown, editabil în Config)
|
||||
- **Indicator** (DIA / SPY / US30 / ... — dropdown)
|
||||
- **TF** (1min / 3min / 15min — dropdown; e TF-ul de entry, vezi mai jos)
|
||||
- **Direcție** (Buy / Sell — dropdown)
|
||||
- **SL %**, **TP0 %**, **TP1 %**, **TP2 %** — distanțe față de entry, în procente (ex. 0.30 pentru 0.30%)
|
||||
- **Outcome** (SL / TP0 only / TP1 / TP2 — dropdown)
|
||||
- **Notes** (opțional)
|
||||
4. Coloanele albastre derivate (Zi, Sesiune, R_*, $_*, Bal_* pentru cele 5 strategii) se umplu automat.
|
||||
5. Mergi la sheet-ul **Dashboard** — metricile, breakdown-urile și equity curve se actualizează live.
|
||||
|
||||
### Coloana TF
|
||||
|
||||
Pentru M2D, TF-ul mic este TF-ul de entry, iar TF-ul mare e implicit:
|
||||
|
||||
| TF (input) | Perechea M2D |
|
||||
|---|---|
|
||||
| `0_SYSTEM_PROMPT.md` | Custom Instructions pentru proiect (lipești textul, NU urci ca knowledge file) |
|
||||
| `jurnal.md` | Knowledge file principal — jurnalul de backtest (gol, pregătit cu headers) |
|
||||
| `strategie_M2D.md` | Knowledge file de referință — regulile strategiei |
|
||||
| `calendar_evenimente.md` | Knowledge file de referință — events economice recurente |
|
||||
| `README.md` | Acest fișier — instrucțiuni setup |
|
||||
| 1min | 1 / 5 min |
|
||||
| 3min | 3 / 15 min |
|
||||
| 15min | 15 / 60 min |
|
||||
|
||||
---
|
||||
Dacă folosești o altă strategie cu pereche diferită, descrie în Notes.
|
||||
|
||||
## 🚀 Pași de configurare
|
||||
### Cum se calculează Sesiunea automat
|
||||
|
||||
### 1. Creează un proiect nou în Claude.ai
|
||||
- Mergi la **claude.ai** → click pe **Projects** în sidebar → **+ New Project**
|
||||
- Nume sugerat: **"M2D Backtest"**
|
||||
- Descriere (opțional): "Backtesting strategie scalping M2D pe US30/DIA prin analiză screenshot-uri TradeStation blackbox"
|
||||
Pe baza Data + Ora RO, regulile M2D (vezi `strategie_M2D.md`):
|
||||
|
||||
### 2. Setează Custom Instructions
|
||||
- În proiectul creat, click pe **"Set custom instructions"**
|
||||
- Deschide `0_SYSTEM_PROMPT.md` din acest ZIP
|
||||
- Copiază TOT textul (fără secțiunea cu titlul "# M2D Backtesting Assistant — System Instructions" dacă vrei)
|
||||
- Lipește în câmpul de Custom Instructions
|
||||
- Save
|
||||
| Sesiune | Condiție |
|
||||
|---|---|
|
||||
| **A1** | 16:35–17:00 RO, Mar/Mie/Joi |
|
||||
| **A2** | 17:00–18:00 RO, Mar/Mie/Joi (sweet spot) |
|
||||
| **A3** | 18:00–19:00 RO, Mar/Mie/Joi |
|
||||
| **B** | 22:00–22:45 RO, Mar/Mie/Joi (Power Hour) |
|
||||
| **C** | 15:30–16:30 RO (pre-NY chop / news risk), orice zi |
|
||||
| **D** | Luni sau Vineri |
|
||||
| **Other** | În afara ferestrelor de mai sus |
|
||||
|
||||
### 3. Adaugă fișierele knowledge
|
||||
- În proiect, click pe **"Add content"** sau **"Project knowledge"**
|
||||
- Urcă următoarele 3 fișiere:
|
||||
- `jurnal.md`
|
||||
- `strategie_M2D.md`
|
||||
- `calendar_evenimente.md`
|
||||
- NU urca `0_SYSTEM_PROMPT.md` (acela e doar pentru Custom Instructions)
|
||||
- NU urca acest `README.md`
|
||||
> Notă: zilele FOMC/NFP/CPI ar trebui marcate ca C, dar formula nu detectează evenimente — marchează manual în Notes dacă e zi news majoră.
|
||||
|
||||
### 4. Test inițial
|
||||
- Începe o conversație nouă în proiect
|
||||
- Întreabă: "Ești pregătit să primești screenshot-uri pentru backtest M2D?"
|
||||
- Răspunsul ar trebui să confirme că înțelege strategia și formatul jurnal
|
||||
## Configurare
|
||||
|
||||
---
|
||||
Sheet-ul **Config** permite editarea:
|
||||
|
||||
## 📋 Workflow zilnic
|
||||
- **Account Size Start ($)** — balanța inițială (default $10,000)
|
||||
- **Risk per Trade (%)** — % din account riscat per trade (default 1.0%)
|
||||
- Listele pentru dropdown-uri: Strategii, Indicatori, TF, Direcție, Outcome
|
||||
|
||||
```
|
||||
1. Deschizi un screenshot cu setup M2D din TradeStation blackbox
|
||||
2. Începi o conversație nouă (sau continui una) în proiectul Claude
|
||||
3. Atașezi screenshot-ul + scrii "Backtest"
|
||||
4. Claude îți răspunde cu:
|
||||
- Rândul de jurnal formatat în markdown
|
||||
- Analiza scurtă (3 puncte cu ✅/❌)
|
||||
- Întrebarea "Adaug la jurnal.md?"
|
||||
5. Răspunzi "da" → Claude îți dă rândul curat de copy-paste
|
||||
6. Deschizi jurnal.md local (sau de oriunde îl ții) și adaugi rândul
|
||||
7. La 20+ trade-uri: re-uploadezi jurnal.md actualizat în Project Knowledge
|
||||
La schimbarea Account Size sau Risk %, toate sumele $ din Trades și Dashboard se recalculează.
|
||||
|
||||
## Formule R-multiples (referință)
|
||||
|
||||
`SL_%`, `TP0_%`, `TP1_%`, `TP2_%` sunt distanțe pozitive față de entry, exprimate în procente.
|
||||
|
||||
Tabelul de mai jos arată R-multiple-ul rezultat pentru fiecare combinație (Outcome × Strategie):
|
||||
|
||||
| Outcome | TP0 only | TP1 only | TP2 only | Hybrid + BE | Hybrid no BE |
|
||||
|---------|----------|----------|----------|-------------|--------------|
|
||||
| **SL** | −1 | −1 | −1 | −1 | −1 |
|
||||
| **TP0 only** | +TP0/SL | −1 | −1 | +0.5·TP0/SL | +0.5·TP0/SL − 0.5 |
|
||||
| **TP1** | +TP0/SL | +TP1/SL | −1 | +0.5·(TP0+TP1)/SL | +0.5·(TP0+TP1)/SL |
|
||||
| **TP2** | +TP0/SL | +TP1/SL | +TP2/SL | +0.5·(TP0+TP1)/SL | +0.5·(TP0+TP1)/SL |
|
||||
|
||||
**Citirea Outcome-ului**:
|
||||
- `SL` — prețul a atins SL fără să atingă vreodată TP0 (loss complet).
|
||||
- `TP0 only` — prețul a atins TP0, dar nu și TP1 (ulterior fie a venit înapoi la SL, fie a fost închis la BE pentru variantele cu BE move).
|
||||
- `TP1` — prețul a atins TP1 (a trecut prin TP0).
|
||||
- `TP2` — prețul a atins TP2 (a trecut prin TP0 și TP1).
|
||||
|
||||
**Asumpții de simulare**:
|
||||
- `TP1 only` și `TP2 only` simulează OCO pur, fără intervenție manuală. Outcome=`TP0 only` se închide la SL (presupunere worst-case).
|
||||
- `TP2 only` cu Outcome=`TP1` se închide la SL (TP1 a fost atins, dar SL ar fi venit înainte de TP2).
|
||||
- Diferența dintre Hybrid + BE și Hybrid no BE apare doar când Outcome=`TP0 only`; la TP1/TP2 ambele dau identic.
|
||||
|
||||
## Regenerare template
|
||||
|
||||
Dacă strici structura Excel-ului accidental sau modifici `scripts/generate_template.py`:
|
||||
|
||||
```powershell
|
||||
python scripts/generate_template.py
|
||||
```
|
||||
|
||||
---
|
||||
Atenție: **suprascrie** `data/backtest.xlsx`. Fă backup la rândurile tale înainte (copy-paste într-un alt fișier sau export CSV).
|
||||
|
||||
## 🔄 Sincronizare jurnal
|
||||
## Decizii GO LIVE / ABANDON
|
||||
|
||||
Claude vede doar versiunea de `jurnal.md` care e în Project Knowledge. Deci:
|
||||
Vezi `STOPPING_RULE.md` — threshold-urile semnate (N≥40, WR≥55%, Expectancy≥+0.20R) și caveat-urile metodologice.
|
||||
|
||||
- **După fiecare câteva trade-uri** (ex: 5-10): re-uploadează `jurnal.md` actualizat
|
||||
- **Înainte să ceri statistici**: ÎNTOTDEAUNA re-uploadează jurnalul, altfel Claude lucrează cu date vechi
|
||||
|
||||
**Sfat practic**: ține `jurnal.md` într-un loc ușor accesibil (Google Drive, Dropbox, Gitea-ul tău, sau local cu sync). Mai ușor de updatat.
|
||||
|
||||
---
|
||||
|
||||
## 📊 Cereri tipice pe care le poți face
|
||||
|
||||
După ce ai 20+ trade-uri în jurnal:
|
||||
## Fișiere
|
||||
|
||||
```
|
||||
"Dă-mi statisticile complete: WR pe Set, hit distribution, WR per calitate retragere"
|
||||
atm-backtesting/
|
||||
├── data/
|
||||
│ └── backtest.xlsx # source of truth — jurnalul tău
|
||||
├── scripts/
|
||||
│ └── generate_template.py # regenerator template
|
||||
├── strategie_M2D.md # referință reguli M2D (Buy/Sell setup, SL/TP, sesiuni)
|
||||
├── calendar_evenimente.yaml # calendar news (FOMC/NFP/CPI etc.) pentru identificare manuală sesiune
|
||||
├── STOPPING_RULE.md # threshold-uri decizie + caveats semnate
|
||||
├── pyproject.toml # dependență: openpyxl
|
||||
└── README.md # acest fișier
|
||||
```
|
||||
|
||||
```
|
||||
"Care e Set-ul cu cel mai mare expectancy? Și cel mai prost?"
|
||||
```
|
||||
|
||||
```
|
||||
"Pe ultimele 30 trade-uri, ce procent au fost cu calitate retragere Slabă?
|
||||
Au influențat negativ WR-ul?"
|
||||
```
|
||||
|
||||
```
|
||||
"Compară performanța pe DIA vs US30"
|
||||
```
|
||||
|
||||
```
|
||||
"Sunt câteva trade-uri Set C (news days). Dacă le exclud, cum se schimbă WR-ul global?"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Limitări de știut
|
||||
|
||||
1. **Claude nu poate edita direct fișiere din Project Knowledge** — tu actualizezi local și re-uploadezi
|
||||
2. **Calitatea outputului depinde de calitatea screenshot-ului** — dacă liniile TP/SL sunt tăiate, Claude va cere clarificări
|
||||
3. **Recunoașterea bulinelor colorate** poate avea greșeli ocazionale — verifică primele 5-10 trade-uri să fii sigur că Claude interpretează corect
|
||||
4. **Pentru trade-uri ambigue** (semnal neclar, multiple posibilități), Claude îți cere confirmare în loc să presupună
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Obiectiv backtest
|
||||
|
||||
- **Pragul minim de date**: 50 trade-uri pentru concluzii inițiale
|
||||
- **Pragul de încredere**: 200+ trade-uri pentru statistici robuste
|
||||
- **Întrebări la care vrei să răspunzi**:
|
||||
- Care Set are cel mai mare expectancy?
|
||||
- WR > 55% pe Set A2 (sweet spot)?
|
||||
- Filtrul de calitate retragere are impact real?
|
||||
- News days chiar trebuie excluse?
|
||||
- DIA sau US30 e mai bun pentru M2D?
|
||||
|
||||
Mult succes la backtest! 🚀
|
||||
|
||||
Reference in New Issue
Block a user