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.
Připravujeme nové video, ve kterém navážeme na chvíli, kdy naše hypotéza neobstála a ukážeme si, jak systematicky rozhodnout o dalším směru výzkumu.
Ukážeme si, jak pomocí skillu Checkpoint zaznamenat dosavadní zjištění, uzavřít neúspěšnou větev výzkumu a vyhodnotit, zda má smysl pokračovat hledáním nového filtru.
Poznatek z vývoje:
Když strategie nefunguje, je velmi snadné začít upravovat parametry nebo přidávat nové filtry jen proto, abychom zlepšili výsledky. Jenže právě tady z důvodu znalosti IS dat vzniká riziko přeoptimalizace. Každá další změna by proto měla vycházet z jasně definovaného důvodu, proč by měla fungovat a ne pouze z naděje, že zlepší výsledky.
B.
Dobrý den přeji,
chci se pouze ozvat, že jsem nehodil vše za hlavu. Pouze se mi nedaří dát dohromady analýzu, která by měla hlavu a patu. Narážím na spoustu maličkostí, se kterými si nedokáži poradit. Požádal jsem kamaráda programátora, aby to zkusil dát dohromady. Jakmile to bude, tak se samozřejmě ozvu.
Myšlenka mi stále nedá spát, jak z pohledu omezení volatility portfolia, tak i kvůli možnosti takové situace popsat jako případný edge v dynamickém řízení alokací.
Přeji hezký den.
Aleš
Dnešní alokace pro SMO_NDX - větší účet (100K dolarů):
buy 1 (2.51044%) SNDK market on open
buy 4 (3.66775%) MU market on open
buy 7 (3.9459%) WDC market on open
buy 4 (3.5907%) LITE market on open
buy 5 (4.37484%) STX market on open
Strategie alokuje 10% do pozice.
Pokud pracuje s kapitálem 20 000 dolarů - pak se pozice otevírá s alokací 2 000 dolarů. Tj. pokud akcie stojí 20 dolarů, pak se jich otevře 100
Dobré ráno, Petře. Děkuji za bleskovou analýzu!
Původní nastavení bylo na konstantní obchod tj. 100 akcií.
Vyzkoušel jsem jiná nastavení, obchodovanou částku od 50 do 2000 USD. Výsledek byl ještě horší. V některých případech skoro samé ztrátové obchody.
Jaké jste použil nastavení ve Vašich testech? Mám na mysli velikost počátečního kapitálu, prokluz, poplatky ...
Co vidím na první pohled - obchodujete konstantně 100 shares, což v některých akciích může představovat ohromný balík kapitálu (a tudíž potenciálně vysokou ztrátu), jinde sotva znatelný pohyb.
Dobrý den, Petře. Velmi obšírně jste rozebral moje statistiky a odhalil zásadní rozdíly od Vašeho přístupu. Za to Vám velmi děkuji.
Strategie jsem si upravil, zejména doplnil "pásma pro hodnoty RSI". Dlouho mi trvalo objevit proč simulace obchodů v TradeStation funguje v nástroji "Position Graf" (výpočty pro jedno aktivum) velmi dobře, avšak v Portfolio Maestro (výpočty pro zvolené portfolio) selhávají z důvodu nedostatku načtených dat (parametr Max Bars).
Níže vkládám histogram obchodů pro strategii MR RSI (5) v závislosti na poloze pásma RSILowLevel < RSI < RSIHighLevel a s časovým výstupem TimeExit(Bars) = 5.
Histogram získal průběh podobný Vašemu. Lišíme se ve sledované veličině. Zatímco Vy používáte "průměrný zisk" na obchod, já jsme byl nucen použít "průměrný obchod". Některé jednotlivé obchody byly totiž ztrátové, dokonce stáhly do ztráty "celé pásmo". Konkrétně pásmo RSI (0 až 5); RSI (90 až 95) a RSI (95 až 100). V důsledku toho mi křivka "průměrného obchodu" začíná v záporných hodnotách a končí opět v záporných hodnotách.
Křivka Equity má proto pro krajní pásma RSI velmi nepříznivý průběh.
Detailní výpis identifikuje konkrétní akcie zodpovědné za propad. Jedná se o malý počet akcí s nízkým výskytem (opakováním) avšak velmi dramatickým dopadem.
Máte vysvětlení proč se podobné propady neobjevily ve Vašem testu? Vzniklé DrawDowny jsou téměř likvidační. Nečekal jsem, že replikace Vašich testů bude tak složitý proces...
Aktualizovaná výkonnost strategií dashboardu k 2.8.2026:
Červenec u mě nakonec skončil měsíčním ziskem. Moje vlastní IBKR equity (většina systémů je obchodována z dashboardu) je aktuálně na maximu:
Největšími tahouny posledních týdnů byly long mean reversion. Pěkné zisky měla MRZ, kterou si zde sdílíme včetně kompletních pravidel (další velmi pěkné výsledky měla MRNDX - https://tradingroom.financnik.cz/system/58, která je zde také k dispozici včetně pravidel, ale kterou sám neobchoduji).
Kombo MRZCA + DEEPDIP + MRZ má dle Analyzeru equity:
A sharpe kolem 2.8 (CAGR 13,3% s drawdownem -1,74%).
Takto vypadá equity křivka stejné kombinace na mém živém účtu:
Podobná charakteristika výnosů, rozdíly v detailech. Ty jsou dané hlavně tím, že sám limituji počet otevřených pozic (a tudíž i limitních příkazů) v rámci long mean reversion. Konkrétně nechci mít najednou zainvestováno více než 15% equity (což je velmi konzervativní). Filtrování provádím tak, že u všech signálů beru ty nejsilnější do té doby, než se mi "zaplní" budget. V dobách, kdy se tak mean reversion daří mám výnosy nižší, v dobách kdy přijde drawdown, by můj drawdown měl být nižší.
Hezký profit jsem měl v shortech našeho interaktivního breakoutu. Tam již plně jedu s novým autotraderem a používám trailing stop-loss. Moje aktuální equity křivka:
Research OS 1.0 - Skill test-edge
V tutoriálu si ukážeme, jak pomocí Research OS systematicky ověřit, jestli použité filtry a indikátory skutečně přinášejí nějakou přidanou hodnotu.
Skill test-edge test-edge.zip
Připravujeme nové video, ve kterém zapojíme do našeho výzkumu nový skill /test-edge.
Ukážeme si, jak systematicky otestovat přínos jednotlivých komponent strategie, porovnat různé varianty systému a zjistit, co konkrétní filtr nebo indikátor skutečně přináší.
Poznatek z vývoje:
Když strategie vydělává, je velmi snadné připsat zásluhy kontextovému filtru. Jenže jeho úkolem by mělo být především zpřesnit už existující edge, ne ho vytvářet. Proto má smysl ověřit, jak si vede samotná logika strategie a jestli přidaný filtr skutečně přináší nějakou hodnotu.
B.
I MNQ, přestože jde o "micro" má stále poměrně vysokou nominální hodnotu a volatilitu. A ve volatilnějším období je pro 1 kontrakt potřeba vyšší stop-loss - aktuálně vám to s vaším Sl ukazuje 396.28 USD. Bohužel MNQ nelze obchodovat 0.5 kontraktu, v tomto jsou ETF lepší, protože se jemněji škálují. Proto ano, v podobných situacích může být obchod na QQQ a nebude s daným riskem na MNQ, protože ten se prostě nedá otevřít.
Jinak ale dobrá zpráva je, že i s tím, že některé obchody jsou na MNQ ignorovány (protože není možné dodržet risk) vypadá equity obchodovatelně. Tady jsou testy na MNQ (komise 0,85/kontrakt/strana):
Risk 100 USD / obchod:
Risk 200 USD/obchod:
Risk 300 USD/obchod:
Risk 400 USD/obchod
Risk 500 USD/obchod:
Dobrý den, Petře,
rád bych se ještě zeptal na následující. Začal jsem testovat upravený skript pro ID breakout v TWS a nejsem si jistý nastavením.
Nastavení testuji pro trh MNQ s nastaveným riskem 220 usd. Z historie daschboardu, pro ID breakout Short, vidím otevřenou pozici pro QQQ z 27.6. Na MNQ se mi ale pozice neotevřela, protože risk by byl vyšší, než mnou definovaný. Níže přikládám výpis z logu.
Z toho co jste dříve zmiňoval jsem pochopil, že Dashboard zobrazuje obchody s nastaveným riskem 200 USD, je tedy tento nesoulad způsoben rozdílností trhu QQQ vs MNQ? Předem děkuji za reakci
2026-07-27 15:31:55,292 - INFO - root - Selected FUT contract MNQ expiry=20260918 exchange=CME currency=USD conId=793356225
2026-07-27 15:31:55,294 - INFO - root - Working with expiration 20260918, symbol in Interactive Brokers: MNQU6
2026-07-27 15:32:02,560 - INFO - root - Downloaded 13352 bars. First: 2026-07-13 18:00:00-04:00, last: 2026-07-27 09:31:00-04:00
2026-07-27 15:32:02,623 - INFO - root - Today's opening price for MNQ: 28591.25
2026-07-27 15:32:02,649 - INFO - root - MNQ context: Open=28591.25 OpenD1=28540.0 CloseD1=28286.75 ATRD1=495.35 HighD1=28631.25 LowD1=28212.5
2026-07-27 15:32:02,649 - INFO - root - Evaluating individual sub-conditions:
2026-07-27 15:32:02,649 - INFO - root - abs(Open - CloseD1) > abs(OpenD1 - CloseD1) => True
2026-07-27 15:32:02,649 - INFO - root - Open > CloseD1 => True
2026-07-27 15:32:02,650 - INFO - root - Open > 0 => True
2026-07-27 15:32:02,650 - INFO - root - Complete context condition: 'abs(Open - CloseD1) > abs(OpenD1 - CloseD1) and Open > CloseD1 and Open > 0' => True
2026-07-27 15:32:02,650 - INFO - root - **** Can trade: True
2026-07-27 15:32:02,650 - INFO - root - Breakout levels for MNQ: long=28739.75 long_SL=28541.75 short=28442.75 short_SL=28640.75
2026-07-27 15:32:02,650 - INFO - root - RISK MNQ mode=fixed_usd risk_per_trade_usd=220.00
2026-07-27 15:32:02,650 - INFO - root - MNQ risk per trade: 220.00 USD (mode=fixed_usd)
2026-07-27 15:32:02,650 - INFO - root - MNQ sizing: long_qty=0 short_qty=0
2026-07-27 15:32:02,650 - WARNING - root - MNQ: long qty is 0, long order will not be placed. Minimum risk for 1 contract is 396.28 USD (current=220.00, shortfall=176.28).
2026-07-27 15:32:02,651 - WARNING - root - MNQ: short qty is 0, short order will not be placed. Minimum risk for 1 contract is 396.28 USD (current=220.00, shortfall=176.28).
Ne, bot nikdy nesahá do pozic, které neotevřel. Ale bude v tom zmatek - už jen situace, kdy bot nakoupí opci X a vy stejnou vypíšete (prodáte). Už jen toto nedává moc smysl, protože na účtu nebude nic (pokud to bude stejný počet kontraktů).
Ale prakticky
1) pokud někdo jiný přikoupí stejnou opci (bot nakoupil 4 opce, někdo další 2 opce - tj. na účtu bude 6 stejných opcí), bot uzavře pouze 4, ale bude v logu informovat o nečistém uzavření.
2) pokud někdo prodá botu pozice (bot nakoupil 4, někdo další 2 prodal - tj. v ib jsou 2) bot uzavře 2 pozice a bude to ok.
3) pokud je na dané strike short pozice (tj. negativní počet) - toto vyvolá kritický alarm. Bot na dané strike nebude obchodovat. Protože tato situace je to hlavní co chci mít pod kontrolou - nákup opce se nemůže za žádných okolností přeměnit na short (například pokud bychom prodali více než máme nakoupeno). Proto short na obchodované strike je vždy kritickou chybou.
4) jiné příkazy na stejnou opci - pokud mají jiné OrderRef, tak si jich bot nebude všímat
Tedy pokud by jiný bot nakupoval, tak by to mělo fungovat i na stejný strike, ale bude v tom zmatek (a není to otestované). Ale výpisy na stejné strike fungovat nebudou a ani by to reálně moc nešlo na stejném účtu dohromady.
Pokud to potřebujeme kombinovat, tak pak leda s tím původním skriptem, který to nekontroluje. Nový skript posouvá limitní příkazy, kontroluje jejich rušení a podobně. Pokud by se do toho dostaly stejné pozice otevírané ručně/jiným botem, tak to bude hrozně zmatečné a bude se to těžko kontrolovat.
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!