În acest articol
După lectură vei putea să…
- Separi lista extrasă de rezultatele executate înaintea opririi.
- Măsori drawdownul fiecărui traseu cu starea inițială inclusă.
- Demonstrezi efectul păstrării sau ruperii perechii rezultat–conversie în RON.
Explicații ale termenilor în articol
Backtesting: testare pe date istorice Scădere de la maxim (drawdown) Plan de tranzacționare Valoare așteptată a rezultatului Dimensiunea pozițieiUn backtest arată un traseu realizat, iar simularea explorează trasee generate din ipoteze declarate. Dimensionarea poziției, ordinea și reeșantionarea rezultatelor pot schimba substanțial drawdownul. Estimarea este condiționată de model: nu reprezintă probabilitate verificată a ruinării unui cont live nespecificat. Verifică întâi un traseu calculabil manual, apoi interpretarea distribuției.
Ce este simularea Monte Carlo a strategiei?
Monte Carlo folosește extrageri aleatorii repetate din model specificat. Amestecarea unei liste fixe de rezultate monetare schimbă traseul, dar păstrează suma; extragerea cu înlocuire poate schimba ambele. Modelul parametric cu victorii și pierderi independente, de sume atribuite, definește altă distribuție. Declară procedeul și felul în care volumul actualizează capitalul.
În model fictiv cu rezultate monetare fixe, capitalul inițial 1.000 și +200,−100,−100 produc 1.000→1.200→1.100→1.000. Drawdown maxim: 200/1.200≈16,67%. Ordinea −100,−100,+200 produce 1.000→900→800→1.000, drawdown 20%. Finalul este identic. Include capitalul inițial între maxime; omiterea lui subestimează traseul care începe cu pierderi.
Pragul de oprire poate schimba rezultatul final al permutării
Fără oprire, lista +300,−150,−150 USD are sumă zero. Adăugăm regula: după fiecare rezultat complet, oprește dacă rămâne capital≤850 USD. Pornim de la 1.000 USD, fără reinvestire ori fluxuri; rezultatele sunt nete și fictive. Pragul este regulă de exercițiu, fără recomandare financiară.
Permutări oprite la pragul capitalului
Pe un ecran mic, derulează diagrama orizontal sau mărește-o. Explicația este disponibilă și în text.
A execută +300,−150,−150, terminând la 1.000. B execută prima pierdere −150, ajunge la 850 și omite restul. Python random.shuffle amestecă secvența existentă; condiția de oprire este partea separată a modelului nostru. Distinge lista extrasă de lista efectiv executată. Restricția de capital, volumul variabil și oprirea nu se reproduc prin simpla adunare a tuturor rezultatelor. Două trasee nu definesc probabilități.
La ce întrebări răspunde modelul definit?
Poți estima drawdownuri maxime, treceri ale pragului și rezultate terminale. Calculează întâi drawdownul fiecărui traseu complet, apoi percentila distribuției maximelor. Banda percentilă a capitalului la fiecare pas nu este un traseu executat. Declară convenția cuantilei: interpolarea și distribuția discretă schimbă proporția observațiilor de sub prag. Niciuna nu garantează limita pierderii viitoare.
Modelul fictiv cu 200 de tranzacții independente, probabilitate de câștig 0,55, câștig 100 EUR și pierdere 80 EUR are medie 19 EUR/tranzacție, total mediu 3.800 EUR. Dacă K este numărul câștigurilor, profitul terminal este 180K−16.000 EUR. Cuantila binomială exactă, cel mai mic K cu probabilitate cumulată cel puțin egală cu nivelul, dă 920 EUR la 1%, 1.640 la 5%, 3.800 la 50% și 5.960 la 95%. Sunt valori calculate ale distribuției atribuite, fără experiment observat. O simulare finită variază în jurul modelului.
Cum construiești exercițiul în Excel?
Păstrăm sintaxa Excel engleză: A1=0.55, A2=100, A3=−80, A4=10,000 ca valori numerice, respectiv probabilitate, două rezultate nete fixe și capital inițial fictiv. Localizarea numelor și separatorilor depinde de setări. Rândul 1 este starea înaintea tranzacției: C1 conține =$A$4, D1 =C1, E1 valoarea zero.
În B2 scrie =IF(RAND()<$A$1,$A$2,$A$3), în C2 =C1+B2, în D2 =MAX(D1,C2), în E2 =(D2-C2)/D2. Referințele absolute păstrează parametrii. Copiază B2:E2 până la rândul 201 pentru exact 200 de tranzacții. Capitalul terminal este C201; drawdown maxim =MAX(E1:E201). Orizontul este 200 de tranzacții, fără echivalare obligatorie cu anul calendaristic. Reguli de oprire, marjă și insolvență necesită implementare separată.
Pentru alt traseu copiază întregul bloc B:E cu rândul inițial și referințele $A$ păstrate. Separă percentilele capitalului terminal de percentilele drawdownurilor maxime. =PERCENTILE.INC(range,0.95) privește coada superioară a drawdownului pozitiv; pentru coada inferioară a capitalului folosești 0.05 ori 0.01. Funcția poate interpola. RAND se recalculează odată cu foaia: păstrează valorile extrase și ipotezele experimentului evaluat.
Cum folosești bootstrap în Python?
Python simplifică reeșantionarea și analiza, dar și Excel poate extrage valori istorice cu formule adecvate. Bootstrap extrage din rezultate înregistrate, fără să se limiteze la victoria și pierderea fixe presupuse. Ambele instrumente cer alegerea dependenței, volumului, costurilor și istoricului.
Pentru istoric monetar net nenul ca lungime, NumPy Generator poate extrage new_sequence = rng.choice(history,size=200,replace=True). Include starea inițială: equity = np.concatenate(([initial_capital], initial_capital + np.cumsum(new_sequence))). Calculează maximele succesive și drawdownurile fiecărui traseu înaintea sumarului. Păstrează datele, seedul, versiunea bibliotecii, orizontul, costurile și opririle. Mai multe trasee reduc zgomotul numeric, fără observații noi despre piață.
Comparația controlată poate folosi aceleași extrageri U uniforme. Rezultatul este +1 când U se află sub prag, altfel −1; A=0,55 și B=0,60 sunt ipoteze. Mediile sunt 0,10 și 0,20, diferența așteptată B−A=0,10. Cu același U, diferența este +2 numai la 0,55≤U<0,60, altfel zero; varianța 4×0,05−0,10²=0,19. Cu extrageri independente, varianțele se adună: 0,99+0,96=1,95. Construcția reduce zgomotul comparației, fără să reducă incertitudinea probabilității pieței; nu ajută obligatoriu orice strategie.
Reeșantionarea tranzacțiilor individuale cu înlocuire păstrează valorile observate, dar rupe ordinea și nu păstrează gruparea pierderilor. Nu generează eveniment de coadă absent. Dacă dependența contează, examinează blocuri și scenarii de stres, recunoscând limitele istoricului. Rezultatele monetare fixe și riscul recalculat din equity variabil sunt experimente diferite.
Model RON: păstrează asocierea rezultatului cu conversia
Definim două stări fictive echiprobabile: câștig 20 USD la conversie 5 RON/USD, respectiv pierdere 10 USD la conversie 4 RON/USD. Costul separat este 4 RON/tranzacție în ambele. Rezultatele nete sunt 96 și −44 RON, medie 26 RON. Sunt ipoteze comune rezultat–curs, fără probabilități estimate din piață.
Dacă extragi independent rezultatul USD și cursul din aceleași două liste, apar patru combinații echiprobabile: 96,76,−54,−44 RON după cost. Media devine 18,50 RON. Marginalele sunt aceleași, dar modelul a pierdut asocierea și media diferă cu 7,50 RON. Extrage starea pereche ori rezultatul net RON când acesta corespunde întrebării. Dacă vrei independență, declar-o drept altă ipoteză; nu o prezenta ca simplă implementare echivalentă.
Perechile dau medie 26 RON; patru combinații independente dau 18,50 RON. Diferența 7,50 RON provine din alt model al dependenței, fără rezultat de piață.
Pe un ecran mic poți derula diagrama orizontal sau o poți mări. Valorile și concluzia apar și în textul de mai jos.
- Stări păstrate împreună
- 96,−44 RON – Medie 26 RON; două stări echiprobabile.
- Rezultat și curs independente
- 96,76,−54,−44 RON – Medie 18,50 RON; patru combinații echiprobabile.
- Diferența mediilor
- 7,50 RON – Aceleași marginale nu stabilesc aceeași distribuție comună.
Ce nu demonstrează Monte Carlo?
Modelul independent cu probabilitate fixă presupune stabilitate și independență. Metoda Monte Carlo poate include dependență sau regimuri variabile; dificultatea este specificarea și validarea lor. Compară comportamentul cu istoricul și stresează separat condiții plauzibile din afara lui, expuneri suprapuse și lipsuri de execuție.
Analiza walk-forward organizează perioade succesive de dezvoltare și evaluare, fără detectarea automată a degradării avantajului sau transformarea datelor deja văzute în test nou. Percentila simulată nu este plafon garantat ori prag probabilistic demonstrat pentru drawdownul live.
Definește pragul eșecului înaintea studiului. Testează costuri, filluri lipsă, goluri și opriri. Modelul ideal care pierde exact 5% din capitalul curent la fiecare pierdere lasă capital inițial×0,95n, pozitiv pentru n finit. Pragul practic, marja minimă sau pierderea mai mare schimbă modelul; pozitiv matematic nu înseamnă cont tranzacționabil. Consultă materialele despre administrarea riscului.
Ce verifici înaintea simulării mari?
- Adună istoric definit: număr, costuri, risc pe tranzacție și acoperire. Eșantionul mic face coada incertă, fără limită universală la 100. Continuă studiul demo ori istoric, fără tranzacții doar pentru număr.
- Introdu manual cele două trasee cu trei rezultate și verifică finalurile și drawdownurile. Salvează eșantionul înaintea extragerilor noi. O oră sau o mie de rulări nu demonstrează adecvarea modelului.
- Inspectează coada nefavorabilă: percentila 95 pentru drawdown ca magnitudine pozitivă; dacă semnul este negativ, declară convenția. Include equity inițial și regula volumului. Recalculează după reducerea riscului, fără proporționalitate garantată.
- Compară istoricele modificate consecvent: acoperire, unități, costuri și reguli. Mediana mai mică a modelului singură nu identifică deteriorarea cauzală a avantajului live. Păstrează planul și toate variantele încercate.
Continuă cu metodologia backtestului, speranța matematică și regula volumului, înainte să aplici percentila unui cont real.
Verifică ce ai învățat
Exercițiu: aproximativ 2 minute.
Arată răspunsul și explicația
Prima pierdere −150 atinge 850. Regula se verifică după acest pas, deci restul nu se adaugă.
Alte întrebări
Ce este simularea Monte Carlo a unei strategii?
Cum construiesc simularea în Excel?
Cum implementez Monte Carlo în Python?
Care sunt limitele simulării în trading?
Surse și verificare
- NumPy — Generator.choice
Eșantionare din tablou, replace=True și condițiile de intrare; fără păstrarea automată a dependenței temporale.
- Python — random
shuffle permută secvența; choices cu înlocuire și sample fără înlocuire. Oprirea este regulă proprie.
- Microsoft — RAND
Uniform pe [0,1), recalculare la calcularea foii; păstrează extragerile pentru reproducere.
- Microsoft — PERCENTILE.INC
Percentile inclusiv extremități și interpolare; nu cuantila binomială discretă folosită în exemplu.
Calculele folosesc ipotezele precizate explicit. Nu înlocuiesc datele actuale ale pieței sau condițiile furnizorului.
