Strategia ja sen testaus: Osa8

Pörssisysteemejä testataan useammin väärin kuin oikein. Yksi klassinen esimerkki on, että käytetään indikaattorin laskennassa sellaisia arvoja mitä ei laskentahetkellä vielä ole olemassa. Eli katsotaan takaisinlaskennassa tulevaisuuteen. Pekka Valkonen kehotti lukemaan Kari Laakson artikkelin Piksussa ja innostuin tästä testaamaan Coppock-indeksiä.  Koodasin AmiBrokeriin Coppock-indeksi koodin:

SetPositionSize(1,spsShares );
MonthPrice = TimeFrameGetPrice( "C", inMonthly, -1 );
Coppock = WMA(ROC(MonthPrice,14)+ROC(MonthPrice, 11),10);
Plot(Coppock, "Coppock", colorRed);

Tässä tein oikein eli käytin edellisen kuukauden close arvoa (oletan, että minulla on päivä-data) rivi 2. Jos olisin käyttänyt arvo 0, eli tätä kuuta niin olisin katsonut tulevaisuuteen. Tietäisin jo mikä on kuukauden close-arvo vaikka käyn vain päiväarvoja lävitse. Tämä virhe on yleisempi kuin harvinainen, kun käytämme eri ajanindikaattoreita samassa kuvassa. Alla on piirretty Coppock-indikaattori OMXH25 indeksiin.

 

4 thoughts on “Strategia ja sen testaus: Osa8

  1. Sir

    Hei,

    Siinä tulikin esille mielenkiintoinen ohjelma, jota en ole ennen noteerannut. Amibroker siis.

    Miten tuohon softaan saisi OMXH quotet? Saako nämä päivittymään automaattisesti?

     

    -Sir

    1. Data feed

      Data ostetaan erikseen. Voit käyttää ilmaisia lähteitä, kuten yahoota. Mutta siellä ei ole suomen kursseja, joten joudut ostamaan ne esignalilta. Esignalilta saa lähes kaikkialle datan reaaliaikaisena, se ei tosin ole aivan halpaa. Katso http://www.esignal.com sivulta. Heillä on oma ohjelma, mutta mielestäni Amibroker on parempi. Se on paljon joustavampi.

  2. Oikea Coppock-indikaattorin koodi

    Hei Jarno,

    Vältit tulevaisuuteen katsomisen Amibroker-koodissasi, mutta muuten se on melko pielessä mm. ROCit tulevat kaavassasi päivien jaksoilta eikä kuukausien kuten pitäisi.

    Alla on oikea alkuperäinen Coppock-indikaattori (päiväkuvaajassa arvo vaihtuu vain kuun ensimmäisenä päivänä) ja aikavälejä päiviksi muuttaen tehty nopeammin reagoiva Coppock Daily. Alinna olevassa kuvassa näkyy molemmat indikaattorit HEX25 EOD-kurssista laskettuna.

    Olen rakentanut eri strategioiden toteutuksia mm. kotimaisille ja ulkomaisille osakkeille ja rahastoille Amibrokeria hyödyntäen useiden vuosien ajan. Kauttani saa edullisesti EOD-kursseja mm. Helsingin osakkeet ja indeksit sekä Suomessa myytävät rahastot. Autan tarvittaessa rakentamaan Amibroker-indikaattoreita tai vaikka täysin automatisoidun päiväkaupankäyntijärjestelmän.

    Parhain terveisin,

    Jaakko

    jaakko.valli@tut.fi

     

    // Coppock Indicator

    // (C) Vallum Oy 2009-

    TimeFrameSet(inMonthly);

    Coppock=WMA(ROC(Close,11)+ROC(Close,14),10);

    TimeFrameSet(inDaily);

    Coppock_monthly=TimeFrameExpand(Coppock,inMonthly);

    UpOrDn=Flip(Coppock_monthly>Ref(Coppock_monthly,-1),Coppock_monthly<Ref(Coppock_monthly,-1));

    GreenOrRed=IIf(UpOrDn==1,colorGreen,colorRed);

    Plot(Coppock_monthly,"Coppock",GreenOrRed);

     

    // Coppock Daily Indicator

    // (C) Vallum Oy 2009-

    Coppock_daily=WMA(ROC(Close,233)+ROC(Close,296),210);

    UpOrDn=Flip(Coppock_daily>Ref(Coppock_daily,-1),Coppock_daily<Ref(Coppock_daily,-1));

    GreenOrRed=IIf(UpOrDn==1,colorGreen,colorRed);

    Plot(Coppock_daily,"Coppock_daily",GreenOrRed);

     

     

    1. Olet oikeassa!

      Koodissani käytettiin kuukausiarvoja käyttäen TimeFrameGetPrice funktiota. 
      Mutta tein kieltämättä virheen timeframen kanssa kun laskin ROC ja WMA, laskin ne päiväarvoista. 
      Näissä tekee helposti virheitä joten täytyy olla tarkempana. 
      http://en.wikipedia.org/wiki/Coppock_curve. 

       

      SetPositionSize(1,spsShares );

      TimeFrameSet(inMonthly);

      CoppockMonthly = WMA((ROC(C,14)+ROC(C, 11)),10);

      TimeFrameRestore();

      DayCoppock = TimeFrameExpand( CoppockMonthly, inMonthly);

      Plot(DayCoppock, "Coppock", colorRed);

       

      Buy = DayCoppock<0 AND Ref(DayCoppock, -1)<Ref(DayCoppock, 0);

      Sell = DayCoppock>0 AND Ref(DayCoppock, -1)>Ref(DayCoppock, 0);

      Buy = ExRem( Buy, Sell );

      Sell = ExRem( Sell, Buy );

      Ajoin tämän DJIA indeksin kanssa ja saimme kauppoja seuraavasti:
       

      Tämä tyyli tuottaa kauppoja varsin harvoin, mutta se löytää varsin kivasti halpoja ostohetkiä. Tämän 
      indikaattorin hyvyyttä on vaikea arvioida, koska kauppoja tulee niin harvoin.
      
      Tästäkin esimerkistä huomataan, että nämä tällaiset ohjelmat mitkä soveltuvat backtestaukseen ovat tehokkaita
      ja varsin yksinkertaisia käyttää vaikka niillä on mahdollista testata myös hyvin mutkikkaita systeemejä.
      
      Kiitos vielä Jaakko kun huomasit virheen.
      

Comments are closed.

Related Posts

"Minä voinkin ottaa nämä rahat"
Yhteiskunta

Mikro- ja makrotason horisontaaliset tulonsiirrot

Terve yhteiskunta pitää huolta kaikista jäsenistään. Siihen tarvitaan myös tulonsiirtoja. Perinteisesti oikeistossa tulonsiirtoja pyritään kutistamaan kun taas vasemmistossa niitä halutaan lisätä. Tulonsiirrot ovat tarpeellisia, mutta

Sijoittaminen

Suomalaisten yritysten tunnusluvut löytyvät piksun työkalut valikosta

Suomalaisten yritysten tunnusluvut on laskettu valmiiksi piksun TYÖKALUT -> ARVOSTUSKERTOIMIA sivulle:

S/P%  =  (S)ales per (P)rice.    Liikevaihto suhteessa markkina-arvoon (milj.) prosentteina. Joidenkin yritysten tekemä lisäarvo

Yhteiskunta

Yrittäjästatuksella (esim toiminimellä) toimimista helpotetaan ja sähköiset alustat voivat tarjota yrittäjästatuksella toimiville urakoita

Euroopan unioni on säätänyt alustatyödirektiivin, jonka mukaan alustatyötä (ja muita urakoita) tulee voida tehdä niin yrittäjänä kuin työsuhteessakin.

Monet maat, kuten Suomi, ovat pyrkineet pakottamaan kansalaisiaan

Sijoittaminen

Euroopan keskuspankin mukaan kulta on hyvä arvon säilyttäjä silloin kun ajat ovat levottomat

Euroopan keskuspankki kertoo raportissaan sijoittajille tärkeää informaatiota kullan soveltuvuudesta sijoitusinstrumentiksi:

Fyysinen kulta on antanut hyvää suojaa osakemarkkinoiden volatiliteettiä, talouspolitiikan äkkikäänteitä ja geopoliittisia riskejä vastaan.
Turvallisimpia