Pracovní skupina poskytovaná tradery pro tradery. Naleznete v ní odpovědi na své technické otázky týkající se programů Amibroker, Python, InteractiveBrokers TWS a TradeStation Global.
Začal bych jednou, max. dvěma MR strategiemi. Sám bych začal skrz MRZ, která je zde vyučována a tudíž bych se snažil logiku otestovat a postupem času strategii přizpůsoboval. Asi bych si pak přidal https://tradingroom.financnik.cz/system/53, která má úplně jinou logiku vstupu (používá implikovanou volatilitu).
Dokud nebudete mít své strategie, tak bych skutečně obchodoval s malými váhami, nesnažil se o vydělávání peněz, ale o získávání zkušeností a testování vlastních přístupů (například odvozených od těch mých).
Ad rotování strategií. Podobné přístupy znějí logicky, ale dokud si je neotestujete, tak nebudete vědět, jak to funguje doopravdy. Osobně bych tímto nezačínal a zvolené strategie jel bez vypínání.
Díky za odpovědi, ještě jsem se chtěl zeptat. Jak vybrat strategii z jedné kategorie? V dashboardu je například v kategorii „US akcie - MR“ osm strategií. Obchodovat všech osm je asi nesmysl kvůli diverzifikaci, když je to stejný styl. Z příspěvku od Anadred, který jste posílal v mailu se mě líbila myšlenka nezačínat obchodovat strategii na vrcholu, ale v drawdownu. Potom se nabízí myšlenka, že až je strategie nahoře, tak ji zase vyměnit za tu, která je v drawdownu.
Ano, přesně tak. Sizing nechávám stejný, při vyšším počtu signálů se na některé nedostane.
Skoring mám jednoduchý. Každá MR strategie vybírá signály podle nějakého klíče - viz třeba výuka MRZ. Podle daného klíče jsou signály řazeny i v dashboardu tradingu room - nejsilnější jsou vždy jako první.
A pak tedy dělám to, že mám například 5 mean reversioon strategií a nejprve zadám od všech nejsilnější a tak dále. Pokud bych mohl zadat jen jeden signál, tak se zadávání řídí pořadím strategií jak je mám za sebou poskládané (což už je ale dost nepodstatná nuance).
Toto jsem dost podrobně testoval. A jak jsem psal - snižuje to volatilitu, ale také profitabilitu. MR strategie fungují v clusterech - ožívají v tržních propadech a je trochu jedno, jak konkrétně jsou postavené. V principu se dost překrývají. Pokud se tak pozice zaškrtí a trhy po propadu vrátí = přicházím o peníze. Pro mě je ale důležitější, že pokud trhy začnou padat, nebudu alokován například 50% do long MR (kde v principu není reálné používat stop, takže ztráta je dost neurčitá).
Konkrétně mám v této logice ještě jeden switch podle volatility - pokud začne být volatilita vyšší, tak se ta alokace pro MR ještě snižuje.
Dobrý den Petře,
děkuji Vám za reakci. Vy jste něco podobného již před nedávnem psal v jedné z diskusí, ale tehdy jsem to asi pochopil špatně. Myslel jsem, a tím směrem jsem experimentoval, že vezmete všechny signály a jejich aktuální velikost upravíte tak, aby se vešly do stanoveného limitu pro MR strategie. Nezmění se počet signálů, jen se v situacích velkého množství signálů zmenší jejich alokace. Ale z výše uvedeného to chápu tak, že máte jakýsi scoring, který řadí signály ne jen za jednu strategii, ale dá všechny signály z MR strategií na hromadu a z nich potom vybírá ty nejlepší. Alokace nechává beze změny a při vyšším počtu signálů se tak na některé signály nedostane. Rozumím tomu správně?
Přeji hezký den.
Aleš
Ano, zkoumal jsem to a ten rozdíl je přesně v tom co píšete. Analyzer pracuje jen s uzavřenými obchody a tedy nezobrazuje drawdown v otevřených pozicích. U individuálních strategií jsou zobrazeny i výkyvy během doby, kdy je pozice otevřená.
Už mám udělanou opravu, že timeout je dynamický - nejprve 10s a pokud se data nestihnou stáhnout tak se sám zvýší na 30s.
Několik dnů to budu testovat a předpokládám, že koncem týdne publikuji.
Vypada to dobre. Bot natahl data obou symbolu (MNQ, MES) v 15:32 po zvyseni _ENTRY_DATA_TIMEOUT_S = 30. Diky za napovedu, nenasel jsem parametr, proto jsem improvizoval 🙂
Budu dale sledovat, ale myslim, ze uz to bude OK.
Jeste jednou diky
hezky den
mirek
Táto možnosť neurobila žiadnu zmenu, vzhľadom na to, že testujem len krátke obdobie cca 2 mesiacov, tak ten počiatočný kapitál je takmer rovnaký ako na konci testovaného obdobia.
Napadlo mi, či nemôže byť rozdiel v tom, že jedna analýza počíta drawdown aj z otvorených pozícii a druhá analýza možno počíta až z uzavretých obchodov. Mohlo by to tak byť?
Ďakujem
J.
Tipl bych si, že to bude tou volbou "reinvestovat kapitál". Protože jednotlivé strategie jsou zobrazovány bez reinvestování - a drawdown je pak počítán vůči počátečnímu kapitálu. Při reinvestování kapitálu je drawdown počítán z průběžného nejvyššího stavu účtu. Zkuste volbu odškrtnout.
Ďakujem, vnímam to podobne, ale snažím sa nájsť čo najefektívnejšie využitie kapitálu. Spravil som si backtest takéhoto portfólia v Analyzátori a zameral som sa konkrétne na obdobie február - marec 2020, teda pád trhov počas pandémie a následný návrat. A narazil som na situáciu, ktorej nerozumiem.
Toto je percentuálny drawdown jednotlivých stratégii a celého portfólia počas covidového prepadu. Najhoršie na tom podľa tohto grafu bola stratégia MRZ, ktorá mala drawdown cca 7,5%. Napríklad MRZCA mala drawdown okolo 4% atď. Keď si však každú stratégiu rozkliknem jednotlivo, drawdowny vyzerajú podstatne horšie:
Viď Drawdown v MRZ cez 10%
Alebo MRZCA blížiaci sa tiež k 10%
Vedeli by ste mi prosím poradiť, prečo vznikajú takéto rozdiely pri analýze jednotlivých stratégii a portfólia? Pri backteste portfólia som použil takéto nastavenia:
Vopred ďakujem za objasnenie.
J.
Máte pravdu, bude to příliš krátkým čekáním na data.
ve verzi 1.07 přibyl 10s timeout (_ENTRY_DATA_TIMEOUT_S = 10.0 v src/broker.py). Rychlý fix by měl být tuto hodnotu zvýšit na 30.0.
Dejte vědět, jestli to situaci vyřešilo, já to ještě u sebe budu testovat.
A aktualizoval jste kompletně python kódy? To vypadá jako když nový konfigurační soubor spouštíte na starém kódu.
Všechny kódy bych smazal /kromě konfigurací/ a rozbalil znovu ze zipu.
Pridal jsem cekani:
except DataUnavailable as e:
logging.warning(
f"{symbol}: pre-entry data unavailable ({e}) - "
"deferred, will retry within the window")
deferred.append(symbol)
logging.warning(
f"{symbol}: pre-entry data unavailable ({e}) - "
"waiting 30s")
systime.sleep(30)
a povedlo se mi nacist 2 symboly. Po zmene poradi, vzdy nacte jenom prvni. S 30s pauzou, se obcas povede nacist oba dva. Vypada to na prilis velky pozadavek na data a prilis casto do IB. Ma nekdo podobneou zkusenost? Nebo dokonce reseni?
Diky
mirek
Breakout a Momentum jsou velmi podobné typy strategií. Sám to rozlišuji tak, že Breakout nebo Trend following se vztahuje k jednomu trhu - vyhodnocuji nějaké podmínky, které musí trh překonat, aby systém vstoupil do pozice.
Momentum posuzuji jako relativní k nějakému dalšímu trhu/indexu.
Ano, mezi swingovými a dlouhodobými strategiemi není jasné rozhraní. Sám za swingové považuji spíše držení několik dnů, ale někdo jiný to může vnímat jinak.
Finwin - zde je autotrader: https://www.financnik.cz/forum/topic/5107-finwin-autotrader-skript/. Osobně aktuálně neobchoduji. Není pro to nějaký konkrétní důvod. Spíš má změna preferencí, kdy dnes v portfoliu upřednostňuji trendfollowing (breakouty) a momentum. Systémy mají sice nižší úspěšnost, ale vyšší RRR, což mě vyhovuje více než vysoká úspěšnost a nízké RRR. Plus testování na intradenních datech je náročnější než na denních, tj. neměl jsem zatím příležitost se k intradenním MR testům vrátit. Bez aktuálního vlastního výzkumu a retestování bych autotrader nespouštěl. Ale skripty byly funkční, předpokládám, že strategie funguje pořád stejně.
Díky za odkazy. Rozumím tomu, že pro diverzifikaci je dobré kombinovat různé styly strategií, Breakout, Momentum, MR. Potom krátkodobé a dlouhodobé, takže swingové a intradenní. A potom různé burzy v různých státech, US a CA.
Měl bych pár otázek.
Chtěl bych se zeptat je Breakout a Momentum stejný typ strategie, nebo se jedná o různé styly? Co se týče dlouhodobosti, v prezentaci jsou Intradenní, Swingové a Dlouhodobější obchody. Intradenní chápu, ale jak poznat Swingové a Dlouhodobější? Já chápu všechny na denních grafech jako swingové. Potom se chci zeptat na Finwin. S touto strategií mám zkušenosti, už před léty jsem byl na kurzu, momentálně ji v Trading Roomu nevidím, i když mám členství. Finwin je ještě nějak separátně?
Aleši díky za příspěvek.
Já jsem kdysi k závěru "Tím vlastně padá první myšlenka, že by bylo možné jednoduše nalézt nějaký patern pro řízení alokací v určitých situacích dle expozice do jednoho segmentu. " došel taky.
Protože zejména mean reversion jsou určité "stádové" strategie. Z principů naskakují do podobných šoků v různých akciích a buď půjde o velký zisk nebo velkou ztrátou (pokud se bavíme o extrémech).
Ty velké ztráty jsou pochopitelně nepřijemné a u mean reversion je musíme mít na paměti. Já tak dělám to, že u akciových mean reversion mám vyčleněný jen určitý budget, který jsem jim ochoten alokovat - například 20%. Každý už jen vystavený limitní vstupní příkaz si budget blokuje - tj. pokud budou vyplněny všechny vstupy, budu mít alokováno max. 20% účtu. A při zadávání mi algo funguje následovně - prochází postupně všechny MR strategie a bere z každé strategie "top signál", poté co projede všechny MR strategie tak "druhý top signál" atd až zaplní připravený budget.
Tím opět ořezávám extrémny na obě strany - jak ziskovou, tak ztrátovou. Nicméně odstraňuje to ty nejvyšší šoky, což je to, proč to dělám.
Svým způsobem tak mám aplikováno to, co zkoumáte, jen neřeším vztahy mezi akciemi. Jednoduše omezuji, že pokud je nějaký výrazný pokles = hodně MR signálů, tak stále otevírám jen určité, předem definované množství obchodů.
Přeji hezký večer,
stále se pokouším dosáhnout nějakých výstupů vlastní analýzou s Claudem. Nakonec jsem přestal prozkoumávat slepé uličky a zvolil podobný postup zadání, který je ukázán v kurzu ResearchOS a v následném Bogdanově videu úpravy skillu pro portfolio backtest. A výsledky se dostavily a podělím se o ně. Je to i hezká ukázka toho, co jsme my neprogramátoři s pomocí AI z dat vytáhnout.
I když je sdílený report v některých bodech chybný, tak to je spíše problém zadání, respektive toho jak uchopit některé skutečnosti. Asi nejzásadnější jsou chybná čísla celkové exposure (a z toho potom plynoucí info o akciích otevřených v jednotlivých strategiích). To však vychází z toho, že některé strategie vystupují na Open. A já jsem tyto dny nechal v analýze zahrnout jako otevřené pro ten zkoumaný den. To dává smysl z pohledu zisků a ztrát, protože tak zachytím noční změnu v pozici z pohledu backtestu Amibrokeru. Ale v případě exposure to dává občas až nesmyslné výsledky. Takže report ukazuje v jeden den maximální exposure 316%, ale reálné číslo dle mého kódu analýzy využití kapitálu bylo v ten den (historicky nejvyšší využití kapitálu 6.5.2010 na Flash Crash) 241%. Vlastně všechna data exposure, i ta průměrná a denní jsou občas i o desítky procent nadstřelená, portfolio mělo reálně v historii jen asi 55 dní, kdy by mělo expozici nad 200%. Vysvětluji to takto detailně, protože tak vysoké číslo exposure by, kdyby bylo reálné, znevěrohodnilo celou analýzu či můj přístup. Sám jsem si nejprve myslel, znaje skutečné expozice v minulých letech, že to je důkaz chybného výsledku celé analýzy. Když jsem ale "ručně" prozkoumal i vygenerované csv soubory s rozkladem jednotlivých dnů a pozic v jednotlivých strategiích a porovnal nedávné dny se skutečností jak jsem obchodoval, berouc v úvahu reálné vstupy a výstupy, kdy některé pozice do dne započítané byly již zavřené na Open, tak jsem nenašel chybu.
Pro připomenutí zadání o dva posty výše. Prověřit, zda v okamžicích Top gains a losses není možné vysledovat nějaký patern z hlediska vysoké expozice do jednoho či podobných segmentů trhu. Tedy zda vysoká expozice do jednoho segmentu nevede automaticky k ztrátám či ziskům. Přikládám interaktivní html report, ale protože mi první ve Firefoxu nefungoval a Claude ho musel opravovat, tak pro jistotu nasdílím některé screenshoty.
Toto je závěr Claudu, se kterým se docela ztotožňuji. Ve zkratce - nelze vysledovat, že by existoval nějaký pattern vyšší procentuální expozice do jednoho segmentu ve ztrátových či ziskových dnech oproti kontrolní skupině náhodných dnů (znovu upozorňuji, že čísla exposure jsou nereálně vysoká), respektive že by existovala asymetrie:
Software & IT či Semiconductors sice někdy vyčnívají. Ale stejně na obě strany. To ukazují i heatmapy:
Tím vlastně padá první myšlenka, že by bylo možné jednoduše nalézt nějaký patern pro řízení alokací v určitých situacích dle expozice do jednoho segmentu. A že tedy vyšší expozice do jednoho segmnetu v časech dobrých i špatných je asi vlastností portfolia/přístupu. To třeba ukazuje i náhodný případ jednotlivých dnů:
10/10/2018 portfolio utrpělo ztráty se 48% expozicí do Healthcare segmentu a 35% expozicí do Software & IT:
Aby o dva dny později v těch samých segmentech (Healthcare 42%, Software 46%) doáhl rekordních zisků:
Takže žádná snadná cesta k extra zhodnocení skrze jednoduché omezování či naopak boostování nějakého segmentu se nekoná. Nicméně stále nevzdávám myšlenku "indikátoru stádnosti". To bude ale vyžadovat úplně jiný přístup.
Post jsem zaplevelil hodně obrázky a zabral tak spoustu místa na stránce, omlouvám se. Když já si nemůžu pomoci z nadšení nad AI schopnostmi (pro zkušené programátory to asi zní trapně, ale jak říkám, nemůžu si pomoci). Tato analýza nebyla sice provedena v prostředí ResearchOS, ale bez prezentovaných postupů jak komunikovat s AI, jak zadávat a strukturovat úkoly a dotazy, bych to nezvládl. Je to tedy i taková reklama na AI. Použil jsem Claude, model Fable5, pracoval s celkem 20 soubory kompletních backtestů Amibroker, dvěma soubory dat s Top gains a Top losses, souborem s alokacemi, použitou pákou a počtem maximálních pozic systémů a jedním souborem s TRBC klasifikací všech akcií.
Co považuji za důležité není jen to, co Claude ukázal v reportu. Ale v průběhu komunikace při práci na analýze, i následné, kdy jsem se ho ptal na nějaké další pohledy, mě jeho odpovědi přivedly na několik zajímavých myšlenek k otestování.
Přeji hezký večer.
Aleš
exposure_report.zip
Tím, že sám exekuuji skrz futures jen MBT, tak jsem futures tolik neladil. Ale výběr dle volume mi dává smysl. Zkusím to do stávající verze dopracovat.
Server od roku 2003 vydává
Centrum finančního vzdělávání, s.r.o. info@financnik.cz
Upozornění: Všechny informace poskytované na Financnik.cz jsou určeny výhradně ke studijním účelům témat týkajících se obchodování na burze a neslouží v žádném případě coby konkrétní investiční či obchodní doporučení. Provozovatel serveru ani jednotliví autoři nejsou registrovanými brokery či investičním poradcem ani makléřem. Jsou-li na stránkách zmiňovány konkrétní finanční produkty, komodity, akcie, forex či opce, vždy a pouze za účelem studia obchodování na burze. Vydavatel serveru není zodpovědný za konkrétní rozhodnutí jednotlivých uživatelů. Burzovní obchodování a investování s finančními instrumenty (a komoditami obzvláště) je vysoce rizikové. Rozhodnutí obchodovat komodity a akcie je odpovědností každého jednotlivce a jedině on sám nese za svá rozhodnutí plnou odpovědnost. Nikdy se nepouštějte do obchodů, jejichž podstatě plně nerozumíte. Pamatujte, že burza má svá pravidla, kterým je třeba porozumět, než začnu riskovat své vlastní peníze!