Stránka 1 z 1
Algoritmické obchodování opcí
Napsal: čtv 05. pro 2024 13:01:20
od Adam98
Ahoj,
vím, že toto fórum čte mnoho nadšenců do obchodování opcí a zajímalo by mne, jestli se najde někdo, kdo se zabývá automatizací opčních strategií a algoritmickým obchodováním opcí (ne nutně HFT)? Aktuálně pracuji na automatickém systému pro obchodování opcí a rád bych se spojil s někým, koho tato forma tradingu taky zajímá.
S vývojem takového systému je spojena spousta zajímavých matematických výzev (výpočet férové hodnoty implikované volatility, korelace mezi změnou ceny podkladu a změnou IV, hledání optimálního způsobu (delta) hedgingu pozic, velikosti pozic) a zároveň je také nutné řešit různé programátorské problémy (optimalizace latence, správa připojení a příchozích dat, správa aktivních objednávek podle aktuální situace na trhu)
Pokud by se našel někdo, koho taková témata zajímají, budu rád, když se ozve a podělí o své zkušenosti ať už tady do vlákna nebo v SZ.
Díky.
Adam
Re: Algoritmické obchodování opcí
Napsal: pát 06. pro 2024 13:16:32
od dobretrejdy
Ahoj,
možná by nebylo špatné, kdybys naznačil, jaké konkrétní některé (vybrané) problémy tě na této tvé cestě potkaly a jak jsi je konkrétně řešil, tedy myslím nějaké pomyslné "vykopnutí balónu" na toto hřiště. Myslím, že by z toho být docela zajímavé téma. Mě by například konkrétně (ze začátku) zajímalo, jestli pro automatizované opční strategie využíváš nějaký software třetí strany nebo jsi vytvořil něco vlastního či využíváš nějaké rozhraní svého brokera, popřípadě kombinace všeho naznačeného? Měl jsem několik vlastních pokusů o jakousi "poloautomatizaci", ale bylo to velmi triviální, takže vlastně nepoužitelné, zajímalo mě ale pouze hledání arbitrážních příležitostí nebo cenových neefektivit, pak jsem ale upřel pozornost jiným směrem a tuto oblast jsem opustil...:c)
Re: Algoritmické obchodování opcí
Napsal: ned 08. pro 2024 11:06:48
od Adam98
Ahoj Jirko,
byla toho samozřejmě spousta, ale mým zřejmě největším problémem v počátcích byla celková koncepce takto komplexního systému. Nejsem programátor a mám za sebou jen pár menších projektů, takže v tomto ohledu se učím hodně nových věcí. Vše programuji v Pythonu, což možná není nejlepší volba z hlediska rychlosti, nicméně jen o tu nejde. Odpověď na tvou otázku tedy je, že tvořím vlastní řešení, které spoléhá na data feed brokera/burzy či jiného poskytovatele. (API interactive brokers je téma samo o sobě a je docela výzva s ním pracovat

)
Je třeba zpracovávat velké množství příchozích dat a zároveň na ně adekvátně reagovat, využívám proto asynchronní programování. Pro představu každá akcie má několik expirací, kdy u každé je několik strike price pro call i put stranu, počet uchovávaných orderbooků a jejich aktualizací je proto docela vysoký. Z orderbooků dále dopočítávám hodnoty implikované volatility pro best bid/ask. V principu si vytvářím volatility surface pro bid a ask stranu a následně se snažím pro každou expiraci (každý opční řetězec) odhadnout křivku, která správně reprezentuje aktuální férovou hodnotu IV.
Co se týče zadávání objednávek, tak nejjednodušší možnost je obchodovat příležitosti až když se objeví (např. systém vidí nesrovnalost v hodnotách IV na dvou různých strike price -> otevře spreadovou pozici, neutralizuje delta a čeká na návrat do normálu). Samozřejmě se nabízí možnost kotovat vlastní limitní objednávky a čekat až někdo bude chtít aktivně zobchodovat, což je ale mnohem komplikovanější a blíží se to opčnímu market makingu.
Během vytváření samotné obchodní strategie je taky třeba uvažovat nejen nad atraktivitou nějaké příležitosti, ale taky nad likviditou a možností vystoupit z pozice v nějakém rozumném čase. Pro příklad, když můžu zobchodovat podobné příležitosti ATM nebo OTM, tak preferuju příležitost ATM, protože u těchto opcí bude (obvykle) častěji docházet k obchodům a mám vyšší šanci, že se cenová diskrepance rychleji vyrovná a nebudu tak muset opakovaně rebalancovat delta hedge pozici, což šetří další náklady.
Toto je jen pár výzev, s kterými je potřeba se poprat a často je možné přijít s různými pohledy na stejný problém a způsoby řešení každého z nich.
Re: Algoritmické obchodování opcí
Napsal: pát 13. pro 2024 7:51:39
od dobretrejdy
Ahoj,
to je pozoruhodné, nicméně jsem v minulosti zkoušel ze streamovaných dat od Interactive Brokers hledat diskrepance mezi cenou podkladu a cenou syntetických podkladů pro hledání chybného ocenění a vytvoření Long/Short bezrizikové arbitráže. Narazil jsem na tyto problémy:
1/ Pokud přestala z IB proudit data nebo byl krátkodobý výpadek, objevovala se u požadované ceny hodnota -1, což vytvářelo nesmyslné výsledky
2/ Na likvidních podkladech (SPY atd.) se žádné výrazné příležitosti neobjevovaly. Pokud byly, tak rozdíly byly nepatrné a pro jejich zobchodování bych potřeboval obrovské peníze, protože předpoklad byl držet arbitráž do expirace.
3/ Téměř vše, co se dalo zobchodovat byly tituly, kde byla nižší likvidita, kde se objevoval širší Ask/Bid spread, který za dobu života opce setrvával, při výstupu z obchodu před expirací bych obětoval značnou část profitu právě z důvodu šířky tohoto spreadu.
Řešíš podobném problémy? :c)
Re: Algoritmické obchodování opcí
Napsal: úte 17. pro 2024 10:43:35
od Adam98
Ahoj,
ad 1) Jak už jsem zmiňoval, API interactive brokers má své mouchy, toto je jedna z nich. (tebou zmíněný problém je poměrně snadné ošetřit, stačí sepsat logiku algoritmu tak, aby neobchodoval, pokud od brokera proudí chybná data) Dříve jsem se snažil v rámci jedné strategie pracovat s real-time daty VIX futures a na základě order booku a posledních obchodů odhadovat krátkodobý pohyb ceny do budoucna. S tímto jsou u IB také problémy, protože "real-time" data nejsou tak úplně real-time a jedná se jen o snapshoty orderbooku několikrát za sekundu (tzn. je možné zmeškat nějakou důležitou aktualizaci např. v případě, kdy někdo rychle zadá a následně rychle vymaže svou objednávku)
ad 2) Co se týče tohoto bodu, tak je logické, že u likvidních titulů je těžší najít arbitrážní příležitosti. Pokud se taková příležitost objeví u likvidních titulů, tak kapacita takové příležitosti je obvykle daleko větší než u nelikvidních akcií a je tak zajímavá pro velké hedge fondy/prop trading firmy a proto mnohem rychleji zmizí.
ad 3) V úvodu zmiňuješ, že jsi zkoušel hledat diskrepance mezi cenou podkladu a cenou syntetických podkladů pro hledání chybného ocenění a vytvoření Long/Short bezrizikové arbitráže. Nemyslím si, že jde nutně o chybné ocenění, jak zmiňuješ, ale právě o problém s likviditou a uzavřením takové pozice před expirací.
Představ si situaci z pohledu tvůrce trhu, jehož cílem je nakupovat a prodávat a vydělávat na spreadu. (držená pozice je pro něj v podstatě jen zdrojem rizika, které musí řídit) Opční tvůrci trhu se obecně snaží tvořit trh především blízko ATM, jelikož tam dochází nejčastěji k obchodům, je tam nejvyšší likvidita. Z toho důvodu jsou na strikes okolo ATM ochotni držet větší pozici než hluboko OTM/ITM. Nicméně v případě, kdy dojde najednou k prudkému pohybu podkladu (který market maker neočekává a tedy ho nezohledňuje v ceně opcí), tak může nastat situace, že skončí s velkou pozicí na OTM/ITM strikes, které se pravděpodobně nezbaví a musel by ji držet až do expirace. Byznysem tvůrce trhu ale je vydělávat na spreadu a profit vygenerovaný držením (arbitrážní) pozice až do expirace má nižší hodnotu než očekávaná hodnota profitu plynoucího z uzavření pozice a uvolnění kapitálu pro další obchodování. Z toho důvodu se pozici rozhodne uzavřít. (i když na první pohled neprofitabilně)
Když jsi se zajímal o hledání podobných arbitráží, uvažoval jsi, že bys pro zvýšení profitability zkusil nejdříve u jedné (nebo obou) z opcí nabízet cenu za best bid/ask a až po vyplnění této nohy obchodu aktivně obchodoval další části arbitráže?
Re: Algoritmické obchodování opcí
Napsal: stř 25. pro 2024 10:26:32
od P/L
Ahoj,
napsal jsem si v Pythonu (s využitím TWS API) automat na jeden konkrétní úkol, a to zadávání (limitních) objednávek při vstupu/výstupu z DN pozice. Cena na opční objednávce se automaticky mění podle ceny podkladu, podle fixně zadané IV. Když je objednávka vyplněna, automaticky se aktivuje akciová objednávka.
Je možné, že něco podobného jde naklikat přímo v TWS, ale chtěl jsem si řešení napsat sám (včetně realtime IV grafů atd.)
Cílem není žádná arbitráž ani systém, ale pouze snaha o co nejlepší plnění při vstupu/výstupu u manuálního systému, eliminace lidských chyb a časová úspora při zadávání většího počtu objednávek.
Někdy se poštěstí a vstoupím do pozice s malým ziskem, ale často je problém vstoupit i za mid. Na méně likvidním podkladu si navíc vyplněním opční objednávky krátkodobě ovlivním cenu podkladu, a řeším dilema, zda na akcii akceptovat horší cenu nebo být vystaven delta risku a čekat na lepší cenu.
Pocitově se vstupy/výstupy s tímto udělátkem o trochu zlepšily, ale nejedná se o žádný dramatický rozdíl. Když mě tlačí čas, tak u levných opcí (kterých je potřeba pořídit více), raději manuálně zadám limitní objednávku na přibližně DN combo (straddle/strangle), než abych vstupoval/vystupoval po menších částech automatem (a po každém kroku hedžoval akciemi).
Co tím chci říct - i tak jednoduchý úkol nese exekuční rizika, a není úplně triviální ho naprogramovat. Kompletně automatizovaný systém je úplně jiná dimenze složitosti, do které nemám absolutně žádné ambice se pouštět. Správně ošetřit výpadky připojení, špatná data, nejrůznější výjimky atd. podle mě zabere strašně moc času, a člověk jen programuje, místo aby obchodoval a byl vystaven nejrůznějším tržním situacím.
Jako akademické cvičení super, dobré téma na diplomku či dizertačku. Pokud jsi namotivovaný a máš hodně času, tak proč ne. Něco naprogramovat je ta nejlepší cesta, jak něčemu skutečně porozumět (alespoň pro mě). Ale aby retail jednotlivec (navíc používající IB), dlouhodobě dosahoval nějakých větších profitů pomocí automatizovaného systému zaměřený na arbitráže, nevidím jako reálné.
Píšeš, že bys obchodoval DN spready při nějaké IV diskrepanci. Hedžoval bys podkladem, nebo spread rovnou pořídil v DN poměru? Jaká by byla předpokládaná doba držení? Asi nemusím zmiňovat, že čím delší doba a čím vzdálenější jsou od sebe striky, tím více je potřeba řešit kromě delta risku i ostatní greeks.
Máš vypozorované, že se takové příležitosti objevují? Jak často? S jakým potenciálním profitem? Jak jsem už psal, nedovedu si představit, že by retail trader na něčem takovém dlouhodobě profitoval, buď bude profit miniaturní nebo občasný skluz v plnění většího objemu vymaže předchozí zisky.
Za poslední půlrok jsem spreadů zobchodoval poměrně dost a opět - vyplnění za mid (tzn. součet mid cen jednotlivých komponent) vůbec není samozřejmé, spíše naopak (i na likvidních titulech).
Pokud už máš nějaký proof of concept za sebou, tak se skláním a přeji hodně úspěchů. Pokud ne, tak bych začal pouze nějakým monitoringem cen, a co nejvíce zúžil pozornost na nějakou konkrétní tržní situaci. Připadá mi, že na to jdeš moc zeširoka. Latenci apod. bych řešil až úplně nakonec, nebo neřešil vůbec (podle mně by úspěch/neúspěch na latenci neměl záviset).
Re: Algoritmické obchodování opcí
Napsal: úte 21. led 2025 17:34:18
od Adam98
Ahoj, díky za tvůj komentář, pokusím se ke všemu postupně vyjádřit.
Podobný nástroj pro automatizovanou exekuci jsem taky vytvářel, šlo o párové obchodování ETF a vzdálených futures, což je v principu podobné tvé opční automatizaci (cílem bylo taktéž zajistit lepší plnění než při manuálním zadávání objednávek).
K tvému komentáři mám jeden dotaz. Píšeš, že si na méně likvidním podkladu vyplněním opční objednávky krátkodobě ovlivníš cenu podkladu. Pokud vstupuješ do DN pozice (např. řekněme long call + short akcie) měl by tvůj vliv na trh způsobený nákupem call být v opačném směru, než je tvá zamýšlená akciová pozice (tedy nákup call vysílá do trhu nákupní signál a ty chceš akcie shortovat) nebo se pletu?
Teď ke tvým otázkám. I když mám nějaké zkušenosti s IB, tak pro tenhle projekt IB nevyužívám. Zaměřuju se na opční platformy pro obchodování kryptoměnových opcí (prozatím především Deribit). Aktuálně mě nejvíce zajímají opce s denní expirací, ale cílem je později rozšířit obchodování i na vzdálenější expirace.
Co se týče strategie nejde mi o obchodování DN spreadů, prostě chci držet long/short portfolio opcí okolo nejlikvidnějších strikes (tzn. vetšinou v okolí ATM), protože je tam největší aktivita a často se obchoduje na obou stranách order booku.(zároveň bid/ask spready jsou poměrně široké) V rámci řízení rizika je samozřejmě třeba dopočítávat greeks celého portfolia a podle toho hedgeovat (pomocí opcí + podkladu) a taky nějak limitovat velikosti pozic na jednotlivých strikes. Jako další mě ještě zajímá obchodování krátce před delivery, což má taky svá specifika.
Ohledně příležitostí řeknu jen, že se vyskytují. Jejich zhodnocení nechám na každém, Deribit nabízí volně přístupná historická data o obchodech, která jsou k dispozici
zde.
Re: Algoritmické obchodování opcí
Napsal: ned 26. led 2025 22:31:26
od P/L
Adam98 píše: ↑úte 21. led 2025 17:34:18
K tvému komentáři mám jeden dotaz. Píšeš, že si na méně likvidním podkladu vyplněním opční objednávky krátkodobě ovlivníš cenu podkladu. Pokud vstupuješ do DN pozice (např. řekněme long call + short akcie) měl by tvůj vliv na trh způsobený nákupem call být v opačném směru, než je tvá zamýšlená akciová pozice (tedy nákup call vysílá do trhu nákupní signál a ty chceš akcie shortovat) nebo se pletu?
Nenapsal jsem to úplně přesně, situace je následující (pro long call + short akcie) - limitní opční objednávka někde mezi bid a ask, která je vyplněna současně s malým spikem akcie dolů. Nezkoumal jsem, jestli akciová cena přišla těsně před vyplněním (logické vysvětlení, v tom případě obchod proběhne rychleji, než můj automat změní podle akcie opční objednávku) nebo až po něm.
Z předchozích příspěvků nebylo zřejmé, že se zaměřuješ na krypto, proto jsem chybně předpokládal, že obchoduješ opce na US akcie přes IB (stejně jako já). Krypto jde zcela mimo mě, v této oblasti neporadím.