Visar inlägg med etikett Candlestick. Visa alla inlägg
Visar inlägg med etikett Candlestick. Visa alla inlägg

söndag 19 juni 2011

Candlestick-projekt: Utvärdering

För att få lite djupare förståelse för hur det mönster som den genetiska algoritmen utvecklat så har jag gjort lite statistiska tester. Samma historik från Yahoo, alla affärer görs vid stängning.




I den övre tabellen visas statistik för in-sample-perioden, alltså den period fram till sista mars 2009 som användes för att optimera mönstret. Utfall är den genomsnittliga affären, längd är hur länge en position hölls i genomsnitt. Att längden inte är exakt fem dagar som var den utvecklade stoppen för strategin beror på att en formation kan hålla i sig i flera dagar. Vinst/förlust visar vad kvoten mellan den totala sammanlagda vinsten från vinstaffärer delat i förlustaffärer är. Ett värde större än ett visar att du går med vinst.

Daglig avkastning är den genomsnittliga utvecklingen för en dag i en position. CAGR beräknas utifrån det med ett antagande att ett år innehåller 252 börsdagar.



Notera att resultatet blir bättre out-of-sample, på den historik som vi inte använt för att optimera resultatet. Detta beror på att de år som representerar vårt out-of-sample är alla starka börsår, t.ex. 2009 och 2010. En positiv marknadsutveckling är bundet att påverka vårt resultat positivt då denna strategi endast tar långa positioner (i motsatts till strategier som även tar korta, eller negativa positionen mot prisutvecklingen). Så för att egentligen vara rättvisa måste vi justera för marknadens resultat, och även volatiliteten som förstärker avkastningen.

Ett enkelt statistiskt test för signifikans är Students t-test. Där vi tar medelvärdet för urvalet minus vårt hypotetiska medelvärde, vilket är den genomsnittliga utvecklingen för alla dagar för en aktie. Om vår strategi är helt slumpmässig så borde medelvärdet för strategin vara samma som medelvärdet för alla dagar, då det bara är det slumpmässigt urval. För att bevisa att strategins medelvärde verkligen skiljer sig från det hypotetiska medelvärdet måste det ligga tillräckligt långt från medelvärdet enligt vanligt normalfördelning. Typiskt sätter man kriteriet till 95%, vilket är då man kan säga med en sannolikhet på 95% att urvalet skiljer sig från medel. Dock kan man inte anta att marknaden är normalfördelad men vi bortser från det för tillfället. Formeln för t-testet ser ut så här:




Efter att man beräknat skillnaden mellan urvalet och hypotesvärdet så delar man det med standardavvikelsen för urvalet delat i roten ur antalet observationer. Från detta kan man kolla signifikansen i en tabell.

Jag gjorde ett t-test för varje aktie som hade testats och sedan tagit ett medelvärdet på detta. För in-sample-perioden var resultatet att med 68% sannolikhet skiljde sig strategins affärer från de som kunde åstadkommas med slumpen. Detta betyder inte speciellt mycket då vi använt en optimerings-algoritm för att få fram det resultatet. Skulle vår fitness-funktion i den genetiska algoritmen vara ett t-test skulle det värde vara mycket högre. Vad vi är intresserade av är hur det går i out-of-sample-perioden.
Där är signifikansen 55%, vilket är sämre än i in-sample-perioden även om denna period hade högre vinst. Då 55% chans till framgång är ungefär vad man kan åstadkomma med ett mynt så kan vi dra slutsatsen att mönstret inte ger någon större fördel i aktiehandel.

KvA

fredag 17 juni 2011

Candlestick-projekt: Resultat

Efter mycket kopierande, muterande och kopulerande så har min genetiska algoritm kommit fram till ett maximum i parameterrymden över alla candlestick-formationerna. Med en optimal tidlängd innan positionen avyttras på fem dagar så gav detta mönster bäst resultat på OMXS30-aktierna.


Notera hur den svarta "kroppen" växter för varje dag vilket visar på svaghet i kursen. Om man skulle få för sig att handla enligt mönstret med alla OMXS30-aktierna och ombalansera kapitalet vid varje dag slut så att alla aktier fick samma andel så skulle värdekurvan se ut så här:




Allt före den sista mars 2009 har används för att utveckla formationen, allt efter är nytt och ovisst. Utvecklingen är lite platt innan 2003 vilket beror på att Yahoo Finance inte hade historik innan det för flertalet av aktierna. Allt som allt så ser värdekurvan mycket jämn ut och lyckas undvika några större värdefall under 2008 men samtidigt att ta vara på de bättre åren.

Här är ett exempel på en affär för ABB.

Mönstret starta att formas vid dag 14 och en position tas vid dag 16. Efter det kommer fem dagar av vita staplar varvid positionen avyttra dag 21.

Ett litet bevis på styrkan i det naturliga urvalet.

KvA

söndag 8 maj 2011

Candlestick-projekt

Det här kan bli kul.

Som jag la ut i ett föregående inlägg så kan man undersöka dugligheten hos candlestick -formationer genom att först definiera de objektivt och sedan låta en algoritm optimera fram den bästa formationen. Den algoritm jag främst hade i åtanke var en genetisk algoritm, där man låter principen bakom det naturliga urvalet arbeta fram den bästa candlestick-formationen. Projektet ska läggas upp ungefär så här:

Genetisk Algoritm: en simulerad evolution av olika lösningar på ett problem, i det här fallet en värdematris som representerar hur en viss candlestick-formation ter sig. Man börjar helt enkelt med en population och låter sedan den populationen ge upphov till en ny generation med en förutbestämd selektionsprocess. För att ranka individerna använder man någon sorts fitness-funktion. Här finns det många varianter för att bestämma vilka som ska få föröka sig. Ett sätt är att ha turneringar där man låter två slumpmässigt valda individer tävla om vilken som ska bli en av förälder. Ett annat sätt är att man bara rensar bort sämsta x-procent av populationen. Jag har bestämt mig för att gå en annan väg och låta sannolikheten att bli utvald till förälder till individerna i den nya generationen stå i direkt relation till individens fitness-värde. Man kan föreställa sig det som ett rouletthjul där de bättre individerna enligt fitness-funktionen tar upp större utrymma vilket gör att kulan hamnar på de oftare. Det ger de sämre individerna en chans att föröka sig vilket bidrar till att hålla variationen uppe och minskar risken för att algoritmen ska fastna i ett lokalt maximum. Men det skulle ge en ganska seg algoritm om det inte fanns någon större selektion som sållade ut de mindre bra individerna så att de kan ersättas av bättre. Därför har jag satt en restriktion på att en individ måste vara bättre än median för att få föröka sig. Alla under "dör".

Fitness-funktionen: sätter jag till att vara slutvärdet för en portfölj där man handlat enligt candlestick-mönstret. När det nuvarande mönstret för en aktie stämmer överens med det mönster som testas till över 90% mätt i ett enkel korrelationstest så köps aktien till stängningskursen. Portföljen börjar på ett värde på 100 och investerar alltid 100% av tillgängligt kapital. Inga kostnader för handeln simuleras.

Testdata: de aktier som ska testas är alla nuvarande komponenter i OMXS30. All tillgänglig data från Yahoo Finance har används fram till den sista mars 2009. Resresterande historik ska användas för att validera slutresultatet.

Population: jag har valt att sätta antalet till 500 individer. Det ger evolutionen lite att jobba med, men samtidigt inte för mycket för att sakta ner utvecklingen till det bättre. Jag gör ingen skillnad på honor och hanar, mina candlestick-mönster ska vara hermafroditer.

DNA: varje mönster eller individ representeras av 13 värden. Jag har valt att fokusera på mönster som sker över tre dagar. För många dagar skulle ge för många mönster, vilket gör det svårt att generalisera. För få och jag får inte tillräckligt många olika kombinationer av kurser.
Öppningskursen, högsta kursen, lägsta kursen och stängningskursen ger 4 värde för varje dag och totalt 4*3=12 för tre dagar. Det trettonde värdet är det antal dagar som ska gå efter positionen initieras tills den stängs. Strategin bygger alltså på en tidsstopp.

Mutationer: varje värde, eller gen, har en chans på 1,5% att muteras. I en population på 500 individer ger det ungefär 98 mutationer. Det är tillräckligt för att ge variation, ett för högt värde på mutationstakten ger för många dåliga individer då mutationer för det mesta är misslyckade. Prisvärdena kan muteras med en förändring på 0,25% positivt eller negativt. Det trettonde gener kan muteras till ett värde mellan 1 och 5. Jag har satt restriktionen 5 så att algoritmen inte får för sig att utveckla fram mönster som håller positioner flera år och då bara överoptimerar konjunktursvängningarna.

Iteration: för att beskriva det mer klart och tydligt fungerar en iteration så här.

  1. Två individer slumpas fram ur populationen med en sannolikhet som motsvarar det relativa fitness-värdet för individerna.
  2. En ny individ genereras genom att 13 gener tas av föräldrarna slumpmässigt. Eventuella mutationer uppstår.
  3. Individen testas och får ett fitness-värde.
  4. Individen ersätter den sämsta individen i populationen.
  5. Steg 1 till 4 upprepas tills populationen består av ett och samma mönster.
I nästa inlägg ska jag presentera resultatet.


KvA

torsdag 21 april 2011

Candlestick

Få sätt illustrerar prisrörelser bättre än candlestick-diagram. Då förhållandena mellan öppningspriset, det högsta priset, det lägsta priset och priset vid stängning kan te sig på många sätt över flera dagar är det inte konstigt att människor har hittat på namn åt mönster de säger sig se. Det engelskspråkiga versionen av Wikipedia har en stor samling av allt från enkla mönster med enskilda staplar till mer komplexa mönster över flera dagar.


Många av dom har ganska kreativa namn, oftast japanska.


Mer komplexa mönster kräver att ljusen över flera dagar har sett ut på ett visst sätt.


Gemensamt för alla candlestick-mönster är att det förväntas ge en förhöjd sannolikhet att nästföljande rörelser kommer vara åt ett visst håll. Och här börjar candlestick-analysen att mynna ut i det vanliga tekniska analysens pseudovetenskapliga synsätt. Skaparen av candlestick sägs vara en japanska rishandlare som tjänande hundratals miljarder genom sina analyser och var snäll nog att skriva böcker för att dela med sig av sitt sätt att tjäna pengar. Vissa mönster förhöjs med myter om det magiska sättet att förutspå marknaden.

Men det finns inget mystiskt med candlestickformationer, och de kan testas objektivt. Jag har gjort det förut i denna blogg med varierande resultat. Dock räcker det inte riktigt med att testa alla namngivna formationer för att avgöra huruvida det finns något predikterande värde i candlestick-diagram. För att göra det måste vi första skapa en värderymd som kan beskriva alla möjliga formationer. Sedan är det bara att låta en effektiv algoritm söka sin väg genom rymden och lokalisera de bästa candlestickformationerna.

Stay tuned...

KvA