petek, 7. junij 2019

Nova verzija makexml in program za statistično analizo

Na strani Orodja sem updatal link na novo verzijo programa makexml za pretvorbo tradov v xml datoteko, ki jo je možno uvoziti v eDavke. Novosti (iz Readme.txt):

Verzija junij 2019:

  • Prejšnji problem je imel bug, da je narobe posortiral trade na istem tickerju, če je število tradov (transaction id) šlo preko 9. Problem je zdaj odpravljen.
  • Na več primerih so se pokazale težave s procesiranjem input fila s končnico ".csv". Po novem je default input file "input.txt", priporočam pa uporabo ".txt" končnice za file z drugačnim imenom.
  • Kljub velikemu vložku v izračun wash salea (Loss Valid) zadeva še vedno kaže znake nedelovanja. Raje jo izključim, kot pa da daje napačne rezultate, zato avtomatičen izračun polja <F10> ni več podprt in ga je potrebno ročno vnesti v excel (glej primere). Preostanek delnic (Shares Left, polje <F8>) program še vedno izračunava sam.

Druga novost pa je program za statistično analizo tradov, ki sem ga delal zadnjih nekaj tednov. Navodila in cel kup primerov je v dokumentu Navodila.docx, ki je del Test.zip fila, tukaj naj samo na kratko napštejem, kaj program omogoča, če bi bilo komu interesantno:

Test.exe je program za preprosto statistično analizo tradov. Njegovi osnovni funkciji sta:


  1. Analiza na osnovi nekih predefiniranih filtrov. Trade, katerega parametri ne ustrezajo filtrom, se ne vključi v analizo.
  2. Analiza targetov. Program omogoča, da vnesemo obsega za dva targeta, target1 in target2, nato pa prekalkulira vse kombinacije in izpiše rezultate.
Filtre je možno vnesti ročno (le en set filtrov) ali pa jih uvozimo preko zunanjega fila, kjer je število filtrov neomejeno, program pa preračuna rezultat za vsak posamezen filter in prikaže rezultat, posortiran po performancu, na tak način:


Druga opcija pa je test targetov, pri čemer vnesemo obseg za prvi in drugi target, program pa nato na osnovi podatkov iz spiska tradov izračuna, kateri target se najbolje obnese. Spet so rezultati posortirani po performancu:


Vsi rezultati se tudi izvozijo v zunanji file, prav tako pa program izvozi rezultat za 100 naključnih iteracij preko celotnega spiska tradov, da lahko izrišemo kumulativna grafa PL in PL/trade na tak način:



S pomočjo takih grafov lažje dobimo vtis o dejanski konsistenci sistema, neodvisno od zaporedja tradov.

Kot rečeno, natančna navodila s primeri so v Navodila.docx, tukaj sem želel le na hitro predstaviti program, če bi koga stvar zanimala. Za dodatne informacije sem na voljo na juretrader@gmail.com.

četrtek, 6. junij 2019

Zaključen 3. cikel

Pred nekaj dnevi sem zaključil svoj tretji letošnji cikel 20 tradov. Kot sem že nekajkrat povedal, sem si za letos zadal cilj razviti konsistentno metodo (za razliko od prejšnjih let, ko je bil moj fokus bolj na tem, kako narediti čim večji plus). Temu v namen sem svoj rizik zmanjšal na najmanjšo možno vrednost (na začetku na $10, potem na $15, zadnjih nekaj tradov pa sem naredil z $20 rizika), svoje trade pa sem razdelil v pakete po 20, ki jih potem ločeno analiziram.

Rezultati zadnjega cikla v primerjavi s svojim prejšnjim povprečjem so taki:


Kratek komentar vsake od točk:

Win rate preko zadnjih 20 tradov je bil le 20% (4 profitabilni tradi). To je poslabšanje glede na povprečje, vendar zame ni presenečenje, glede na to, kaj se je dogajalo zadnji mesec na trgu. Odločen sem bil, da celoten cikel izpeljem brez preskakovanja tradov, izkušnjo pa bom peljal s seboj v naslednji cikel. Več o tem na koncu.

Profit/loss per trade v R (riziku) je bil -0.05R, kar glede na slab win rate sploh ni tako slabo. Neto PL v R je bil -1R, kar tudi ni ravno katastrofa.

Najbolj pomembna podatka zame osebno pa sta Average Profit in Average Loss. Oboje seveda v R. Veseli me, da je tu opazno bistveno izboljšanje glede na moje prejšnje cikle. Predvsem zmanjšanje povprečnega lossa je bil eden mojih glavnih ciljev, za katerega lahko mirne duše rečem, da sem ga izpolnil skoraj brezhibno (-0.76R, prej -1.02R). Še vedno je moj cilj dolgoročno to številko spraviti v okolico -0.5R, kar bo ob upoštevanju slippaga zagotovo kar izziv.

Takole zdaj izgleda moj performance graf v R za vse tri cikle skupaj:


Kot je razvidno, sem bil v drawdownu veliko večino časa. Samo obdobje v aprilu kaže rast, vse ostalo pa je bolj kot ne pod vodo. S samim izgledom grafa seveda ne morem biti zadovoljen, vendar je to testno-učno obdobje. Po vsakem ciklu sem se poskušal nekaj naučiti. Pričakujem, da bo graf od tu naprej izgledal drugače. S tem mislim predvsem obdobja drawdowna, pričakujem, da bodo imela bistveno manjši naklon. Seveda, eno so moja pričakovanja, drugo pa to, kaj se bo res zgodilo.

Tole pa je graf dejasnkega equityja v %:


Kot sem rekel na začetku, še vedno tradam z izjemno majhnim rizikom. To pomeni majhne pozicije in majhne profite. Provizije pa so povsem enake, kot če bi tradal z 10x večjo pozicijo. Realen performančni graf bo začel slediti R grafu šele, ko bom rizik povečal na toliko, da bodo provizije skoraj zanemarljive. Ocenjujem, da se bo to zgodilo šele nekje pri 100$ rizika in zelo verjetno letos še ne bom prilezel na ta nivo.

Kakšen je moj plan za naslednji cikel? Tole so bistvene točke, na katere se bom osredotočil:
  1. Še naprej vzdrževati sistem stop lossa, ki mi je prinesel povprečen loss -0.76R. Ne želim, da se mi ta vrednost poveča.
  2. Nadaljevati sistematično pobiranje dobičkov. Na profite lahko še najmanj vplivam, vendar upam, da bom imel v naslednjem ciklu win rate vsaj 30% in povprečen profit v R vsaj +2R, kar bi mi ob dovolj nizkem povprečnem lossu, naredilo vsaj majhen profit.
  3. V komentarju o win ratu sem rekel, da sem se nekaj naučil iz prejšnjega cikla, ko sem vzel praktično vse trade. Izkazalo se je, da se lahko ujamem v izjemno neprijetno serijo lossov. Imel sem 16 failed tradov od 20! Veliko sem razmišljal o tem, kako na nek sistematičen način uvesti signale, kdaj kupovati in kdaj ne. Naj sem še toliko premetaval podatke sem in tja, nisem prišel do determinističnega sistema, ki bi dal bistveno boljši rezultat. Zato sem se odločil, da si bom tu pustil nek nivo svobode in subjektivno ocenil, kdaj je čas za kupovanje in kdaj ne. Ocenjujem, da po treh ali štirih nakupih v nekaj dneh, če nobeden od njih ne pride vsaj na prvi (razmeroma konzervativen) target, da očitno okolje ni primerno za moj sistem. Nimam edga in nadaljnje kupovanje nima smisla. Izjema naj bodo le setupi z izjemno dobrim reward-to-risk, ki jih enostavno ne smem spuščati.
  4. Zadnja točka je še vedno stvar testiranja, in verjetno bom rabil vsaj še kakšen cikel ali dva, preden bom imel dovolj tradov, da bom lahko rekel, da je statistika zanesljiva. Gre pa za to, da kaže na to, da določena stanja na trgu dajejo večji oziroma manjši edge. Na primer, zaenkrat izgleda, da se moji nakupi izjemno slabo obnesejo, če so po velikem down dnevu na trgu. Podobno je slabo statistiko dal test po gapu. Nakupi po zelo velikih gapih v katerokoli smer so dali bistveno slabši ali celo negativen rezultat. Na splošno se kaže, da povečana volatilnost daje negativen edge moji metodi in eden glavnih ciljev za naslednje obdobje bo, da si razčistim, kako to kvantitativno ovrednotiti in eventuelno vnesti v metodo. To be determined (TBD).