Blogg
Anteckningar från strategifabriken

Din backtests dollar var USDC. Den 11 mars handlades den till 87 cent.
Vi etiketterade equity-kurvan i dollar. Kontot var i USDC, och den lördagen var USDC inte en dollar.
Läs inlägget →
Hur värmer man upp ett backtest utan att räkna lookbacken som resultat?
Ofullständiga indikatorer, beskurna kurvor som behåller sina positioner, och 30-dagars warmup på 8-timmars features. Omstartskontrollen som fångar dem.
Läs inlägget →
Vi backtestade på Binance och pappershandlade på Bybit. Edgen var eftersläpningen.
Vi researchade BTC på Binance och pappershandlade den på Bybit. Backtestet var inte optimistiskt. Det tittade på en snabbare tape.
Läs inlägget →
Säkringen som fördubblade handelskostnaderna i vårt backtest
Optionsaffärerna var få. Säkringen handlades varje gång den underliggande tillgången rörde sig. Så här hittade vi de kostnader som saknades i ett optionsbacktest.
Läs inlägget →
Din backtests kortposition gick med vinst. Automatisk skuldavveckling stängde den ändå.
Likvidation är det som händer när din marginal tar slut. ADL är det som händer när deras tar slut och det är du som tjänar pengar.
Läs inlägget →
Signalen var rätt. Vår optionsbacktest köpte fel förfallodatum.
Signalen pekade på en call spread. Backtesten valde ett förfallodatum som i efterhand såg likvidt ut. Vi spårade avvikelsen till en diskret kalenderkoppling.
Läs inlägget →
Ditt optionsbacktest använde ett mittpris som aldrig gick att handla till
Ett mittpris kan vara en rimlig värdeuppskattning och ett uselt antagande om exekvering. Här är tre sätt som skillnaden i det tysta skapar avkastning i optionsbacktester.
Läs inlägget →
Varför ersätts optionsdatan i mitt backtest hela tiden?
Samma optionsstrategi kan ge olika resultat på ”samma” historik. Så här avgör du om marknaden har förändrats i ditt arkiv och vad du bör spara för att kunna förklara nästa körning.
Läs inlägget →
Din backtests Sharpe kan stiga när du lägger till fler marknader
Ett bredare marknadsuniversum ser ut som diversifiering. Under en strategisökning kan det också innebära en ny omgång försök. Så här ser du skillnaden.
Läs inlägget →
Varför ser mitt backtest bättre ut med tätare ombalansering?
Daglig ombalansering kan fånga en signal snabbare och samtidigt förbruka hela fördelen. Så här mäter du om den extra handeln lönar sig.
Läs inlägget →
Din strategis Sharpe-kvot kan förbättras när datan blir sämre
En misstänkt tick kan vara en felaktig notering – eller den enda observationen som avslöjar hur skör din strategi är. Datarensning kräver ett granskningsspår, inte bara en snyggare aktiekurva.
Läs inlägget →
Vi byggde om ett backtest efter att en dataleverantör ändrat sin historik
Samma strategikod och datumintervall gav en annan aktiekurva sex veckor senare. Vi spårade avvikelsen till reviderade marknadsdata och byggde sedan om experimentet så att vi kunde se vad som hade ändrats.
Läs inlägget →
Din strategi körde 240 tester. Hur många backtester gjorde du egentligen?
Du testade 240 parameteruppsättningar och behöll vinnaren. Dess Sharpe är 2.1. Den viktiga frågan är hur många chanser du gav slumpen att se ut som en edge.
Läs inlägget →
Strategin fungerade tills vi tog betalt för att rulla en terminsposition
Vår kalenderspread såg klockren ut tills det främsta kontraktet förföll. Då rullade backtestet en position till ett pris som ingen kunde handla till.
Läs inlägget →
Ombalanseringen såg billig ut tills vi räknade in spreaden
Backtestet räknade med 4 baspunkter i avgifter. Spreaden och marknadspåverkan tog ombalanseringen över 20. Så hittade vi den saknade kostnaden.
Läs inlägget →
Hur backtestar jag en strategi som handlar på en daglig signal?
En dagsstapel ger dig ett pris och ett datum, men den talar inte om när din strategi kände till stängningskursen. Så här backtestar du dagliga signaler utan att ge dem ett omöjligt avslut.
Läs inlägget →
Vi lät en AI-forskningsagent optimera en strategi. Dagboken var mindre imponerande.
Agenten hittade en strategi med Sharpe 4.1. Sedan räknade vi försöken, frös sökningen och såg resultatet krympa till något vi faktiskt kunde utvärdera.
Läs inlägget →
Din AI-forskningsagent har sett testmängden: 3 sätt som förorenar resultatet
En testmängd slutar vara ett test när resultaten styr nästa experiment. Här är 3 sätt som forskningsagenter i det tysta lär sig av den, och hur vi håller resultatet rättvisande.
Läs inlägget →
Hur testar du om en strategis edge står sig när handelskostnaderna ökar?
Fråga inte om strategin klarar ”realistiska kostnader”. Mät hur höga kostnader den tål, vilka antaganden som spelar roll och var edgen försvinner.
Läs inlägget →
Varför ditt backtest behöver ett avnoteringsregister
Om ett bolag försvinner ur ditt backtest kan även dess slutliga avkastning ha försvunnit. Tre vanliga genvägar gör döda aktier till osynliga vinnare.
Läs inlägget →
Ditt backtest hittade en edge på 20 %. Hur mycket kom från en enda felaktig tidsstämpel?
En backtest-edge på 20 % kan bero på en siffra som ingen kunde känna till då. Så här tar du reda på om revisioner, sena publiceringar eller återfyllning av data från leverantören handlar åt dig.
Läs inlägget →
Vi plockade isär ett prediktionsmarknadstest som köpte fel kontrakt
Backtestet köpte ”Kommer lagförslaget att gå igenom?” Men vilket lagförslag, senast när och enligt vems bedömning? Vi granskar bristerna i kontraktens identitet som kan förvandla en prydlig reprisering av en prediktionsmarknad till ett annat vad.
Läs inlägget →
Fundingbetalningen som fick en vinnande perp-affär att gå med förlust
En BTC-perp-affär gick åt rätt håll och gav ändå en förlust. Här är bokföringen, betalning för betalning, och kontrollerna som förklarar varför.
Läs inlägget →
Hur ser du om en strategis edge håller i en annan marknadsregim?
En strategis genomsnittliga avkastning kan dölja en skör uppgörelse med en viss typ av marknad. Så tar du reda på om dess edge håller i olika regimer.
Läs inlägget →
Ett bättre backtest kan försämra din strategiforskning
Ett backtest kan hjälpa dig att sålla bort en dålig idé. Använd det för att välja den bästa av 500 idéer, så kan vinnaren vara den som hade mest tur. Så håller du forskningsprocessen ärlig.
Läs inlägget →
Varför fylls min limitorder i backtestet när marknaden aldrig nådde den?
Ditt limitpris låg inom stapelns intervall, så backtestet registrerade en fyllnad. Det visar att priset nåddes, inte att du fick affären.
Läs inlägget →
Din strategi klarade walk-forward. Varför avvek pappershandeln?
En strategi klarade walk-forward-valideringen, men resultaten avvek i pappershandeln. Den första misstanken kan vara överlämningen mellan forskning och exekvering, inte marknaden.
Läs inlägget →
Varför handlade min backtest till ett pris som marknaden aldrig visade?
Om ditt simulerade avslut är bättre än alla priser i stapeln kan problemet ligga i dina antaganden om exekvering, inte i signalen. Så här spårar du var priset kom ifrån.
Läs inlägget →
Backtesten visade 12 % årlig omsättning. Kontot handlade 38 %.
Ett backtest kan visa 12 % årlig omsättning medan kontot handlar 38 %. Skillnaden börjar ofta med vad ”omsättning” betyder i koden.
Läs inlägget →
Hur hindrar du en AI-strategiagent från att läcka morgondagen in i dag?
En strategi kan klara alla syntaxkontroller och ändå känna till framtiden. Här är några diskreta sätt som forskningsagenter läcker information på, och kontrollerna som avslöjar det.
Läs inlägget →
Hur backtestar man en strategi som handlar kring ett handelsstopp?
Ett handelsstopp är inte en stapel med noll volym. Det förändrar vad marknaden låter din strategi göra, och återöppningsauktionen kan rita om priset du trodde att du handlade till.
Läs inlägget →
Din edge försvann när avgiftsnivån ändrades. Gick strategin sönder, eller kontot?
Strategins bruttoaffärer var oförändrade, men avgiftsnivån ändrades med kontots handelsvolym. Så här avgör du om det var edgen eller kontot som förändrades.
Läs inlägget →
Ombalanseringen som sålde morgondagens vinnare: en genomlysning av omsättningen
En rankingtabell är ingen handelsstrategi förrän den har omvandlats till order. Följ en månatlig ombalansering från målvikter via omsättning och avgifter till antagandena som kan få backtestet att se alltför bra ut.
Läs inlägget →
Din backtest älskade den bästa timmen. Går den att handla efter tidsomställningen?
Strategin tjänar pengar under den första timmen – tills den timmen flyttar sig. En praktisk guide till att testa intradagsäsongsmönster vid övergångar till och från sommartid och ändrade handelstider.
Läs inlägget →
Din backtest använde samma pengar två gånger: en guide till portföljredovisning
En position kan vara lönsam på papperet och ändå lämna dig utan pengar till nästa order. Tre vanliga bokföringsgenvägar visar hur backtester i tysthet använder samma pengar två gånger.
Läs inlägget →
Din pappershandelsstrategi startade om med en annan position: ett brev om återställning av tillstånd
Du startade om processen, men startade strategin om också? Så tar du reda på om dess minne av positioner, väntande ordrar och signaler stämmer med papperskontot.
Läs inlägget →
Backtestet klarade sig. Paperstrategin missade 37 % av sina ordrar.
Vår paperstrategi skickade 100 ordrar och fick 63 avslut. Backtestet räknade med 91. Skillnaden berodde på orderstatus, timing och antaganden som en Sharpe-kvot inte kunde visa.
Läs inlägget →
Vi försökte återskapa en strategis backtest. Här började siffrorna glida.
Vi körde om en sparad strategi och fick en annan aktiekurva. På några dagar spårade vi avvikelserna till datarevisioner, beroendeversioner och en förvånansvärt liten standardinställning.
Läs inlägget →
Hur vet jag om marknadsdata från ett backtest faktiskt gick att handla på?
Korrerekta priser garanterar inte ett rättvisande backtest. Kontrollera när varje observation blev tillgänglig, vilken marknad den avser och om din strategi hade kunnat agera på den.
Läs inlägget →
Vi spelade upp en pappershandelsstrategi efter en omstart. Orderläggningen förändrades.
Vi startade om en pappershandelsstrategi mitt i en position och fick en annan sekvens av ordrar. Signalen fungerade. Minnet gjorde det inte.
Läs inlägget →
Vad gör en optionsbacktest egentligen vid förfall?
Vid förfall är den sista optionsnoteringen ofta det minst användbara talet i din P&L. Så här modellerar du avräkning, lösen och leverans utan att hitta på ett avslut.
Läs inlägget →
Ditt kontinuerliga terminsdiagram visar ett kontrakt som ingen kunde handla
Den 20 april 2020 avräknades två WTI-kontrakt med $58.06 i skillnad. Skarvar du ihop dem vårdslöst bokför ditt backtest $58,060 som ingen position tjänade in.
Läs inlägget →
Starta om din strategi mitt i backtestet. Minns den vad den äger?
En strategi kan klara sig igenom alla marknader i din datamängd och ändå fallera när processen startas om. Stoppa uppspelningen halvvägs och ta reda på vad den glömde.
Läs inlägget →
Ditt papperskonto avvisade backtestens orderutförande: ett brev om börsfilter
Du dimensionerade ordern rätt i backtesten, men handelsplatsen avvisade den i pappershandeln. Så här gör du precisionsregler till en del av strategins exekveringsmodell.
Läs inlägget →
Tickdata räddar inte ditt backtest – för de flesta strategier gör den det sämre
Högre upplösning betyder inte mer sanning. För de flesta strategier byter tickdata ut ett verkligt problem – felaktiga antaganden om avslut och kostnader – mot ett påhittat: illusionen att data med finare upplösning ger ett mer rättvisande backtest.
Läs inlägget →
Ombalanseringen som slukade signalen: Strategins första möte med den verkliga marknaden
Signalen hade rätt om riktningen. Ändå tappade portföljen sitt övertag vid ombalanseringen, en tunn orderbok och en alltför stor order i taget.
Läs inlägget →
Hur backtestar man en invers perpetual utan att blanda ihop BTC och dollar?
En affär ger $10,000. Kontot växer med $15,000. Båda siffrorna stämmer. Ditt backtest måste förklara var de saknade $5,000 kommer ifrån.
Läs inlägget →
Ditt aktiebacktest hittade en blankning. Kunde du faktiskt låna aktierna?
Din gap-fade-strategi blankar varje aktie den väljer ut. Din mäklare erbjuder ett mindre urval. Ett brev om transaktionen som saknas före din order.
Läs inlägget →
Din slippagemodell för backtestet bör medvetet ha fel
Målet med en slippagemodell är inte att gissa vilken fill du skulle ha fått. Det är att ta reda på om strategin klarar rimliga fills som du inte kan känna till utifrån historiska staplar.
Läs inlägget →
Ditt makrobacktest handlade på den reviderade jobbrapporten
Du laddade ned den historiska jobbdataserien korrekt. Ändå handlade strategin på siffror som inte skulle finnas förrän två månader senare. Så bygger du upp dess informationsmängd på nytt.
Läs inlägget →
Hur mycket latens bör du lägga till i en backtest? Vi mätte varje millisekund av vår
195 ms median. 2,970 ms vid den 99:e percentilen. 840 ms median på de minuter din signal faktiskt utlöses. Bara ett av dessa tal är intressant.
Läs inlägget →
Fem positioneringsregler, en signal: delen av ditt backtest som gör det verkliga jobbet
Det mesta av variationen i ditt backtestresultat kommer från hur stor position du håller, inte från när du går in. Här är samma signal med 6 olika storleksregler, inklusive avgiftsnotan och den maximala hävstång som rapporten glömde att redovisa.
Läs inlägget →
Samma kod, samma data, två olika Sharpe: granskningen av icke-determinism som ditt backtest behöver
11,205 staplar identiska bit för bit, sedan en oavgjord placering i rangordningen, sedan en Sharpe-skillnad på 0.15. Om du inte känner till ditt backtests jitterintervall vet du inte om din bästa parameteruppsättning faktiskt vann något.
Läs inlägget →
Din Sharpe-kvot klarade alla tester. Ändå kan den vara en slump.
En Sharpe-kvot på 2 kan verka enastående efter tusen försök. Det överraskande talet är hur många sätt du försökte nå dit på.
Läs inlägget →
Varför ditt volatilitetsmål i backtestet missar risken det ska kontrollera
Ett volatilitetsmål på 10% är en instruktion för positionsstorlek, inte en garanti för risknivån. Plocka isär en BTC-perpetualstrategi och se när siffran slutar beskriva hur mycket kontot kan förlora.
Läs inlägget →
Finansieringsräntan verkade låg. Positionen fortsatte ändå att blöda.
En perpetual betalade 0.01% i finansiering var åttonde timme. Affären gick ändå med förlust. Här ser vi vart backtestets lockande carry tog vägen.
Läs inlägget →
Raden som ditt optionsbacktest bygger på: en Deribit BTC-call, fält för fält
Tickern har ett tjugotal fält. Två av dem är priser som ingen handlat till, tre anges i enheter som ditt backtest förmodligen misstolkar, och talet som sänker de flesta optionsstrategier finns inte alls i datan.
Läs inlägget →
Du backtestade 2 000 $ per affär och vill nu satsa 50 000 $: ett brev om kapacitet
Ditt bruttoövertag är 22 bps per affär. Vid 2 000 $ betalar du cirka 2 bps i marknadspåverkan. Vid 50 000 $ betalar du 11. Räkneövningen som följer avgör om du har en strategi eller bara en skärmbild.
Läs inlägget →
Din backtest blev aldrig likviderad: marginal, marknadspris och hävstångsgränsen du missade
Aktiekurvan faller 63% i april och återhämtar sig till juni. På handelsplatsen stängdes kontot dag 41, och det fanns inget kvar att återhämta sig med.
Läs inlägget →
Både din stop och ditt mål låg inom samma stapel. Vilken valde din backtest?
Stapelns lägsta pris ligger under din stop. Det högsta ligger över ditt mål. Det ena hände först, men stapeln avslöjar inte vilket, och något i din kod bestämde ändå.
Läs inlägget →
Minuterna som inte finns: luckor, avbrott och staplar med nollvolym i OHLCV-historiken
Saknade staplar ligger inte utspridda slumpmässigt i din historik. De samlas just under de minuter som din strategi bryr sig om, och standardlösningarna gör skadan osynlig.
Läs inlägget →
Din limitorder fylldes inte: ett brev om köposition, maker-backtester och Sharpekvoten du hittade på
Din fyllnadsregel är en enda rad: om barens lägsta pris är lika med eller lägre än min limit fylls ordern. Den raden gör mer jobb än hela din alpha, och den gör det fel.
Läs inlägget →
Splitjusterade data, nedmonterade: vad NVDA:s 10-för-1 gör med varje bakomliggande rad
Raden säger att stängningskursen var 120.8781 dollar. Den dagens avslut sade 1,208.88 dollar. Sex kolumner skiljer de två talen åt, och de flesta backtester misstolkar minst tre av dem.
Läs inlägget →
Vad går sönder när man backtestar prediktionsmarknader: en dagbok från 8 dagar
Instrumentet upphör. Det betalar ut en dollar eller ingenting, en enda gång, på ett datum du inte styr över. Nästan alla antaganden som byggts in i en avkastningsbaserad backtester är fel här, och här är ordningen i vilken vi upptäckte det.
Läs inlägget →
Hur många affärer behöver ett backtest innan Sharpe säger något?
Standardfelet för en annualiserad Sharpe är ungefär 1 delat med kvadratroten ur antalet dataår. Allt det obekväma följer av den enda raden.
Läs inlägget →
Du byggde en strategi som bara handlar kl. 00:00 UTC — ett brev om artefakter kring fundingtid
Din Sharpe är 2.9 och varje krona av den kommer inom fyra minuter från en fundingavräkning. Jag har sett exakt det här resultatet kanske ett dussin gånger. Så här tar du reda på vilken sort du har.
Läs inlägget →
Varför ditt backtest behandlar en volatilitetsspik som en ny regim
Volatilitetsmål låter anpassningsbart. En trög uppskattning, ett dåligt golv eller en dold ombalanseringsregel kan förvandla en tuff vecka till månader med för låg exponering. Så upptäcker du skadan.
Läs inlägget →
Din symbolunivers är en tidsmaskin: överlevnadsbias i backtester för kryptoperpetualer
Du byggde ditt universum genom att anropa exchangeInfo en gång, i dag, och filtrera på status == TRADING. Den enda raden tog obemärkt bort varje mynt som dog.
Läs inlägget →
Anatomin hos en 1-minutersstapel: allt OHLCV inte berättar för din backtest
Tolv värden i en JSON-array. Minst fyra av dem betyder något annat än vad din fill-motor antar. Här är hela stapeln, isärplockad.
Läs inlägget →
Ditt backtest har 100 affärer. Varför är den genomsnittliga fillen fortfarande en gissning?
100 affärer, 0.04% i avgifter och ett antagande om 0.02% slippage kan se exakt ut. Men fillen är fortfarande en gissning tills du frågar dig vilken orderstorlek marknaden kunde absorbera.
Läs inlägget →
Varför gör min backtest fler affärer än min paperstrategi?
En signal kan säga ”köp” en gång medan ordersystemet försöker 3 gånger och får 2 fyllningar. Så här modellerar du skillnaden mellan backtestens affärer och orderhistoriken i ett paperkonto.
Läs inlägget →
Din backtest har ett klockproblem, även när alla tidsstämplar stämmer
En kursnotering och en signal kan ha samma tidsstämpel men anlända i olika ordning. Den lilla tvetydigheten kan avgöra om strategin över huvud taget handlade.
Läs inlägget →
Varför dina öppna backtestorder behöver en klocka
En limitorder kan överleva signalen som skapade den. Tre vanliga sätt som backtester tappar bort öppna order på, och en praktisk modell som håller dem under kontroll.
Läs inlägget →
Varför din backtest hanterar utdelningen fel
En utdelning kan se ut som en plötslig förlust, en gratis avkastning eller ett kontantsaldo som strategin aldrig fick. Tre vanliga modelleringsmisstag förklarar varför.
Läs inlägget →
Tre sätt att misslyckas med walk-forward-optimering utan att märka det
Walk-forward-tester säljs in som motgiftet mot överanpassning. Slarvigt gjort är det bara överanpassning med snyggare pappersarbete. Tre felmoder och deras kännetecken.
Läs inlägget →
Så tar ett AI-agentteam en handelsidé från mening till pappersvaluta
Tio agenter, en pipeline och en tratt som är byggd för att döda idéer. En genomgång av vad som faktiskt händer mellan "funding momentum" och en levande pappersnod.
Läs inlägget →
Paper trading är det enda riktmärke din backtest står till svars inför
Vi spelar upp varje paper-strategis fönster genom backtest-motorn varje dag och diffar affärerna. Här är vad den ritualen fortsätter att fånga.
Läs inlägget →
Vad en tur och retur egentligen kostar på nio handelsplatser
Avgiftssidor är marknadsföring. Här är den tvåvägsaritmetik som avgör om din strategi är en affärsverksamhet eller en donation, handelsplats för handelsplats.
Läs inlägget →
Varför de flesta backtester ljuger – och de fyra posterna som rättar till det
En strategi som backtestar på +40 % om året och sedan förlorar pengar live har inte otur. Den är felmätt. Fyra poster skiljer de två siffrorna åt.
Läs inlägget →