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

tisdag 22 december 2015

Mer statistik

Säkert ingen som missat att tisdag är den bästa börsdagen rent statistiskt sett, men tänkte ändå lägga upp statistik på avkastningen per veckodag och även per vecka i månaden.

Veckodag (0=måndag)


 Vecka i månaden(1 = första veckan)


Hade trott att 3dje veckan skulle vara den med högst avkastning, har sett en del teorier tidigare om att det skulle bero på optionslösen som sker på den tredje fredagen i varje månad. 

måndag 21 december 2015

Statistik

På senare dagar har jag sett en del kalendereffekter som publicerats, bland annat på udda/jämna veckor. Samuelsson hade ett par länkar, här och här.

Kände mig tvungen att testa själv och mina resultat är lite annorlunda. Främst för att jag körde över en längre tidsperiod. Kolla FTSE tex, deras test började 2010 vilket är cherry pickin så det sjunger om det. Jag vet inte hur dom gjorde med helgerna i deras test men jag använde close to close (fre-fre). Testade även några andra tillgångar än aktier.Dollar, Bonds och Olja ser mest intressant ut. Enjoy.








söndag 15 november 2015

Credit Suisse Fear Barometer Backtested


Sentiment är alltid kul att testa, jag har försökt skapa några egna index men det är ganska svårt att få till något vettigt. Lyckligtvis har jag en kompis som jobbar på en investment bank och därmed har tillgång till Bloombergs terminal som har ett stort utbud av data. Han skickade data på Credit Suisse Fear Barometer till mig för länge sedan, men jag har inte kommit till skott att testa det fören nu.

SPY + CSFB Index


Gjorde ett snabbt backtest, om index fallit mer än 2 punkter på 5 dagar, gå long och sälj efter 5 dagar.

Equity-kurva på backtest

Ser lovande ut, det stora problemet är att få tag i data. Har googlat lite men ingen verkar redovisa indexet. Tänker inte heller betala 300 000 kr för en bloomberg-terminal. Annars är jag säker på att man skulle kunna få till en mycket bättre modell, eventuellt med något medelvärde och standardavvikelser som triggers.

måndag 24 augusti 2015

Pang

Där kom det ett riktigt ras på börserna. QQQs va ner 15% i öppningen, AAPL ca 12%. Sjukt. Nu har dom hämtat igen allt dessutom. Helt galet.



Svenska OMX slutade kring -4,5% och är dessutom ner många dagar i rad, bra chans för uppgång härifrån så jag hedgade faktiskt bort mina korta positioner med några longs. Ligger alltså nettolång nu och väntar på en uppstuds, skulle vi få några % upp så kommer jag sälja och dessutom öka på mina korta positioner. Ganska övertygad om att trenden har vänt nu, men jag har haft fel förut.

Hur som, gjorde ett snabbt backtest på OMX, ner minst -3% = köp till stängning, sälj efter 3 dagar.
Lite drygt 60% chans att vi står högre om 3 dagar, med en genomsnittlig vinst på 1.2%


onsdag 5 augusti 2015

Trading the NFP #s

Nonfarm Payroll är en av de viktigaste statistiska siffrorna som släpps varje månad och en siffra som alla ekonomer, traders och förvaltare håller koll på. Genom att koppla upp sig mot FRED(Federal Reserve Economic Data) och deras api så kan man enkelt plocka ner den datan.

Du kan också hämta manuellt via denna länk.

Som ni kan se verkar korrelationen mot S&P vara ganska hög




Om man då gör en enkel strategi där man går lång S&P om NFP > 100 dagars medelvärde så får man följande resultat:

Blå = Strategi, Lila = Index




Strategi Drawdown: -30.5%
Strategi Sharpe: 0.65

Index Drawdown: -73.6%
Index Sharpe: 0.48


Testperioden var 1995 - 2015

onsdag 22 juli 2015

Quantopian

Quantopian håller på att skapa en riktigt vass plattform för traders som vill bygga automatiska strategier, det fina är att dom tillhandahåller all data vilket ofta är den svåraste biten. Även intradagsdata finns! Sentdex har gjort en video-serie där han går igenom hur man använder python med quantopian, kan rekommenderas för er som inte vill lägga ut tusentals kronor på diverse andra program. 


söndag 24 maj 2015

IPO Statistics

Här kommer lite fakta om IPOs!

Jag tog listan från Trade-Ideas som ska innehålla IPOs från de senaste 12 månaderna. Excel ville inte ta fler än 250 kolumner(behövde vågrät lista till python) så jag fick nöja mig med A-T. Efter att ha rensat ut några stycken som yahoo inte hade data på så slutade listan på 227 tickers.

Avg 1st day return O2C: -0,59% (!?!)

Hade nästan kunnat garantera att den siffran skulle vara positiv, men det är väl därför man ska göra sin hemläxa. Kanske beror det på att alla "bra" bolag redan har noterats och att det nu kommer ut mera skräp än tidigare? Hade varit intressant med data från tidigare år. Kan också vara så att aktierna öppnar upp så pass mycket att det helt enkelt inte finns någon uppsida kvar.

Avg 2nd day return O2C: +0,45%

Andra dagen verkar tydligen vara bättre, kanske för att aktier har en tendens till mean reversion? Om första dagen är dålig ökar chansen att andra dagen är bra?

Något jag brukar kolla efter är om aktien öppnar över sitt IPO-pris. Om den gör det får vi följande:

Avg 1st day return O2C: -0,10%
Avg 2nd day return O2C: +0,11%

Om aktien första dagen stänger över sitt IPO-pris:
Avg 2nd day return O2C: +0,90% (!)

Amerikanare är väldigt knepiga när det kommer till siffror, man pratar gärna i "points" och absoluta termer. Man hör tex att en aktie gick upp 4 dollar eller att Dow Jones är ner X antal points vilket såklart är totalt ointressant om man inte vet vad aktien eller index stod i från början. Jag vet inte om dom är för dumma för %-räkning eller vad orsaken är. Hur som så är det lite av en kvalitetsstämpel att ha en dyr aktie i absoluta tal, så jag delade upp aktierna i 3 "buckets".

Open day1 < 10$:
Avg 1st day return O2C: -2,37%

20$ > Open day1 > 10$ :
Avg 1st day return O2C: -1,13%

Open day1 > 20$:
Avg 1st day return O2C: +1,56%(!)

Kanske finns det lite värde i hur "dyr" en aktie är? Åtminstone när det gäller IPOs.

lördag 23 maj 2015

Research

Fått en hel del research gjort idag, hittade några intressanta saker. Ska göra ett inlägg om IPOs imorgon om jag hinner, min "hypotes" som jag tror många andra delar visade sig vara helt fel.

Jag väldigt glad att jag la ner några timmar(läs svinmånga) på att lära mig python, satan vad mycket enklare det är att gräva i data. Tex så trixade jag lite med en av mina bättre daytrading-strategier och gjorde en variant på den. Det ser riktigt lovande ut. Istället för att sitta i excel och skriva formler tills fingrarna blöder printar python ut både charts och statistik med några få rader kod. Grymt!

söndag 10 maj 2015

Momentum

Det finns mycket skrivet om momentum-effekter hos aktier, dvs aktier som gått bra senaste 3-12 månaderna tenderar också att gå bra nästkommande period. Själv har jag aldrig gjort några ingående studier tills nu. Jag provade att sätta ihop en portfölj som varje månad byter till de 5 aktier som presterat bäst föregående 60 handelsdagar (3månader). Urvalet sker ur OMXS30. Tyvärr så vill mitt program inte riktigt spela med och av någon anledning köps bara 3-4 aktier vissa månader. Jag ska försöka fixa detta men resultatet ser ut att vara värt att gräva vidare i. Orkar man så går det ju ganska enkelt att göra samma test i excel.

fredag 27 mars 2015

OMXS30

OMXS30 stängde idag negativt för tredje dagen i rad. Det ger en rätt hyfsad edge för uppgång på några dagars sikt. Nedan är backtest med exit efter 3 dagar.


söndag 22 mars 2015

Now we are cooking with peanut oil!

Har jobbat lite mer med att få ordning på Python och hur man skulle kunna använda programmet för att göra backtest och även optimera parametrar. Kan verkligen rekommendera TradingWithPython.Blogspot.com och TradingWithPython.com. Jev har byggt upp ett eget paket som tillägg och även kodat ett exempel för backtesting. Efter många år i det svenska skolväsendet är man expert på "copy and paste" så det var ganska lätt att få till en egen variant.

Det jag gillar mest är att man kan göra en så kallad "heat map" där man kan se hur resultatet (mätt som Sharpe-kvot i detta fall) ändras för olika kombinationer av variablerna.

Nedan är ett test på en tradingstrategi för WFC som jag använt ett tag. Mina värden som jag har använt är 0.2 för variabel 1 och 0.5 för variabel 2. Som ni ser är resultaten ganska bra för en bred range kombinationer i det nedre högra hörnet. Det är ett bra tecken och kan tolkas som att strategin är hyfsat "stabil"


Optimeringen är gjord på data mellan 2000-2014. Optimala värden var 0.32 och 0.69, inte så långt ifrån vad jag har använt.

För out-of-sample 2014 -2015 blir resultatet följande




Programmering

För att kunna göra bra research måste man gå igenom stora mängder data. Oftast har jag har jag använt excel till detta men det finns helt klart några nackdelar såsom att det är tidskrävande att hämta hem och organisera data. Det går säkert att skriva några rader i VBA som påskyndar allt men jag har ett excel från 1800-talet plus att jag har märkt en del problem när man kör svenska/amerikanska inställningar i både scriptkod och program.

I vanliga fall använder jag Nordnets Autotrader om jag vill bygga strategier vilket fungerar bra men även där finns några brister. Till exempel finns bara data på amerikanska aktier från 2012 och endast på vissa utvalda tickers. Dessutom är det ganska krångligt att göra enkla hypotesprövningar, en grej jag gillar att göra är tex. att jämföra intradagsavkastningen mot den avkastning som skapas över natten.

Jag har länge önskat lära mig riktig programmering och har försökt läsa på lite om vilket språk man bör börja med. Python verkar vara ett av de lättare språken samt omtyckt av många (gratis och open source också). Min gamla propfirma där jag började min tradingkarriär använder också Python och har även byggt en helt egen tradingplattform i Python. Nu har jag iaf laddat ner programmet och börjat leka runt lite. Jag är fortfarande ute på djupt vatten och vet inte exakt vad jag gör alltid. Hur som så fick jag fram några snygga grafer på "overnight vs intraday returns" och kan nu enkel jämföra olika tickers genom att bara byta symbol i koden, tar 3 sekunder jämfört med någon minut om jag skulle göra det för hand via yahoo finance och excel. Här är ett exempel på GLD, en guld-ETF. Som ni ser skapades i stort sett all avkastning "overnight" under uppgångsfasen. Viktig info om man försöker bygga ett tradingsystem.

onsdag 4 mars 2015

Trading Research - RSI

Det är ofta svårt att objektivt bedöma huruvida en teknisk indikator tillför något värde genom att bara titta i en graf. Kanske duger det som en första sortering men sedan bör man gå vidare och testa med riktiga siffror. En enkel grej jag kan rekommendera är "bucketing" där man delar in datat in mindre "buckets". Här tänkte jag lite snabbt gå igenom RSI, Relative Strength Index och hur det kan användas på SPY (ETF för S&P500).

Här är en graf över SPY med RSI från 2005-2015. Jag valde RSI(5) eftersom jag gillar affärer med lite kortare tidshorisont, annars är väl 14 det vanligaste värdet för RSI.


RSI pendlar mellan 0 och 100 där låga värden indikerar översålda nivåer och höga överköpta. 

Efter att ha delat in data i 5st buckets om 20 enheter, där 0-20 är bucket nr1, så får vi detta resultat.

Genomsnittlig avkastning nästa dag per intervall.
  1. =  0,36%
  2. =  0,09%
  3. =  0,01%
  4. = -0,01%
  5. = -0,02%
Genomsnittlig avkastning för alla dagar är 0,03%.

Om vi ökar tidshorisonten från 1 till 3 dagar får vi följande resultat. 
  1. =  0,45%
  2. =  0,23%
  3. =  0,10%
  4. = -0,03%
  5. = -0,02%
Genomsnittlig avkastning för alla tredagarsperioder är 0,09%

Efter detta enkla test verkar det som att RSI kan användas för att "förutspå" kommande utveckling på SPY. Om du använder en teknisk indikator så tycker jag verkligen att du ska göra ett liknande test. Många kastar bara på ett moving average, MACD  eller några Fib nivåer utan att veta om de gör någon nytta eller inte

Vill man lära sig mer om vad som fungerar inom trading så rekommenderar jag Samuelssons Rapport, där finns mycket bra material om tex Daytrading

söndag 22 februari 2015

Automatiserad Trading

Förra inlägget var kanske lite dystert men det finns ju en anledning att jag har lagt mycket tid på att utveckla idéer för automatisk eller mekanisk trading. Sedan årsskiftet har nämligen mina mekaniska modeller varit de som presterat bäst och min manuella handel har varit väldigt medioker. Här är de verkliga resultaten av min mekaniska handel.


Det här är över förväntan och med i takt med att antalet trades ökar så borde resultatet krypa ner mot en PF på 1.6-1.7 om mina backtest är hyfsat korrekta. Winrate långsiktigt borde ligga på ca 60%. Den faktiska avkastningen är inte så stor eftersom jag har testat dessa modeller med minsta möjliga insats. Det är ändå väldigt inspirerande när man ser att strategierna fungerar och det gör det lite lättare att fortsätta dyka ner i mer data.

Backtesting och överoptimering

Jag har den senaste tiden lagt rätt mycket tid på backtesting, att gå igenom statistik och försöka hitta nya edger. En grej jag alltid brottas med är huruvida det jag hittat bara är ett resultat av att jag har "misshandlat" data för mycket. Det finns några citat i stil med "if you torture the data long enough, it will confess" som beskriver fenomenet väl.

Jag skrev för ca en månad sedan om en ny idé jag hade med fundamental data, läs här. Så här en månad senare är det bara att konstatera att det fanns en hel del curve-fitting och överoptimering i det testet. Efter en månad ser out-of-sample ut så här:

Not so hot...

Ändå bygger strategin inte på några komplicerade formler eller 50 olika parametrar med exakta värden. Den var tvärt om, väldigt enkel, få parametrar med vad jag ansåg ganska logiska förklaringar till varför de borde vara relevanta. Just därför är det så viktigt att inte "hoppa rakt in" och börja handla en strategi direkt utan att man observerar den ett tag för att se om det verkligen fungerar.

Jag tittade på ett webinarium med Trade-Ideas(programmet jag använder) där dom visade en strategi som verkade rätt lik en idé jag har försökt få fungera under ett tag. Resultatet var helt sjukt bra så jag antog redan från början att dom hade överoptimerat strategin. Det borde ändå finnas en del värdefull information tänkte jag och skickade iväg ett mail med lite fler frågor angående vilka parametrar som var med. Jag fick faktiskt till min förvåning hela strategin med alla parametrar och insåg därmed att den var dömd att misslyckas (ingen ger bort något så värdefullt om den faktiskt fungerade).  Så här såg resultatet ut:

onsdag 18 februari 2015

Swedish Match

SWMA hade en dålig dag på börsen idag (-5,34%). Nedan är oddsen att köpa SWMA till stängningskurs vid -3% eller mer. Sälj till stängningskurs 3 dagar senare.


fredag 6 februari 2015

Hur man får fram ett statistiskt beslutsunderlag

Andrew Falde från LessThanRandom samt SMB Capital visar hur man använder Excel för att få fram värdefull statistik ur en stor mängd börsdata. Väldigt bra som en liten grundkurs om man ny på Excel.


söndag 1 februari 2015

Hur viktig är Januari?

Mycket snack om hur viktig januari är för börsens prestation de resterande månaderna, S&P stängde ju negativt för januari. Jag satte ihop en liten modell som ligger investerad mot börsen med enda villkoret att om januari är negativt så är modellen likvid tills dess att nästa januari är positiv. Om modellen är likvid erhålls en ränta om 2,5% på årsbasis. Verkar fungera bra på S&P men sämre på OMX, kanske krävs mer data för att dra någon slutsats dock.


S&P 500 från 1950-2015


S&P 500 (SPY) 1992-2015

OMX 1992-2015


söndag 11 januari 2015

Backtest på Fundamental data

I helgen har jag jobbat på att hitta nya potentiella strategier för min trading. En grej som jag provade var att lägga till filter för fundamental data. Tidigare har jag bara testat med hjälp av tekniska och statistiska variabler. Joel Greenblatt från Gotham Capital använder en kvantitativ modell för att analysera fundamental data och dessutom balanserar de om portföljen varje dag(!). Det finns en bra intervju med honom här. Om det fungerar för en av väldens största hedgefonder så varför inte testa?

Den här strategin är gjord för daytrading och tar en position under de första 120 minuterna av dagen och stänger positionen vid dagens slut. Tanken är att gå kort i bolag som är "konkursmässiga". Utan att gå in på detaljer innebär det hög skuldsättning, dåligt med cash och negativt EPS. Så här såg resultatet ut för ett backtest över de senaste 3 månaderna.

fredag 9 januari 2015

OMXS30 Rocketship

OMX hade en riktigt fin dag igår men frågan är om man ska köpa eller sälja en så pass stark uppgång?

Här är oddsen för att köpa vid +2% eller mer, sälj efter 1 respektive 3 dagar.


Det verkar som att det är bättre att vara säljare på starka börsdagar, även om merparten av den negativa avkastningen kommer ifrån finanskrisens dagar.