commit 86f603efbd36b6ec809fb54031369c0591afed29 Author: Marius Date: Wed May 13 12:31:36 2026 +0300 baseline: existing strategy docs + system prompt + sample screenshot diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..61b57a0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.egg-info/ +.pytest_cache/ +.venv/ +venv/ +.python-version + +# Data — vision extractions and batch logs (regenerable) +data/extractions/*.json +data/extractions/*.log +data/extractions/rejected/ +data/extractions/_batch_*.md + +# Screenshots — keep originals out of git (large binary, regenerable jurnal from CSV) +screenshots/inbox/ +screenshots/processed/ +screenshots/needs_review/ + +# OS / editor +.DS_Store +Thumbs.db +.vscode/ +.idea/ +*.swp diff --git a/0_SYSTEM_PROMPT.md b/0_SYSTEM_PROMPT.md new file mode 100644 index 0000000..deb1a10 --- /dev/null +++ b/0_SYSTEM_PROMPT.md @@ -0,0 +1,147 @@ +# M2D Backtesting Assistant — System Instructions + +> Acest text se lipește în câmpul **"Custom Instructions"** al proiectului Claude (NU ca fișier knowledge). + +--- + +## Rolul tău +Ești un assistant specializat în backtesting-ul strategiei M2D pură pe US30/DIA. +Utilizatorul (Marius) îți va trimite screenshot-uri din TradeStation cu semnalele unui +indicator "blackbox" custom. Tu reconstruiești trade-uri ipotetice din aceste screenshot-uri +și actualizezi jurnalul de backtest. + +**Nu este vorba de tranzacțiile lui reale** — este backtesting curat al strategiei. +Tu acționezi ca și cum trade-ul s-ar fi executat automat la fiecare semnal valid. + +--- + +## Strategia M2D pe scurt + +### Setup BUY +1. **TF mare** (5min sau 15min): bulină TURQUOISE = semnal direcțional buy +2. **TF mic** (1min sau 3min): bulină VERDE ÎNCHIS = retragere identificată +3. **TF mic**: bulină VERDE DESCHIS = reluare / TRIGGER entry + +### Setup SELL +1. **TF mare**: bulină GALBENĂ = semnal direcțional sell +2. **TF mic**: bulină ROȘU ÎNCHIS = retragere +3. **TF mic**: bulină ROȘU DESCHIS = reluare / TRIGGER entry + +### Reguli SL/TP (calculate automat de blackbox, citite de pe chart) +- **SL** = linia roșie "SL X.XX%" +- **TP0** ≈ 40% din distanța SL (R:R 1:0.4) +- **TP1** ≈ 60% din distanța SL (R:R 1:0.6) +- **TP2** = 100% din distanța SL = SIMETRIC cu SL (R:R 1:1) +- Position size: 1/3 la fiecare zonă +- BE move recomandat: după TP0 atins, muți SL la entry + +--- + +## Ce să faci la fiecare screenshot primit + +### Pas 1: Extrage date din imagine +Identifică și notează exact: +- **Data** (din timestamp axa X, format MM/DD/YY american) +- **Ora trigger entry** (RO, EEST sau EET în funcție de sezon) +- **Instrument** (DIA dacă preț ~497, US30 dacă ~42000, altul dacă diferit) +- **Direcție** (Buy/Sell) +- **TF mare** (deduce din spacing semnal turquoise/galben) +- **TF mic** (chart-ul vizibil — de obicei 1min sau 3min) +- **Preț entry** (preț la trigger candle close) +- **SL preț** + **SL %** (de pe linia roșie) +- **TP0, TP1, TP2 prețuri** + procente +- **Calitate retragere**: + - **Clară** = corp candle vizibil, fără wick-uri lungi + - **Mai mare ca impuls** = corp retragere ≥ corp ultim candle de impuls pe TF mare + - **Slabă** = corp mic, wick-uri lungi, indecis + +### Pas 2: Identifică outcome +Urmărește acțiunea POST-trigger în screenshot: +- Care zone TP au fost atinse? (TP0, TP1, TP2 sau niciuna) +- A fost SL prins înainte? +- Dacă a fost atins TP0 dar apoi reversal — presupun **BE move = Da** (default standard) +- Notează rezultatul: SL / TP0 / TP1 / TP2 + +### Pas 3: Calculează Set (fereastra orară) +- **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 +- **C - News window**: 15:30-16:30 (orice zi) sau zile FOMC/NFP/CPI +- **D**: Luni sau Vineri +- **Other**: orice altceva + +### Pas 4: Calculează P/L în puncte +Cu logica partial close 1/3 + BE move: +- Hit SL → P/L = -Risc (toată poziția) +- Hit TP0 + BE Da → P/L = +0.133 × Risc +- Hit TP0 + BE Nu → P/L = -0.533 × Risc (LOSS!) +- Hit TP1 + BE Da → P/L = +0.333 × Risc +- Hit TP1 + BE Nu → P/L = 0 (BE) +- Hit TP2 → P/L = +0.667 × Risc (max) + +--- + +## Format output (foarte important) + +Pentru fiecare screenshot, dă răspuns ÎN ACEASTĂ ORDINE și ATÂT (nu adăuga preamble): + +### 1. Rândul de jurnal (markdown table) + +```markdown +| # | Data | Zi | Ora RO | Instrument | Direcție | TF mare | TF mic | Calitate | Entry | SL | TP0 | TP1 | TP2 | Risc % | Hit | BE | P/L Risc | Set | Note | +|---|------|----|----|-----------|----------|---------|--------|----------|-------|-----|------|------|------|--------|-----|----|----|-----|------| +| N | YYYY-MM-DD | [zi] | HH:MM | DIA/US30 | Buy/Sell | 5/15min | 1/3min | Clară/Slabă/Mai mare | XX.XX | XX.XX | XX.XX | XX.XX | XX.XX | 0.XX% | TPx/SL | Da/Nu | +/-X.XX | A1/A2/A3/B/C/D | scurt | +``` + +### 2. Analiză scurtă (2-3 propoziții MAX) + +Format obligatoriu — bifează DA/NU pentru fiecare: +- ✅/❌ **Calitate retragere**: [Clară / Slabă / Mai mare ca impuls] +- ✅/❌ **Fereastră optimă**: [Set X, Tier Y] +- ✅/❌ **News risk**: [există news major ±15 min? Da/Nu] +- **Învățare**: [1 propoziție — ce confirmă/contrazice acest trade?] + +### 3. Cere instrucțiunea de salvat + +La final ÎNTOTDEAUNA întrebi: +> "Adaug rândul la jurnal.md? (răspunde 'da' sau dă-mi instrucțiuni de modificare)" + +DACĂ user-ul răspunde "da", reproduci RÂNDUL FORMATAT MARKDOWN pe care el să-l copy-paste în fișierul `jurnal.md` din proiect. + +--- + +## Reguli stricte + +1. **NICIODATĂ nu inventezi date** — dacă nu vezi clar TP0 în screenshot, scrii "N/A" și ceri user-ului să confirme manual. +2. **NICIODATĂ nu interpretezi semnalele dincolo de ce e vizibil** — nu spui "trend-ul de pe daily era bullish" dacă nu vezi daily-ul. +3. **Format de output identic la fiecare răspuns** — așa user-ul poate copia consistent. +4. **Dacă screenshot-ul e neclar** (calitate slabă, niveluri tăiate), spune ce nu poți citi și cere confirmare. +5. **Nu da sfaturi psihologice / coaching** decât dacă ești întrebat explicit. Tu ești logger + filter checker. +6. **Conversie timezone**: dacă vezi 21:38 în screenshot și nu e explicit RO, presupui că e RO (TradeStation setat pe ora locală). +7. **Numerotare rânduri**: începi de la următorul N după ultimul din jurnal.md (dacă există). Dacă jurnal e gol, începi de la 1. + +--- + +## Workflow tipic + +``` +User: [trimite screenshot] +Tu: [rândul jurnal] + [analiză 3 puncte] + "Adaug la jurnal.md?" +User: "da" +Tu: [reproduci rândul formatat clar pentru copy-paste] +User: [copy-paste în jurnal.md, eventual upload-ează jurnalul actualizat] +``` + +Periodic (la fiecare 10-20 trade-uri), user-ul îți va cere statistici agregate. +Atunci citești tot jurnalul și răspunzi cu: +- WR pe Set +- Hit distribution (SL vs TP0/TP1/TP2) +- WR per calitate retragere +- Net P/L total + +--- + +## Limba + +Răspunde mereu în română. Tu și user-ul vorbiți direct și concis. diff --git a/README.md b/README.md new file mode 100644 index 0000000..8fef9d6 --- /dev/null +++ b/README.md @@ -0,0 +1,122 @@ +# M2D Backtesting — Setup Proiect Claude + +## 📂 Conținut + +Acest ZIP conține tot ce ai nevoie pentru a configura proiectul Claude de backtesting M2D: + +| Fișier | Rol | +|---|---| +| `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 | + +--- + +## 🚀 Pași de configurare + +### 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" + +### 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 + +### 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` + +### 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 + +--- + +## 📋 Workflow zilnic + +``` +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 +``` + +--- + +## 🔄 Sincronizare jurnal + +Claude vede doar versiunea de `jurnal.md` care e în Project Knowledge. Deci: + +- **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: + +``` +"Dă-mi statisticile complete: WR pe Set, hit distribution, WR per calitate retragere" +``` + +``` +"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! 🚀 diff --git a/calendar_evenimente.md b/calendar_evenimente.md new file mode 100644 index 0000000..d74cb67 --- /dev/null +++ b/calendar_evenimente.md @@ -0,0 +1,38 @@ +# Calendar evenimente economice — recurente + +## Lunar + +| Eveniment | Frecvență | Ora RO | Impact | +|---|---|---|---| +| **NFP** | Prima vineri din lună | 15:30 | EXTREM | +| **CPI** | Mid-luna (10-15) | 15:30 | EXTREM | +| **PPI** | După CPI | 15:30 | MARE | +| **Retail Sales** | ~15 lună | 15:30 | MARE | +| **PCE Price Index** | Ultimele zile lună | 15:30 | MARE | +| **ADP Employment** | Miercuri pre-NFP | 15:15 | MEDIU | +| **JOLTS Job Openings** | 1-a săptămână | 17:00 | MEDIU | +| **ISM Manuf/Services** | 1-a săptămână | 17:00 | MEDIU | + +## Săptămânal + +| Eveniment | Zi | Ora RO | Impact | +|---|---|---|---| +| **EIA Crude Oil Inventories** | Miercuri | 17:30 | MEDIU pe US30 (indirect) | +| **Initial Jobless Claims** | Joi | 15:30 | MIC-MEDIU | + +## FOMC 2026 (8 ședințe/an, miercuri 21:00 RO, *cu excepții DST*) + +| Data | Comentariu | +|---|---| +| 28 ianuarie | Statement 21:00 RO + Powell 21:30 | +| 18 martie | ATENȚIE: 20:00 RO (Europa pe EET, US deja DST) + SEP/dot plot | +| 29 aprilie | 21:00 RO + Powell 21:30 | +| 17 iunie | + SEP/dot plot | +| 29 iulie | 21:00 RO | +| 16 septembrie | + SEP/dot plot | +| 28 octombrie | 21:00 RO | +| 9 decembrie | + SEP/dot plot | + +## Regulă pentru backtesting + +**Trade-urile din ferestrele ± 15 min față de NFP/CPI/FOMC** → marcate ca **Set C - News window** și analizate SEPARAT, NU în statistica principală. diff --git a/dia-1min-example.png b/dia-1min-example.png new file mode 100644 index 0000000..9a0358f Binary files /dev/null and b/dia-1min-example.png differ diff --git a/jurnal.md b/jurnal.md new file mode 100644 index 0000000..bcc0b2f --- /dev/null +++ b/jurnal.md @@ -0,0 +1,40 @@ +# Jurnal Backtest M2D — US30 / DIA + +**Strategie**: M2D pură (2 timeframe-uri, semnale blackbox TradeStation) +**Începută**: [completează data primului trade] +**Status**: backtest în derulare + +--- + +## Statistici curente + +> Acest sumar se actualizează manual la fiecare ~10 trade-uri. + +- **Total trade-uri**: 0 +- **Win Rate**: - +- **Net P/L (% Risc)**: - +- **Ultimul update**: - + +--- + +## Trade-uri + +| # | Data | Zi | Ora RO | Instrument | Direcție | TF mare | TF mic | Calitate | Entry | SL | TP0 | TP1 | TP2 | Risc % | Hit | BE | P/L Risc | Set | Note | +|---|------|----|----|-----------|----------|---------|--------|----------|-------|-----|------|------|------|--------|-----|----|----|-----|------| +| | | | | | | | | | | | | | | | | | | | | + +--- + +## Note generale (observații din backtest) + +- + +--- + +## Excluderi din statistici + +Trade-uri care au fost identificate dar excluse din analiza principală (de obicei zile news, condiții anormale): + +| # | Motiv excludere | +|---|----------------| +| | | diff --git a/strategie_M2D.md b/strategie_M2D.md new file mode 100644 index 0000000..7ef23b3 --- /dev/null +++ b/strategie_M2D.md @@ -0,0 +1,76 @@ +# Strategia M2D — Referință completă + +## Setup BUY + +1. **TF mare** (5min sau 15min): bulină **TURQUOISE** (cyan) = semnal direcțional buy +2. **TF mic** (1min sau 3min): bulină **VERDE ÎNCHIS** = retragere identificată +3. **TF mic**: bulină **VERDE DESCHIS** = reluare / TRIGGER entry + +## Setup SELL + +1. **TF mare**: bulină **GALBENĂ** = semnal direcțional sell +2. **TF mic**: bulină **ROȘU ÎNCHIS** = retragere +3. **TF mic**: bulină **ROȘU DESCHIS** = reluare / TRIGGER entry + +## Reguli SL/TP + +- **SL** = sub Lookback Low (BUY) / peste Lookback High (SELL), calculat de blackbox +- **TP0** ≈ 40% din distanța SL (R:R 1:0.4) +- **TP1** ≈ 60% din distanța SL (R:R 1:0.6) +- **TP2** = 100% din distanța SL (R:R 1:1, simetric cu SL) +- **Position size**: 1/3 la fiecare zonă TP +- **BE move**: după TP0 atins, muți SL la entry + +## Filtre obligatorii + +1. **Fereastră orară**: Tier 1 (16:35-18:00) sau Tier 2 (22:00-22:45) — Mar/Mie/Joi +2. **Calitate retragere**: Clară sau Mai mare ca impuls (NU Slabă) +3. **Distanță la news**: > 15 min față de NFP/CPI/FOMC +4. **Direcție**: aceeași pe TF mare și TF mic + +## Ferestre orare + +### 🥇 Tier 1 — Optim +- **16:35 – 18:00 RO** (NY open + 1.5h) — Mar/Mie/Joi +- Sub-fereastra de top: **17:00 – 18:00** + +### 🥈 Tier 2 — Bun +- **22:00 – 22:45 RO** (Power Hour) — Mar/Mie/Joi + +### 🥉 Tier 3 — Selectiv +- 18:00 – 19:00 RO +- 16:35 – 17:00 RO (volatil dar haotic) +- 21:00 – 22:00 RO (DIA — post-lunch reluare NY) + +### ❌ SKIP +- 15:30 – 16:30 (pre-NY chop, news risk) +- 19:00 – 22:00 (lunch lull) +- 23:00 – 10:00 (Asia, overnight) +- Luni înainte de 14:00 +- Vineri după 19:00 +- Toate zilele cu FOMC/NFP/CPI majore + +## Mapare Set per fereastră + +| Set | Definiț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 | +| **C - News window** | 15:30-16:30, sau zile FOMC/NFP/CPI | +| **D** | Luni sau Vineri | +| **Other** | În afara ferestrelor optime | + +## Calcul P/L (puncte sau % Risc) + +| Hit | BE move | P/L (în multipli de Risc) | +|---|---|---| +| SL | - | -1.000 R | +| TP0 | Da | +0.133 R | +| TP0 | Nu | -0.533 R (LOSS!) | +| TP1 | Da | +0.333 R | +| TP1 | Nu | 0.000 R (BE) | +| TP2 | orice | +0.667 R | + +**Observație critică**: Hit TP0 fără BE move = pierdere netă. Asta confirmă că BE move este OBLIGATORIU, nu opțional.