Prax a overovanie

Monte Carlo stratégie: cesty, zastavenie a percentily

Oddeľte premiešanie, bootstrap a parametrický model. Osem EUR ciest ukáže rozdiel dotyku kapitálovej hranice a straty na konci.

Abstraktná redakčná ilustrácia vytvorená AI k téme „Monte Carlo stratégie: cesty, zastavenie a percentily“. Nezobrazuje historické kurzy.
Redakčná ilustrácia vytvorená AI; nejde o snímku platformy ani historický cenový graf.

Forex a CFD s pákou môžu rýchlo viesť k strate. Vzdelávací obsah bez osobného investičného odporúčania.

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.

Permutácie ukončené kapitálovou hranicouModel začína na 1 000 USD, po celom kroku končí pri kapitále najviac 850 USD. A vykoná +300, −150, −150 a skončí na 1 000. B vykoná prvých −150, dosiahne 850 a zvyšné dva výsledky preskočí.ROVNAKÝ ZOZNAM, INÝ KONIEC PO STOPEA: +300, −150, −150B: −150, −150, +3001 0001 3001 1501 0001 000850hranica 850zvyšné kroky vynechanéA: 3 výsledky, konečných 1 000.B: 1 výsledok, konečných 850.

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.

Body sú vykonané kroky. Sivá čiara B je ukončený pokus, nie dva nové obchody s nulovým výsledkom.

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.

Koniec pod hranicou nie je prvý dotykOddelený EUR model: začiatok 1 000, tri nezávislé ±100 EUR čisté kroky s p = 1/2; všetky náklady už vo výsledkoch, bez reinvestovania, tokov, ďalších poplatkov, menovej konverzie, financovania, expozícií alebo maržového zásahu. Osem rovnako pravdepodobných zoznamov po 1/8. A vykoná všetko, B zastaví po celom kroku pri ≤850.MODELOVÝ VÝPOČETBez zastavenia AKonce 700 / 900 / 1100 /1300 EURS pravidlom BKonce 800 / 900 / 1100 /1300 EURDotyk pri oboch pravidlách2/8 = 25 %Priemer konca1 000 EUR pri A aj B
Koniec pod hranicou nie je prvý dotyk. Oddelený EUR model: začiatok 1 000, tri nezávislé ±100 EUR čisté kroky s p = 1/2; všetky náklady už vo výsledkoch, bez reinvestovania, tokov, ďalších poplatkov, menovej konverzie, financovania, expozícií alebo maržového zásahu. Osem rovnako pravdepodobných zoznamov po 1/8. A vykoná všetko, B zastaví po celom kroku pri ≤850.

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?

  1. 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.
  2. 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.
  3. 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ť.
  4. 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.

Začnite na 1 000 USD. Po kroku s kapitálom ≤850 USD skončite. Vylosované poradie je −150, −150, +300 USD. Aký je vykonaný výsledok?

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

  1. Python: random

    shuffle premieša existujúci zoznam; choices vyberá s opakovaním. Zastavenie a trhové pravdepodobnosti určuje náš model, nie knižnica.

  2. 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.

  3. 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.

  4. 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.

O autorovi

Jarosław Wasiński je vydavateľ a trhový analytik v Poľsku. V roku 2004 založil MyBank.pl a devízový trh sleduje od roku 2007.