V tomto článku
Po prečítaní dokážete…
- Rozlíšiť vylosované a vykonané výsledky pri kapitálovom zastavení.
- Zosúladiť presné modelové kvantily, percentilovú konvenciu a jednotlivé cesty poklesu.
- V ôsmich EUR cestách oddeliť pravdepodobnosť dotyku a koncového kapitálu pod hranicou.
Vysvetlenie pojmov priamo v článku
Backtest: skúška pravidiel na historických údajoch Pokles od maxima: drawdown Obchodný plán Očakávaná hodnota výsledku Veľkosť pozície (objem)Backtest ukazuje jednu zaznamenanú cestu. Simulácia skúma cesty vytvorené výslovnými predpokladmi. Objem, poradie aj opakovaný výber výsledkov môžu zmeniť pokles. Výstupom je podmienený modelový údaj, nie overená pravdepodobnosť bankrotu neurčeného živého účtu.
Čo vlastne simuluje Monte Carlo?
Metóda opakuje náhodné výbery zo stanoveného modelu. Premiešanie pevného zoznamu peňažných výsledkov mení poradie a zachováva súčet; výber s opakovaním môže zmeniť oboje. Parametrický model nezávislých ziskov a strát má inú distribúciu. Určte postup aj prepočet kapitálu a objemu. Samotný názov simulácie tieto rozhodnutia nenahrádza.
Začnite ručne overiteľnou cestou. Pôvodný hypotetický peňažný model začína na 1 000 jednotkách. Výsledky +200, −100, −100 dávajú 1000 → 1200 → 1100 → 1000, maximálny pokles 200 / 1200 = 16,67 %. Poradie −100, −100, +200 dá 1000 → 900 → 800 → 1000 a 20 %. Koniec je rovnaký. Počiatočný kapitál musí patriť medzi priebežné maximá, inak prvotnú stratovú cestu podhodnotíte.
Hranica zastavenia zmení aj konečný súčet
Bez zastavenia +300 −150 −150 dáva nulu. Teraz po každom celom výsledku skontrolujeme, či kapitál dosiahol 850 USD alebo menej. Potom už ďalší krok nevykonáme.
Tri vymyslené čisté USD výsledky, bez reinvestovania a tokov. Hranica sa kontroluje po celom kroku. Nie je odporúčaním finančného limitu; dve cesty neurčujú pravdepodobnosť. Python random.shuffle premieša existujúci zoznam; podmienka zastavenia je samostatné pravidlo nášho príkladu.
Na malej obrazovke posúvajte diagram vodorovne alebo ho zväčšite. Vysvetlenie nájdete aj v texte.
A vykoná +300, −150, −150: 1000 → 1300 → 1150 → 1000 USD. B vykoná iba prvých −150 a končí na 850 USD; ďalších −150 a +300 sa nepoužije. Oddeľte vylosovaný zoznam od vykonaného. Kapitálové podmienky, zastavenie alebo zmena objemu znamenajú, že sčítanie všetkých premiešaných historických výsledkov už stratégiu nenapodobňuje.
Na ktoré otázky model odpovedá?
Pri daných pravidlách môže odhadnúť maximálne poklesy, prekročenie hranice a koncový kapitál. Najprv vypočítajte maximum poklesu každej celej cesty, až potom percentil týchto maxím. Percentil equity v každom čase nie je jedna vykonaná cesta. Uveďte kvantilovú konvenciu: interpolácia a diskrétne hodnoty menia, koľko výsledkov leží pod percentilom. Žiadny percentil negarantuje budúci limit straty.
Pôvodný hypotetický model má 200 nezávislých obchodov, pravdepodobnosť zisku 0,55, pevný čistý zisk 100 EUR a stratu 80 EUR. Priemer je 19 EUR na obchod, celkom 3 800 EUR. Pri K ziskoch je konečný zisk 180K − 16000 EUR. Presný binomický kvantil, najmenšie K s kumulatívnou pravdepodobnosťou aspoň cieľ, dá 920 EUR pri 1 %, 1640 pri 5 %, 3800 pri 50 % a 5960 pri 95 %. Ide o vypočítané distribučné hodnoty, nie vyhlásený nameraný experiment. Konečná simulovaná vzorka sa bude meniť.
Nový EUR model: dotyk hranice a koncová strata sú iné udalosti
Oddelený model začína na 1 000 EUR. Najviac tri nezávislé kroky majú každý s pravdepodobnosťou 1/2 pevný +100 alebo −100 EUR netto. Už zahŕňajú všetky pridelené náklady; bez reinvestovania, iných pozícií, tokov, financovania, menovej konverzie, ďalších poplatkov alebo maržového zásahu. Každý z ôsmich trojkrokových zoznamov má modelovú pravdepodobnosť 1/8. Nejde o frekvencie živých obchodov.
Porovnáme A, ktoré vždy vykoná všetky tri kroky, a B, ktoré po celom kroku zastaví pri kapitále 850 EUR alebo menej. Dve počiatočné straty v B vedú cez 900 až na 800 EUR; hranica negarantuje výstup presne 850. Neskorší vylosovaný krok sa nevykoná, nie je to nulový obchod.
Najprv pomenujte udalosť a vykonané kroky. Ani presný modelový výpočet s ôsmimi cestami nepotvrdzuje pravdepodobnosť v skutočnej stratégii.
Na malej obrazovke možno diagram posúvať vodorovne alebo zväčšiť. Hodnoty a záver nájdete aj nižšie v texte.
- Bez zastavenia A
- Konce 700 / 900 / 1100 / 1300 EUR – Počty 1 / 3 / 3 / 1 z ôsmich. Pod 850 na konci: 1/8 = 12,5 %.
- S pravidlom B
- Konce 800 / 900 / 1100 / 1300 EUR – Počty 2 / 2 / 3 / 1. Oba zoznamy začínajúce dvoma stratami skončia na 800; pod 850: 2/8 = 25 %.
- Dotyk pri oboch pravidlách
- 2/8 = 25 % – Kontrola po celom kroku dovolí presiahnuť hranicu nadol o 50 EUR. Nie je to zaručený maximálny pokles alebo brokerový stop.
- Priemer konca
- 1 000 EUR pri A aj B – Rovnaký priemer neznamená rovnaké rozdelenie. Modelové počty nie sú empirické trhové frekvencie.
Bez zastavenia končí zoznam troch strát na 700 EUR, dva záporné a jeden kladný výsledok na 900, dva kladné a jeden záporný na 1100, tri kladné na 1300. Počty sú 1, 3, 3, 1. Pri B majú oba zoznamy začínajúce dvoma stratami koniec 800; ostatné sa nemenia. Konečných kapitálov je 2 × 800, 2 × 900, 3 × 1100, 1 × 1300.
V oboch modeloch sa hranica počas pokusu dosiahne v 2 z 8 prípadov, čiže 25 %. Koniec pod 850 však má A iba v 1 z 8 = 12,5 %, kým B v 2 z 8 = 25 %. Nie je to dôkaz horšej alebo lepšej reálnej politiky: merali sme iné udalosti a zmenili pravidlo vykonania. Priemer konca zostáva v oboch 1000 EUR, ale rozdelenie nie. Zaznamenajte, či report počíta prvý dotyk, stav na konci alebo pokles od maxima, a neoznačujte každú udalosť rovnakým slovom „bankrot“.
Ako pripraviť výpočet v Exceli?
Nasleduje príklad s anglickými názvami funkcií, nie neoverený preklad do slovenského Excelu. Mená, desatinné značky a oddeľovače závisia od nastavenia. Do A1 vložte 0.55, A2 = 100, A3 = −80 a A4 = 10,000: modelovú pravdepodobnosť, dva čisté peňažné výsledky a začiatok. V C1 bude =$A$4, D1 =C1, E1 nula. Riadok 1 je stav pred prvým obchodom.
B2 používa =IF(RAND()<$A$1,$A$2,$A$3). Absolútne odkazy pri kopírovaní nemenia parametre. Do C2 vložte =C1+B2, D2 =MAX(D1,C2), E2 =(D2-C2)/D2. B2:E2 kopírujte po riadok 201, presne 200 obchodov. Koniec je C201, maximálny pokles =MAX(E1:E201). Dvesto obchodov nie je automaticky rok. Praktické použitie potrebuje osobitne zastavenie, maržu a insolvenciu.
Pre ďalšiu cestu kopírujte celý blok B:E s počiatočným riadkom a pevnými $A$ parametrami. Z rôznych ciest oddelene sumarizujte koncový kapitál a maximum poklesu. =PERCENTILE.INC(range,0.95) zvolí horný chvost kladných veľkostí poklesu; nepriaznivý chvost kapitálu namiesto toho 0.05 alebo 0.01. Funkcia interpoluje. RAND pri prepočte mení vzorku, preto uchovajte vylosované hodnoty aj predpoklady, nielen živé vzorce.
Ako urobiť bootstrap v Pythone?
Bootstrap vyberá z historických výsledkov namiesto iba predpokladaného zisku a straty. Python uľahčí opakovanie, ale aj Excel vie vzorkovať historické hodnoty vhodnými vzorcami. V oboch treba určiť závislosť, objem, náklady a použitú históriu.
Pre neprázdnu históriu čistých peňažných výsledkov môže NumPy Generator vytvoriť new_sequence = rng.choice(history,size=200,replace=True). Pridajte začiatok: equity = np.concatenate(([initial_capital], initial_capital + np.cumsum(new_sequence))). V každej ceste určte priebežné maximá a poklesy, až potom ich maximum. Uložte dáta, seed, verziu knižnice, horizont, náklady a zastavenie. Viac ciest zmenší výpočtový šum, nevytvorí nové trhové pozorovania.
Kontrolované porovnanie môže zdieľať náhodné U. Výsledok je +1 pri U pod prahom, inak −1; hypotetické A = 0,55, B = 0,60. Očakávania 0,10 a 0,20, rozdiel B − A 0,10. Pri spoločnom U je rozdiel +2 len v 0,55 ≤ U < 0,60, inak nula: rozptyl 4 × 0,05 − 0,10² = 0,19. Pri nezávislých U sa sčítajú rozptyly 0,99 + 0,96 = 1,95. Znížili sme šum tohto porovnania, nie neistotu o pravdepodobnostiach na trhu. Postup nemusí pomôcť ľubovoľným stratégiám.
Výber jednotlivých obchodov s opakovaním zachová pozorované hodnoty, ale preruší pôvodné poradie a zhluky strát. Nevyrobí nepozorovaný extrém. Ak je závislosť dôležitá, zvážte bloky a výslovné stresové scenáre; aj tie môžu minúť budúci režim. Pevné peňažné výsledky a prepočet rizika podľa meniacej sa equity sú odlišné experimenty.
Kde sú hranice interpretácie?
Jednoduchý príklad predpokladá stabilné rozdelenie a nezávislosť. Metóda Monte Carlo na ne nie je obmedzená; dokáže modelovať závislosti a režimy. Ich špecifikácia a overenie však zostávajú prácou autora. Porovnajte správanie s históriou a osobitne stresujte podmienky mimo nej.
Skontrolujte prekryté expozície a pokrytie trhu. Walk-forward analýza usporiada vývoj a hodnotenie, ale automaticky neodhalí slabnutie výhody ani nezmení už preskúmané dáta na nedotknuté hodnotenie. Plán má stanoviť meranú udalosť pred pokusom.
Percentil nie je garantovaný strop ani dokázaná pravdepodobnostná podlaha živého poklesu. Zlyhanie určte vopred, skúšajte náklady, chýbajúce plnenia, medzery a zastavenie. V ideálnom modeli každej straty presne 5 % aktuálneho kapitálu zostáva po n stratách začiatok × 0,95n, kladný pri konečnom n. Praktická hranica, minimálna marža alebo väčšia strata túto úlohu zmenia. Priemerová očakávaná hodnota neurčuje cestu prežitia účtu.
Ako začať s overiteľným pokusom?
- Určte históriu, počet, náklady, jednotky rizika a pokrytie. Malá vzorka komplikuje chvosty, ale neexistuje univerzálny prah sto obchodov. Neobchodujte iba pre počet; dáta zbierajte aj demom alebo historickou analýzou.
- Ručne overte pôvodné tri-krokové cesty a nových osem EUR zoznamov. Skontrolujte konce, maximá aj dotyky, potom zmrazte náhodnú vzorku. Hodina práce alebo tisíc pokusov nedokazujú primeranosť modelu.
- Pri kladnej veľkosti poklesu skúmajte nepriaznivý 95. percentil, nie 5. Pri podpísanom zápornom údaji uveďte konvenciu. Zahrňte začiatok a objemové pravidlo; zníženie rizika znovu otestujte, nepredpokladajte garantovanú priamu úmernosť.
- Pri nových históriách zachovajte pokrytie, náklady, jednotky a pravidlá alebo zmenu pomenujte. Nižší modelový medián sám neurčuje príčinné zhoršenie skutočnej výhody. Uložte vzorky aj nedokončené cesty a počet vykonaných krokov.
Overte si, čo ste sa naučili
Cvičenie: približne 2 minúty.
Zobraziť odpoveď a vysvetlenie
Prvých −150 dosiahne 850. Kontrola je po tomto kroku, ďalšie výsledky sa nepridajú.
Ďalšie otázky
Čo je simulácia Monte Carlo obchodnej stratégie?
Opakovaný výber z definovaného modelu. Premiešanie pevného zoznamu zachová súčet, výber s opakovaním môže zmeniť aj výsledky. Pri pôvodných 200 nezávislých obchodoch s pravdepodobnosťou 0,55, čistými +100 a −80 EUR je priemer 19 EUR na obchod. Presný 5. percentil podľa uvedenej binomickej konvencie je 1 640 EUR konečného zisku, nie vymyslený pozorovaný beh. Model ani backtest nepotvrdzujú budúce rozdelenie. V novom EUR príklade oddeľujeme dotyk od konca pod hranicou.
Ako začať v Exceli?
Zachovajte riadok 1 ako počiatočný stav. Pre A1=0.55, A2=100, A3=−80, A4=10,000 použite C1=$A$4, D1=C1, E1=0. Potom B2=IF(RAND()<$A$1,$A$2,$A$3), C2=C1+B2, D2=MAX(D1,C2), E2=(D2−C2)/D2. Kopírujte riadky 2 až 201 pre 200 obchodov, MAX(E1:E201) dá maximum poklesu cesty. Pre ďalšiu cestu kopírujte celý blok aj začiatok a uložte hodnoty pred prepočtom. Názvy funkcií a oddeľovače závisia od jazykových nastavení. Je to peňažný model bez automaticky doplnených praktických maržových pravidiel.
Ako začať v Pythone?
Najprv určte dáta a model. Neprázdnu peňažnú históriu vzorkujete rng.choice(history,size=200,replace=True); pred kumulatívne súčty pridajte počiatočný kapitál. Samostatne vypočítajte priebežné maximá a poklesy každej cesty. Opakovanie používa známe hodnoty, preruší poradie a nezachová nepozorované chvosty alebo zhluky strát. Uložte seed, verziu, jednotky, poplatky a zastavenie. Deterministický ručný príklad má predchádzať interpretácii percentilov. Viac behov nie je viac trhovej histórie.
Ktoré obmedzenia zostávajú?
Výsledok je podmienený dátami a pravidlami. Nezávislý bootstrap preruší časovú závislosť a nevytvorí neprítomný trhový šok. Metóda dokáže používať aj závislé alebo meniace sa modely, ktoré potrebujú vlastné overenie. Percentil nie je overená živá podlaha alebo strop rizika. Pri kontrole hranice po kroku môže kapitál skončiť pod ňou; nový model má 800 EUR pri hranici 850. Veľkosť pozície a marža môžu pridať ďalšie obmedzenia. Samotný priemer nezaručuje prežitie účtu.
Zdroje a overenie
- Python: random
shuffle premieša existujúci zoznam; choices vyberá s opakovaním. Zastavenie a trhové pravdepodobnosti určuje náš model, nie knižnica.
- NumPy: Generator.choice
Výber z existujúcich hodnôt, parameter replace a neprázdny vstup. Nie dôkaz zachovania časovej závislosti alebo skutočných chvostov.
- Microsoft: RAND
Rovnomerný výber od nuly vrátane po jednotku bez nej, nový pri prepočte. Uvedený zápis je anglický a nastavenia oddeľovačov sa líšia.
- Microsoft: PERCENTILE.INC
Parameter 0 až 1 vrátane a interpolácia. Naše presné binomické kvantily používajú odlišnú výslovne uvedenú diskrétnu konvenciu.
Výpočty používajú výslovne uvedené predpoklady. Nenahrádzajú aktuálne trhové údaje ani podmienky poskytovateľa.
