Trendföljande marknadstajmingalgoritm + globala index

Hej!

I min förra tråd (Marknadstajming med egenutvecklad algoritm) visade jag ett enkelt sätt att investera i indexfonder/ETF genom trendföljande marknadstajming. Om man utvecklar denna teknik och kan tänka sig att investera oftare än 1-2 ggr per år så är en roterande trendföljande algoritm ett bra val.

I korthet så tittar man bakåt i tiden och jämför X antal månader bakåt med dagens pris. Flera olika varianter har gjorts inom forskningen som visar att detta fungerar. (Se bland annat https://medium.com/@garyantonacci_30463/extended-backtest-of-global-equities-momentum-dual-momentum-eb12902612e0)

Den modell som jag tänkte presentera här bygger på följande formula:

  1. Om marknadstajmingsalgoritmen visar köp:
    1a. Välj bästa avkastning av N antal globala index/ETF (Kategori X). Avkastningen väljs fram genom att vikta (1 mån avkastning * 12) + (3 mån avkastning * 4) + (6 månaders avkastning * 2) / 3. (Fotnot 1)
    1b. Behåll Index/ETF till nästa månadsskifte, gör sedan om beräkningen ovan.
  2. Om marknadstajmingalgoritmen visar sälj:
    2a. Räkna ut senaste månadens avkastning, välj den som är bäst av N antal “säkra” index/etfs (Kategori Y). Säkert här är relativt då räntefonder också kan sjunka.
    2b. Om ingen av kategori Y visar positiv avkastning över den riskfria räntan, välj sparkontot.

I det lilla investeringsuniversumet har vi globala aktieindex (kategori X):

  • SPY (S&P 500 eller ett brett amerikanskt index)
  • VWO (FTSE Emerging Markets All Cap China A Inclusion Index Net TR US RIC eller en
    Tillväxtmarknadsfond/ETF)
  • EFA (MSCI EAFE Index eller en Europafond/Globalfond om man tar bort USA - rätta mig om jag har fel här).

I unviersumet för “säkra” tillgångar/räntefonder (Kategori Y) har vi:

  • SHY (1-3 Year Treasury Bond ETF - kort duration med statsräntepapper - lägst risk)
  • AGG (Core Total U.S. Bond Market ETF - Bloomberg Barclays U.S. Aggregate Bond Index - mellanduration och med olika sorters räntebärande papper - mellanrisk)
  • Sparkonto - simplifierat med Federal funds effective rate. Riskfri ränta till Insättningsgarantins gräns.

Om vi kör perioden för 2000-2023 så får vi dessa två grafer med SP500-algoritm och 4 dagars diff mellan signal och köp:

Och en propaganda-bild:

Vi får en trevlig överavkastning som tangerar 20% och en Sharpe över 1 samt Sortino över 2.2. Vi landar på ca 13 transaktioner per år, eller ca 1 i månaden.

Årsvis fördelning av avkastningen:

Tittar man på drawdown charten så ser vi att det inte är alltför blodigt. Den gula prickade visar dalarna för SP500.

Samt Rullande 1-årsgrafen:

Jag blev lite fundersam om dessa siffror verkligen kan stämma, så jag gjorde ett out of sample-test på amerikanska fonder med längre historik bakåt.

Då blir Investeringsuniversumet för kategori X dessa:

  • US.OPPAX (Invesco Global A / Oppenheimer Global Fund)
  • US.FFIDX (Fidelity Fund (USA))
  • US.MAPCX (Blackrock Asian Dragon Fund / BlackRock Sustainable Em Mkts Eq Ins)

Och för “säkra” perioden så hittade jag två räntefonder (Kategori Y):

  • US.FUSGX (Federated Hermes Fund for US Govt Secs A)
  • US.FBNDX (Fidelity Investment Grade Bond)

Jag körde detta på åren 1981-2000 och blev lite smått chockad av avkastningen:

När man ser en graf som denna så trodde jag såklart att jag gjort något fel. Men om man kollar på vardera aktiefond så ser man att de är mindre korrelerade än idag. Asien/Japan hade en ordentlig uppgång under slutet av 80-talet vilket gav några ordentliga rekordår.

42% i årlig avkastning. Självklart teoretiskt men ändå. Årsavkastning:

Jag körde out of sample universumet tillbaka till vår tid och hamnar på ungefär samma nivå som tidigare, något bättre till och med:

Avkastning på drygt 23% per år.

Jag blev lite inspirerad att lägga till guld i det säkra universumet när jag tittade på Zinos allvädersportfölj (Jakten på den "ultimata" allvädersportföljen), men fick ingen extra skjuts i avkastning eller sharpekvot. Jag tror att momentum inte funkar riktigt lika bra på guld, i alla fall inte med 1 månads momentum i algoritmens nedåtgående aktiemarknadsförutsägelse i tävlan mot räntefonder.

Allt som allt så tror jag att man kan få rätt så bra avkastning framöver. Jag ser verkligen ett värde med att ha ett sparkonto som sista fall-out alternativet. Under 2022 så räddas man av detta, då alla räntefonder i princip går ner oavsett löptid. Jag har som sagt tänkt att lägga ut signaler publikt, men har inte riktigt hittat rätt forum. Jag har startat en youtube-kanal tills vidare - men signalerna är ju mer eller mindre endast i textform och det är lite svårt att göra något underhållande av det.

På to-do list står även att skapa fiktiva, walk forward tidsserier att testa indexen mot.

Tankar och idéer på detta mottages gärna :slight_smile:

(Fotnot 1: Detta liknar den variant som Keunig och Keller använder (se 13612W momentum filter i länken TrendXplorer: Breadth Momentum and Vigilant Asset Allocation (VAA)) , men också Gary Antonaccis variant, som också den har ett backstop i ETF:en BIL som i princip är den riskfria räntan. (TrendXplorer: Prospecting Dual Momentum With GEM).)

6 gillningar

Tack för att du skriver ut hur algoritmen fungerar ska testa i mitt eget backtest program.

Jag funderar på om du har testat den med riktiga fonder i SEK. Det brukar se mycket annorlunda ut i USD men när man sen tittar på fonderna/etf i SEK så blir resultatet annorlunda. Alt om du har hittat fonder och räntor så du alltid kan vara helt i USD men åker ändå på valuta påslaget.

2 gillningar

Jag tror jag har tillgång till sek/usd och skulle kunna konvertera kurserna därefter, kan bli intressant att se hur den ser ut då. Tack för idén!

3 gillningar

Om du har 4 dagar mellan signal och köp har du då lyckats få tag på data per dag? Tänker din algoritm går på månads basis så är vi på Jan 1 och den säger köp så köper du då Jan 4?

Det är väl rimligt? Det brukar ta ett or dagar innan det syns på ditt konto.

Ja, ungefär så. Tidserien för ränta dag x publiceras x+1 dag senare. Index vet vi ju dag x, men även där kan handel göras tidigast x+1 dag senare (jag går på eod-data). Så den absolut tidigaste möjliga köpet är x+2 dagar, men för att göra det mer realistiskt så använder jag främst x+3 dagar när jag gör mina backtests. Använder man fonder är x+4 dagar mest realistiskt också, även om jag förespråkar etfs.

I backtests har jag “hämtat” indexdatat x+4 dagar senare till dag x. Det blir lite missvisande på årsbasis, men själva andemeningen finns kvar. Det blir samma köpkurs för indexet som att vänta till dag x efter signalen men läggs på “fel” dag. Det blev lättare så i min kod.

Har jag tänkt fel kring detta så är jag öppen för förslag att föra annorlunda.

Metoden tycker jag verkar rimlig om man är på hugget och redo att byta inom de 4 dagarna alt så kan man automatiserar det. Jag är mest förvånad att du har lyckas få tag på dagshistorik så lång tillbaka i tiden. Har inte hittat någon som ger dig den datan utan brukar vara per månad du kan få tag på.

Som jag var inne på tidigare och rätta mig om jag har fel men det verkar också som om du testar med ETF:er som vi i Sverige aldrig kan köpa? Skulle vara intressant att testa med sådana vi kan köpa. Som de klassiska Länsförsäkringar Global Index, Länsförsäkringar USA Index, AMF Räntefond Lång eller då ETF vi kan köpa om du hittar några. Fungerar systemet då med?

1 gillning

Yes, det är ju riktigt trist att vi inte längre kan köpa de stora amerikanska etf:erna. Jag gör det mest för att visa att algoritmen håller. Jag har rätt så mycket fond-data från pensionsmyndigheten samlat över åren, det blir en kortare horisont, men säkerligen jämförbart.

Återigen, tack för tips! Både att Sek-ifiera sp500 och med valbara fonder.

2 gillningar

Spännande! Jag är imponerad av resultaten, och följer gärna signalerna och utvecklingen av din strategi framöver.

Bara en reflektion kring valet av “säkra” tillgångar, vilket vi även var inne på i förra tråden. Varför är dessa så mycket mindre volatila än de “riskfyllda” tillgångarna? Det innebär att din strategi aldrig kommer kunna prestera i närheten av lika bra under sälj-perioderna, vilket vi också ser i den extremt ojämna historiska avkastningen. Som allväders-fantast tycker jag att detta är suboptimalt. Att guld presterade sämre i ditt test jämfört med mitt tror jag delvis beror på att det har så mycket högre volatilitet än de andra “säkra” tillgångarna, och därmed valdes för sällan?

Jag hade därför varit väldigt nyfiken på att se ett backtest med följande tillgångar i det “säkra” universumet (som alla har liknande volatilitet som aktier):

  • Guld
  • Mycket långa statsobligationer (ex. TLT)
  • Volatilitet (har du data för CBOE Long Vol Index? annars ex. Amundi Volatility Wld som är en av konstituenterna)

Men oavsett, väldigt intressant algoritm!

Hej Zino. Här är utfallet :slight_smile:

Jag tror att man behöver “tämja” CBOE Long Vol för att få ett trevligare utfall. Just att jag har satt som regel att vänta tills månaden är slut gör att vi har Long Vol för länge. Här behövs en stopp-mekanism som tar bort den om vi får för höga svängningar. Ett annat sätt är väl att vikta de tre (TLT, Guld, LongVol) på volatiliteten när vi är Off-market. Får fundera på det.

Rullande avkastning:

Draw down:

Stats:

och årlig avkastning:

Hmm… såg precis att vi får 45 transaktioner per år… låter extremt högt… Nått kanske har gått snett kodmässigt här, som mest - om vi håller i en månad - så får vi ca 12 transaktioner + ca 1.5-2 för varje bull/bear byte…

Kör vi Zino-style och tar bort Long vol (och slänger in riskfri ränta om Guld eller TLT inte trendar) så får vi bra avkastning igen ser det ut som. Återkommer om jag hittar varför vi får 45 transaktioner pga LongVol…

Drawdown:

Stats:

1 gillning

Svarade dig precis i chatten, VIX-futures är inte någon bra ersättning för de aktiva volatilitetsfonderna i CBOE Long Vol Index tyvärr, pga konstant contango.

Toppen, ja det var en sorglig trend i den. Vi testar Amundi Volatility Wld istället.

1 gillning

Med Almundi Volatility Wld USD:

Rullande 1 år:

Drawdown:

Stats - Kryper över 20% i årsavkastning mot ca 19.8% med ursprungs-setup:

Årsvis:

Fundering på början av 2020 - Lite för rakt streck där kan jag tycka - men en väldigt trevlig kurva överlag! Guld + TLT + Amundi Vol index verkar vara en fin kombination.

1 gillning

Intressant! Kurvan blev definitivt jämnare, men gjorde inte så stor skillnad som jag hade hoppats på. Algoritmen presterade ju dessutom faktiskt bättre när du inte hade med Amundi i mixen. Hade du med riskfri ränta som en sista fall-out även i det sista exemplet?

Bekräftar iallafall att strategin fungerar likvärdigt även med volatila risk-off tillgångar i det “säkra” universumet, även om det inte gjorde så stor skillnad i totalen. Tack så mycket för att du tog dig tiden att testa.

1 gillning

Tack själv för dina förslag! I sista testet (med amundi) så saknas data för 202001-202009 - ska försöka reda ut varför under helgen - det kanske inte gör en jätteskillnad men rätt ska vara rätt tycker jag.

1 gillning

Hej! Hittade buggen. Jag saknade helt enkelt data för den perioden för SP500 :frowning:
Jag bytte ut den mot SPY (Motsvarande ETF) som jag hade data för och testkörde Zino6 igen. Avkastningen blev ca 19.7% per år, trots dippen vid 2020.

GMOM_Zino6_AlmundiVol_2000_2023_V2

YoY:

GMOM_Zino6_AlmundiVol_YoY_2000_2023_V2

Drawdown:

GMOM_Zino6_AlmundiVol_DD_2000_2023_V2

Stats:

GMOM_Zino6_AlmundiVol_Stats_2000_2023_V2

2 gillningar

Hej Jackalope.

Jag har bytt ut ETF:erna mot dessa fonder:

Öhman Marknad Europa / Öhman Marknad Pacific / Öhman Marknad USA.

Dessa fonder är valbara i PPM och har längst historik (2000-07).

På Risk-off delen har jag valt Skandia Penningmarknadsfond samt AMF Räntefond Lång. Valet är återigen för att få historik långt bak i tiden.

YoY:

Drawdown:

Stats: (Jag har ögnat igenom och RegimeChangesPerYear stämmer inte - den växlar vid månadsskiften men inte 74 gånger - på to do list).

Årlig avkastning:

16.6% i snitt är ett bra betyg. Jag funderar lite på om skillnaden mot ETF-index är svenska kronans svängningar? Vad tror ni?

1 gillning