lördag 30 juni 2012

Tickdata: Några observationer

I enighet med talesättet bättre sent än aldrig har jag börjat samla in affärshistorik för de fyra stora nordiska aktiemarknaderna. För till skillnad från dagligt samplad prishistorik så är tickhistorik, eller för den delen all intradagshistorik mycket sällsynt och dyr att köpa. Så för den lilla kvantoperationen som inte är villig att spendera stora delar av årets vinst på historik så blir det till att bygga en egen databas. Själva insamlingen är ganska simpel och kräver inget arbete; en liten app skriven i C# startas automatiskt när datorns slås på och ligger för de mesta och sover i bakgrunden. När börserna stängt för dagen så börjar den att läsa in Nordnets hemsida och gå igenom tabellen som visar dagens affärer nod för nod och sparar det i en txt-fil. Jag har nu lite mer än två veckors historik som tar upp en plats på runt ~250Mb så ett år borde blir runt 6-7Gb - knappast något som kommer att kräva en extra hårddisk i framtiden. Problemet med att endast ha level 1-data är att det finns inget sätt att veta om man kunde fått priset som senaste affären gjordes på. Ännu bättre skulle det vara att spara level 2-data (hela orderboken vid varje tidpunkt) men jag saknar en leverantör där jag skulle kunna hämta det gratis.

Med historik från den 15/6 (exkluderat den 18 då min app buggade ur) till den 29/6 har jag ritat följande diagram med omsättningen för varje minut för alla aktier i Sverige, Norge, Danmark och Finland. Den svarta linjen är medelvärde för de senaste 60 minuterna. Som förväntat så är öppningen och stängningen stora minuter, runt lunchen vänder den nedåtgående trenden och omsättningen ökar hela eftermiddagen.   




Något intressant med omsättningen är att den för varje minut är ganska förutsägbar baserat på de två föregående minuterna. Om omsättningen ökar en minut så finns det en sannolikhet på 64% att nästföljande minut har en lägre omsättning, och vice versa.

På samma sätt finns de en relation mellan förändringen i sekvensen av affärer. Om en affär sker till ett högre pris än föregående finns de en sannolikhet på 28% att nästa är lägre, 60% att nästa är på samma pris och 12% att det är högre. Omvänd så gäller för tick nedåt att 28% av nästföljande affärer sker högre, 60% oförändrat och 12% på samma. Anledningen till varför det ter sig så ligger förmodligen i alla de effekter som påverkar marknadens mikrostruktur som jag ännu inte har lärt mig. Då en tick uppåt förmodligen tar säljarnas bud  så borde köpsidan bli större än säljsidan och obalansen borde trycka kursen uppåt, men tydligen är sambandet omvänt. Kanske ligger svaret i likviditetsgaranternas vinstmarginal.

Hursomhelst är min samling ännu alldeles för liten för att börja backtesta seriöst på, För det krävs minst över 18 månader, för även om antalet observationer kan bli ganska stor med högre frekvens så garanterar det inte att marknadsklimatet inte påverkar resultatet allt för mycket. Jag planerar även att spara ner pressmeddelande och telegram som kommit under perioden, men det verkar iallafall Avanza spara på i minst ett år så jag behöver nog inte hämta det så ofta. Det ska bli intressant att se om det finns någon alfa intradag som ännu inte sugits upp av "robothandlarna".



KvA

lördag 2 juni 2012

11 sommarprojekt för den sysslolösa

Med de sista kurserna avklarade och de sista proven skrivna har jag nu plötsligt massor av tid att spendera på allehanda projekt under sommarlovet. Jag har börjat skissa på ett större programmeringsprojekt där jag ska skriva ett program för backtesting och aktieanalys som kommer att få Hitta Kursvinnare att blekna i jämförelse (förhoppningsvis). Jag ska skriva det i C# med bl.a. Meta Numerics för diverse statistiska funktioner. En intressant möjlighet jag undersöker är att få programmet att automatisk skicka ordrar till min mäklare vid givna signaler. Det skulle gör att jag slapp missa signalerna vissa dagar då jag inte haft tillgång till en dator. En annan funktionalitet jag planerar att undersöka är insamling av tickdata för att i framtiden börja daytrada eller kanske förbättra exekveringen av mina existerande strategier. Jag känner en pressande känsla av att jag behöver lära mig allt om databaser.   

För att dock försäkra mig om att ha saker att göra i sommar mellan programdesignandet och sommarmatten så komponerade jag en lista av projekt vem som helst kan ta sig an.
  1. Skriv ett kod som automatiserar en tråkig och enformig syssla du ofta gör, t.ex ladda ner nyckeltal eller hålla reda på affärer så att de lätt kan skrivas in i en K4-blanket. Kan du inte programmera så hitta någon som kan hjälpa dig att lära, mycket går att lära sig genom att bara läsa runt på internet. 
  2. Analysera alla affärer du gjort det senaste två åren och undersök vilken del av din beslutsprocess som bidragit minst till resultatet. Undersök om det skulle vara fördelaktigt att eliminera det steget. 
  3. Gå utanför din vanliga trivselzon och testa något nytt du aldrig förut funderat att handlat med, läs på om t.ex optionsstrategier och undersök möjligheten att minska din risk eller öka din avkastning genom att komplimentera dina investeringar.
  4. Hitta ett forum på internet och lär känna personerna där. 
  5. Samla allt informationsflöde du vill ta del av på en och samma plats. Ladda ner Operas webbläsare och lägga till alla bloggar, nyhetssidor och forum som du kan tänka dig vara intresserad av som kanaler till läsarens e-post.
  6. Skriv ut ett gäng uppsatser från ekonomutbildningar och läs igenom. Försök hitta fel i resultaten.
  7. Gå på en bolagsstämma, föreslå omedelbar likvidation av bolagets tillgångar. 
  8. Leta upp någon någorlunda känd självutnämnd "börsexpert" och öppna sedan ett papperskonto där du agerar i direkt motsatts till dennes rekommendationer. Utvärdera resultatet och skicka till experten med tillhörande vitsord.
  9. Ta en dag för att analysera orderboken hos någon mindre omsatt aktie på stockholmsbörsen. Leta efter korkade robotar eller ovana nybörjare som du kan utnyttja för egen vinning.
  10. Starta en blogg. 
  11. Stäng av dator och gå ut och njut av solen.