Går det att slå index på 5 minuter i veckan?

För en potentiell köpare som är beredd att betala multum så ser jag inte problemet. Den köparen vill ju ha algoritmen nu och inte vänta 10 år.

Säljer man algoritmen så kan man ju inkludera datan och optimeringsalgoritmen (läroalgoritmen). Då kan man ju köra samma optimering igen på data som är verifierad vara tillräckligt gammal och då ska man få samma resultat. Alltså köparen kan ju väldigt enkelt säkerställa att den modell som har gett resultat på 10 års historisk data inte är tränad på samma data.

Alltså det är ganska enkelt när man väl släpper hela algoritmen till någon.

Jovisst, men hur vet du att algoritmen för att träna algoritmen inte har blivit anpassad av datan? Exempelvis, vi väljer att plocka bort alla outliersmätningar som ligger mer än tre standardavvikelser från medlet. Hur ska du ta reda på om detta beslutet var informerat av datan (kanske genom att pröva alla möjliga cut-off-gränser för att hitta ett värde som presterar optimalt på verifieringssettet) eller om det togs som något slags common sense-beslut utan att titta på datan först?

Det här har blivit en jätteintressant diskussion! Tack till alla som bidrar!

Som ny medlem på forumet (tack för det varma välkomnandet!) så blir jag kraftigt begränsad i hur mycket jag kan svara på ett dygn. Skriver här ett större inlägg med frågeställningar som sett och ska också försöka att svara lokala kommentarer i den mån jag kan.

"Det är samma sak att backtesta på en tidigare osedd period som att faktiskt köra en strategi live"

Nej, det är det inte.

Ang simuleringsfel och -begränsningar (t.ex. exakta köp- och säljkurser, spreads, buggar eller utebliven marknadspåverkan bara för att nämna några): Om jag handlar i en portfölj på Avanza i 10 år så faller jag inte offer för dessa. Bara det är skäl nog att inte betrakta backtestning som livekörning.

Att säga att det är samma sak att köra live 10 år framåt och att backtesta på de senaste 10 åren idag är heller inte sant. Om man ställer följande fråga: Skulle du hellre använda en strategi som tränats på 10 års data eller 20? (Det är en enorm skillnad)

Och genom att träna på hälften av datan (som dessutom är gammal; 2002-2012 - det har hänt en del sedan dess) för att sedan utvärdera den på tidernas mest hysteriska bull-klimat får man sannolikt vare sig den bästa generella modell man kan få, eller den bästa utvärderingen av den.

Man vill träna på så mycket data som möjligt, det är det enda som inte är en avvägning. det är önskvärt på alla sätt, framför allt i termer av overfitting som minskar med större datamängd. Data är värd sin vikt i guld; det gäller att ta tillvara på den maximalt. Så hur gör man det? “Det finns inga lösningar, bara avvägningar.”

Approachen som jag tagit: Träna på svensk data (som ju är den data jag vill bli bäst på). För att få en fingervisning om hur bra algoritmen är, testa på andra marknader som påminner om den du vill prestera på. Låt detta vara en fingervisning. Ta inte siffrorna som gospel. Det finns då givetvis en bias i att det rör sig om samma 20-åriga tidsperiod (icke att förringa) men det rör sig åtminstone om helt andra aktier. “Det finns inga lösningar, bara avvägningar”.

Det ska också sägas att jag vidtagit tekniska åtgärder för att krama ur så mycket som möjligt ur datan utan att driva på overfitting. Det är ett helt ämne i sig själv - minst sagt. Data Science är ett hantverk och varje problem är unikt. Jag har skrivit en masteruppsats i ämnet och det här är inte min första rodeo.

"Man kan overfitta även validerings-/testdata."

Exakt!

Om du tweakar hyperparametrar tills du är nöjd med valideringsresultatet så får du de facto förmodligen en bias mot din valideringsdata.

Ytterligare en anledning till att backtesting inte är samma sak som livekörning.

"Om ens data inte innehåller bolag som inte längre är noterade så har den en viss bias."

Exakt!

Det är inte optimalt med en survivor bias i datan. Jag känner dock inte till någon högkvalitativ datakälla som har den typen av data.

"Om fler använder strategin så tappar den sin edge"

Inte nödvändigtvis.

I strategin får inte alla samma köp-och säljsignaler. Beroende på när man börjat, köpt och loggar in så kommer det man ska köpa och sälja att variera. Det finns en inbyggd dynamik i det.

2 gillningar

Jag skulle absolutn inte använda en strategi som endast är tränad på 20 års data. Inflation, räntecykler, politiska situationer, geopolitiska situationer o.s.v. har mycket längre cykler än 20 år. Därmed ser jag inte att det är möjligt att anta att 20 års data är representativt för framtiden. Speciellt inte endast prisinformation.

Snarare behöver du träna på data från 1900 talets början (eller ännu längre). Skillnaden på 100 eller 110 års träningsdata är inte enorm då.

Självklart finns det mer data tillgängligt om 10 år. Men det hjälper ju inte om det inte gör datan signifikant mer representativ för framtiden om 10 år. Då är ju träniningsdatan du använt fram till idag 10 år gammal. Så denna invändningen blir väldigt märklig:

Om tio år (2032) blir ju träningdatan 2012-2022, vilket då är 10 år gammal data.

Alla övriga problem du beskriver måste du ta hänsyn till oavsett om du kör live eller backtestning. Det är ingen skillnad i praktiken. Du kan inte träna på data utan alla transaktionskostnader o.s.v. och förvänta dig att datan är representativ för verkligheten. Då har du ju inte ens tränat algoritmen.

Du är inte ensam med att ha en masterexamen i tekniska fält här. Jag har läst några kurser som inkluderat machine learning, även om programmet var elektro typ.

Detta får varningsklockor hos mig att ringa. Varför? Jo, här har du byggt in egna antaganden som behöver testas och verifieras separat från den övergripande algoritmen. Du har alltså kaskadkopplade återkopplingar i dataflödet. Där själva portföljen som genererats är ett eget tillstånd.

4 gillningar

Man ska passa sig för appeal to authority här. Många andra med tyngre akademiska meriter som har lagt miljoner/miljarder inom området… och misslyckats. Så, kanske är det något man missar?

Man vill träna på så mycket data som möjligt, det är det enda som inte är en avvägning. det är önskvärt på alla sätt, framför allt i termer av overfitting som minskar med större datamängd.

Bara det inte gör att validering och test datan blir lidande.

Träna på svensk data (som ju är den data jag vill bli bäst på). För att få en fingervisning om hur bra algoritmen är, testa på andra marknader som påminner om den du vill prestera på. Låt detta vara en fingervisning. Ta inte siffrorna som gospel. Det finns då givetvis en bias i att det rör sig om samma 20-åriga tidsperiod (icke att förringa) men det rör sig åtminstone om helt andra aktier. “Det finns inga lösningar, bara avvägningar

Ojdå.

Eftersom de olika marknaderna har varit väldigt korrelerade, så blir ju träning och test datan också väldigt lika, vilket leder till overfitting.

3 gillningar

Exakt!

Det är det som gör att alla inte har samma köp- och säljsignaler som varken dig eller din kompis Tom.

Då skänker jag dig en tanke från mitt mitt tropiska skatteparadis.

Tänker inte stilla din nyfikenhet med detaljer om min privata ekonomi :slight_smile:

Strategin har testats live för mig och mina väldigt få kunder i ett par månader. Skulle gärna ha mer livedata. Working on it.

5-6 system samarbetar för att göra det hela möjligt. Mest Python-kod.

Tack!

Jag hör dig och förstår din skepsis. Därav min frågeställning. Men sån slutledning är lite knapphändig. Jag såg en kille ramla med en cykel en gång. Det betyder ju inte att fordon “kanske inte fungerar”.

Exakt!

Overfitting är top of mind i ett sånt här problem. Det är därför man aldrig tränar och testar på samma data.

… & 10X är på 20 år.

Missade att du svarat.

Det kan du inte veta. Men det kan du heller inte veta i fallet då du har ett skarpt trackrecord.

T.ex. kan ju den som visar resultatet skarpt introducera fler parametrar som vid vissa tröskelvärden reagerar på vissa sätt. Så 5 år in så är det möjligt att efterkonstruera en förändring i modell/träningsalgoritm utan att du om ytterligare 5 år vet om modellen såg likadan ut under alla 10 år eller om den har ändrats mitt i. Även om du löpande under alla 10 år har fått utdatan löpande.

Du måste oavsett om du får utdata löpande under 10 år eller får en komplett modell tränad på 10 år och äldre data lita på vissa aspekter hos försäljaren.

Agreed!

Jag tror att min data inte innehåller bolag som inte längre är noterade på börsen. Tyvärr en survivorship bias alltså.

Olika personer får som sagt olika köp- och säljsignaler beroende på när de börjat, köpt, sålt och loggar in. Och flera kunder kan skapa köptryck och höjd värdering. Vad jag försöker säga är att effekten av många kunder är lite oklar. Men så länge man inte är en gigantisk aktör så tror jag att man inte kommer att bli någon stor maktfaktor. Vad tror du?

Illikvida bolag håller jag mig ifrån.

Yes, jag har räknat med courtageavgifter enligt Avanzas tariff.

Köp- och säljpriser utgår från föregående dags stängningspris. Det verkliga priset kan givetvis vara både högre och lägre och det är större trender jag försöker fånga. Man handlar ju en gång i veckan.

1 gillning

Amen brother!

Exakt, well put.

Exakt!

Well put!

Detta är (kanske) det största problemet att hantera vid såna här problem. Det är inte trivialt. Det finns sätt att få en indikation på hur overfittade ens modeller är. T.ex kan man se till skillnaden mellan tränings- och valideringsresultat och hur resultat beror på olika stora datamängder. Det är skitspännande och trixigt.

Min spontana gissning är att strategin sannolikt kan fungera under en period med stadigt ökande aktiekurser. Vi har ju haft en ganska lång sådan period bakom oss nu. Sedan är det som bekant ingen naturlag att det ska fungera så över tid.

Att skapa en momentum-robot är en rolig idé men sannolikheten framstår som hög att den skulle balla ur fullständigt när det kommer en större nedgång eller annan avvikelse. När börsen inte bara tickar på uppåt utan rör sig på andra sätt blir logiken svagare i att det här skulle vara en bra modell.

5 gillningar

Tycker att det är aningen konstigt att du inte kan nämna någon procentandel du själv har investerat i strategin, ger ju en ganska bra bild av hur övertygad du är om att den fungerar. :sweat_smile:

2 gillningar

Tack igen till alla som bidrar till konstruktiv diskussion! Jag fått ny, fräsch input och flera av frågorna och synpunkterna har varit av vikt. Både tekniska, otekniska, allmänna och specifika. Olika aspekter av problemet har blandats och diskussioner förs på olika nivåer. Jobbet går vidare och förbättringar görs. Jättekul, som sagt.

Men. Oinformerade åsikter undanbedes. Det betyder inte att man måste vara professor för att uttala sig. Det betyder bara att om man inte har backning för sina åsikter så är åtminstone inte jag intresserad. Alls.

Låt mig illustrera med en liknelse:

Föreställ dig att du är byggingenjör. Du har en bred kunskapsbas, en uppsjö av verktyg (intellektuella och fysiska) och år av erfarenhet. Nu ska du bygga ett hus.

Du gör det enligt konstens alla regler. Du bekantar dig med platsen för bygget; var och hur kan huset ligga? Hur ser det ut med underlaget? Grundvattnet? Väder och vind? Hur vandrar solen över trädtopparna? Vilka regler och normer finns? Hur många våningar och rum ska byggas och med vilken layout? Vad ska huset användas till? Vilka möjligheter och begränsningar finns? Hur står grundvattnet? Vilka material ska användas? Vad får bygget kosta? Vad är ens meningen med huset?

Du nördar ner dig i problemet. Du konsulterar experter. Du tar hänsyn till byggmaterial. Du räknar. Du rådfrågar. Du förhåller dig till beprövad byggtradition och inser samtidigt var den brister. Du tar beslut, du planerar, du fixar, du donar och sen räknar du lite till.

Under byggets gång tar du in ändringar och gör det bästa av dem. Du planerar om, uppgraderar, stryker och lägger till. Allt för att få det bästa tänkbara resultat givet förhållandena. Du får aha-upplevelser och insikter du omöjligt kunde ha på förhand. Du gör optimeringar, korrigeringar och förbättringar på den ursprungliga planen. Du skrattar åt hur fel du hade i något antagande, trots att du gjort det här tusen gånger innan. Du konstaterar vilka saker du faktiskt kunde veta på förhand. Du gör varje moment enligt konstens alla regler, enligt gällande byggnormer och så optimalt det har gått givet förutsättningarna.

När huset är färdigt är det fackmannamässigt gjort. Det är snyggt, det är funktionellt, det är kostnadseffektivt och framtidssäkrat. Det finns fortfarande förbättringspotential, det ska underhållas och det finns en plan för vad som ska göras framöver.

Du är medveten om flera styrkor och brister i huset. Men du vet också att huset har styrkor som du inte känner till och brister som du inte har en aning om. Du vet att du inte hade kunnat göra ett bättre jobb, och givet alla informerade beslut du tagit på vägen så vet du att få andra skulle kunna göra det.

Plötsligt ringer telefonen. En röst på andra sidan säger:

“Hej jag har hört att du har byggt ett hus. Om du inte har grönt kakel i badrummet så är det ett dåligt hus.”

Du ler förmodligen och tänker att personen på telefon inte hade sagt så om han vetat vad du vet om ditt projekt.

Jag uppskattar diskussion, både med de som kan mer än jag och de som kan mindre. Det är genom att stöta och blöta informerade åsikter som vi växer. Men. Livet är för kort för att lyssna på oinformerade åsikter.

@MLU
Hur mycket data skulle du ha som minimum?
Och finns det högkvalitativ data så långt bak?

Jag håller med, mer data är alltid bättre. Och så kan man i så fall välja bort. För samtidigt är det nog inte relevant med för gammal data då världen förändrats mycket. Alltså data från tiden vi körde med hest och vagn är nog inte så relevant när mer än hälften av all handel idag sköts av robotar.

I min roll som datavetare bryr jag mindre om det här med att man ska lite på någon. Jag vill bara göra bästa möjliga modell, punkt. Och då vänder jag mig snarast emot att livekörning och simulering skulle vara ekvivalent.