Jump to content
Co nového? Mé kurzy
Komunita:
Diskuze Sledované příspěvky Žebříčky

Doporučené příspěvky

  • Odpovědí 54
  • Vytvořeno
  • Poslední

Nejaktivnější diskutující

Nejaktivnější diskutující

Publikované obrázky

Odesláno

xzajic:

Ze jsem das kod strategie a odkaz na diskuzi je sice pekne, ale nechtel bys uz konecne napsat neco o tom, v cem vlastne spociva jadro problemu? Myslim, ze mnohem ucelnejsi nez sbirka backtestu by bylo nestineni toho jak je mozne, ze tento pristup funguje tak, jak funguje. Neni dulezite co ci jak, ale proc. Ja sam jsem prisel s moznym vysvetlenim, mohl by ses k tomu vyjadrit? Diky.

Sentrix

Odesláno

xzajic: Jen jedna poznámka. Nevím, jak přesne SF interpretuje zápis "close reached a new 10 day high". Ale pokud jsem to do RE napsal jako "High.Current >= tenDaysHigh", tak to dává cca. 2x lepší výsledek než "Close.Current >= tenDaysHigh".

Odesláno

"close reached a new 10 day high" by mělo být "bereme v úvahu pouze close cenu" a "ta je nyní nejvyšší za posledních 10 dnů". Já zanalyzuji obchody z SF, Tvůj systém a můj systém a hodím sem výsledky. V řádu hodin ;-)

Odesláno

Ovšem nejprve je třeba udělat neco, na co se často zapomíná, a to srovnat strategii s nějakým benchmarkem, abychom si mohli zodpovědět otázku, zda nám to všechno stojí vůbec za to, či zda by nebylo lepší prostě držet podkladové aktivum celý rok. Výsledky níže Vás možná překvapí (a to je tahle strategie jedna z nejlepších, na které jsem v poslední době narazil). Jak vidno z obrázku, v roce 2009 udělal SPY hezkých 26% za rok, kdežto strategie 33%. V případě investovaných 100000 USD činí rozdíl 6500 USD. Otázka je, zda za tuto cenu vyvíjet nějakou strategii, to už si musí zodpovědět každý sám. V roce 2010 udělal SPY krásných 15%, leč pohleďme, strategie pouze 1%. Nasazením této strategie bychom tedy přišli o 13600 USD a to by zamrzelo. V tahu by bylo i 6500 USD vydělaných o rok dříve. V roce 2011 udělal SPY 1%, strategie 6%. V případě investované částky 100000 USD bychom na tom při použití strategie byli lépe o 4000 USD. Ovšem za 3 roky bychom stále byli v mínusu nějakých 3100 USD oproti držení indexu, že. V roce 2012 udělal index SPY cca 16% (moc hezké), ale strategie udělala 18%, tzn. výsledkem je plus 1974 USD ve prospěch strategie. Suma sumárum za 4 roky je při držení SPY s reinvestováním 100000 USD vždy k 1.1. v daném roce celkový výsledek 59483 USD, při použití strategie pak jde o částku 58334 USD. Při použití strategie namísto držení indexu je za poslední 4 roky systém ve ZTRÁTĚ 1149 USD. Je tato ztráta vyčíslena přesně? Upřímně řečeno, není. Ceny u SPY jsou adjustované, tzn. tam jsou započítány dividendy, u cen ze strategie skutečně netuším, jak to SF počítá. Pokud se drží aktivum jen část roku, jako je tomu v případě strategie, tak samozřejmě můžeme dividendy propásnout. Dále, při použití strategie nejsou započítány poplatky. Při 50 obchodech za 5 let by mohly být poplatky řekněme 200 USD a ty by bylo nutné ke ztrátě přičíst. Kalkulaci pro pákové SSO ji jistě uděláte sami.

21407

Odesláno

To máš sice pravdu, ale zapomněl si na dvě věci. 1) V kritickém roce 2008 strategie ztratila mnohem méně než index. V případě DIA dokonce vydělala. 2) U strategie využíváme position-sizing. Viz. screen. EDIT: samozřejmě si na ně nezapomněl. :) Ale k tvé úvaze je bylo potřeba doplnit.

21408

Odesláno

Toť pravda, se zahrnutím roku 2008 to vypadá následovně, viz obrázek + je tam opravená chyba v roce 2012, která ale s výsledkem strategie moc nehýbe. Držení SPY 2008 - 2012: 20552 USD, strategie 64967, to už je podstatný rozdíl. 44415 USD za 5 let, neboli 8883 ročně "navíc" oproti držení indexu, to už je argument, neb představuje 9% očně průměrně za 5 let navrch. Držení SSO 2008 - 2012: 29559 USD. Mimochodem, tady je vidět, že páková ETF opravdu nejsou na dlouhodobou investici. Strategie vychází na milých 123786 USD, tzn. tady je rozdíl za 5 let celkem 94227 USD, to je 18800 USD ročně, neboli je to v tomto případě o 18,8% více než při tupém držení SSO. S tím position-sizingem, resp. reinvestováním zisků máš samozřejmě pravdu. Ale když mám pocit, že mi výnosová křivka tvoří na konci parabolu, tak já prostě vždy rozsekám zisky na jednotlivé roky a jakoby je koncem roku "shrábnu", protože výsledky jsou pak mnohem reálnější. Podle té Tvojí křivky bys v polovině roku byl POD počáteční nvesticí z kraje roku 2006 a to nevím, jestli bys psychicky ustál (já tedy sotva).

21409

Odesláno

Taxiku, ani náhodou nemám tu křivku stejnou jako Ty, i když použiju přesně Tvůj systém. Kde bereš data? Pokud z Yahoo, máš v Modify / Other settings zaškrtnuto "use Adjusted close"? Pokud ano, tak to odškrtni, dej pravý click na symbolu, pak "Purge data only", nasosej nová data která budou používat UNADJUSTED close ceny a zkus sem dát equity curve znova.

Odesláno

Tak jsem se konecne dostal k tomu, abych napsal kod pro TS, nicmene vysledek se znacne lisi od toho, k cemu jste dospeli vy. Zde davam k dispozici kod: /////Strategy start Variable: Double SMA3(0), double RSI10(0), double dropRSILast12Days (0), double gainSMALast12Days (0), double RSI10down (0), double RSI10down3 (0), double MA3UP8 (0), double MA3UP8_1 (0), double DIV1H (0), double DIV2H (0), double DIV3H (0), double RSI10DIVCurrent (0); SMA3 = Averagefc(Close,3); //SMA3day = (Close[3] + Close[2] + Close[1]) /3; RSI10 = RSI(Close,10); //TodaysHighestRSI = Maxlist(TodaysHighestRSI, RSI10); If RSI10[11] > 0 and SMA3[11] > 0 then begin dropRSILast12Days = (RSI10[11] - RSI10) / (RSI10[11] / 100); gainSMALast12Days = (SMA3[11] - SMA3) / (SMA3[11] / 100 ) * -1; end; RSI10down = IFF(RSI10 3 , 1, 0) ; MA3UP8 = IFF(SMA3 > SMA3 [11], 1, 0); MA3UP8_1 = IFF(gainSMALast12Days > 3, 1, 0); DIV1H = RSI10down * MA3UP8; DIV2H = RSI10down3 + MA3UP8_1; DIV3H = IFF(DIV2H > 0.5, 1 , 0); RSI10DIVCurrent = DIV1H * DIV3H; // Entry // If RSI10DIVCurrent > 0 then begin Print("Condtionmet"); Buy ("Long Entry") next bar at Open; end; // Exit// Variable: TendaysHigh (0), Exit1 (0), Exit2 (0), CurrentExit (0), Tendays(0); TendaysHigh = Highest(high,10); //TendaysHigh = Maxlist(HighD(10),HighD(9),HighD(8),highD(7),highD(6),highD(5),highD(4),highD(3),highD(2),highD(1)); //for (int i = 1; i Date[1] then begin Rate10 = Rate9; Rate9 = Rate8; Rate7 = Rate6; Rate6 = Rate5; Rate5 = Rate4; Rate3 = Rate2; Rate2 = TodaysHighestRate; TenDayROC = Maxlist(Rate10, Rate9, Rate8, Rate7, Rate6, Rate5, Rate4, Rate3, Rate2); TodaysHighestRate = 0; end; Rate = Rateofchange(close,15); TodaysHighestRate = Maxlist(TodayshighestRate, Rate); Exit1 = IFF(High >= TendaysHigh, 1, 0); Exit2 = IFF( Rateofchange(Close,15) 0 and RSI10DIVCurrent[1] .5 and CurrentExit = 1 then begin Print(Date, " ", Time, "CurrentExit = 1" , Currentexit); Sell ("Long Exit") next bar at market; end; //CurrentExit = 1 and //If Marketposition > 0 and currentexit > 0 then begin // //end; Jedna se o backtest za poslednich 5 let, tzn. i z krizi z roku 2008. Sentrix

21456

Odesláno

V rychlosti jsem to projel a co tam vidím:

1) Buy ("Long Entry") next bar at Open; - my vstupujeme na close dne.
2) TendaysHigh = Highest(high,10); - řešili jsme to pár příspěvků výše. V jazyce SF podmínka znamenala, že se vystupuje, když trh zavře nad nejvyšším close za posledních 10 dnů.
3) Sell ("Long Exit") next bar at market; - to taky vypadá, že vystupuješ až další den na close.


×
×
  • Vytvořit...