22. september 2026 · futures

Dit kontinuerlige futuresdiagram viser en kontrakt, ingen kunne handle

Dit kontinuerlige futuresdiagram viser en kontrakt, ingen kunne handle

En kontinuert futuresserie kæder udløbende kontrakter sammen til én historik. Du kan bruge historikken til at undersøge signaler, men hvis du beregner handels-P&L direkte ud fra prisændringerne, kan du opfinde gevinster og tab ved hver rulning. Serien fortæller dig ikke, hvilken kontrakt du ejede.

Lad os tage et særligt ubarmhjertigt eksempel: NYMEX WTI-råolie den 20. april 2020. Majkontrakten blev afregnet til minus $37.63 pr. tønde. Juni blev afregnet til plus $20.43. Begge priser var reelle. Det samme var forskellen på $58.06. Men det gav ikke en lang position den forskel at skifte diagrammet fra maj til juni.

Lad os skille den splejsning ad. Det er historiske afregningspriser; de hypotetiske bogføringseksempler nedenfor bruger dem til at tydeliggøre regnestykket, ikke til at påstå, at en ordre kunne være blevet udført til de priser.

CLK20 og CLM20: identifikatorerne, diagrammet udelod

FeltMajkontraktJunikontrakt
KontraktidentifikatorCLK20CLM20
LeveringsmånedMaj 2020Juni 2020
Afregning 20. april, dollars pr. tønde−37.6320.43
Kontraktstørrelse1,000 tønder1,000 tønder

Månedskoden er vigtigere end tickerpræfikset. K betyder maj; M betyder juni. Kontrakterne havde forskellige leveringsforpligtelser og forskellige priser. Maj nærmede sig udløb midt i et ekstraordinært pres på lagerkapaciteten. Juni gav en ekstra måned.

En leverandørs kontinuerte symbol skjuler denne forskel bag noget dejligt kompakt. Jeg kan godt lide kompakte symboler, lige indtil de er den eneste identifikator tilbage i handelsloggen. Så begynder fejlsøgning at minde om arkæologi, bare med dårligere kaffe.

Der findes heller ikke én universel kontinuert historik. En leverandør kan rulle et fast antal hverdage før udløb, ved et skæringspunkt for volumen eller efter en anden tidsplan. Mange historikker var allerede rullet ud af maj inden den 20. april. Vores eksempel splejser bevidst disse to afregninger sammen for at gøre fejlen synlig; det er ikke en påstand om en bestemt leverandørs rulning.

1,000 tønder: multiplikatoren bag hver pris

Standardkontrakten for NYMEX WTI-futuresrepræsenterer 1,000 tønder. En bevægelse på $1 ændrer derfor værdien af en lang position i én kontrakt med $1,000. Et tick på $0.01 er $10.

For en uændret position i én kontrakt er grundberegningen:

gross_pnl = contracts × 1,000 × (ending_price − starting_price)

Det gælder stadig under nul. Procentafkast baseret på den noterede futurespris bliver langt mindre brugbare: Når prisen krydser nul, kan de blive udefinerede eller vende deres tilsyneladende betydning på hovedet. Strategiens afkast bør beregnes ud fra kontoens egenkapital og konventionen for pengestrømme. Den noterede pris pr. tønde er ikke den kapital, der er bundet i strategien.

$58.06: diskontinuiteten ved splejsningen

Antag, at en naiv motor ser majkontraktens afregning efterfulgt af juni-kontraktens og anvender formlen, som om instrumentet ikke var skiftet:

invented_pnl = 1 × 1,000 × (20.43 − (−37.63))
             = $58,060

Der er ikke gået tid i denne sammenligning. Det er priserne på to kontrakter fra samme handelssession. Motoren forveksler en prisforskel mellem kontrakter med en gevinst over en holdeperiode.

I en faktisk daglig splejsning indeholder gårsdagens pris på den gamle kontrakt og dagens pris på den nye også almindelige markedsbevægelser. Det gør fejlen sværere at få øje på. Den registrerede ændring blander den gamle kontrakts bevægelse sammen med prisforskellen mellem kontrakterne ved skiftet.

Det retter heller ikke modellen at trække $58,060 fra som en formodet kontant ”rulningsomkostning”. Futures købes ikke ved at betale hele den noterede nominelle værdi. Når man lukker én kontrakt og åbner en anden, får man ændringer i positionerne, realiseret eller afregnet P&L, gebyrer, udførelseseffekter og marginkrav. Forskellen mellem prisniveauerne er ikke automatisk et kontant træk.

+58.06: backjusteringen skrevet ind i historikken

En almindelig måde at konstruere en kontinuert serie på er at lægge rulningsgabet til tidligere priser. Med den konvention bliver majs −37.63 til 20.43, så den møder juni uden et spring. Tidligere observationer i samme historiske segment forhøjes også med 58.06.

KonstruktionHvad sker der ved denne splejsningKonsekvens for analysen
UjusteretForskellen på $58.06 bestårIndikatorer kan fortolke kontraktskiftet som en markedsbevægelse
Additiv backjusteringLæg 58.06 til det ældre segmentDollarændringer inden for segmentet bevares; historiske niveauer og procentændringer forskydes
Forholdsbaseret backjusteringGang det ældre segment med 20.43 / −37.63, cirka −0.543Den negative faktor vender fortegnet på prisændringer inden for segmentet

Det er derfor, jeg ikke accepterer ”forholdsjusteret” som en fuldstændig dataspecifikation. En metode, der opfører sig fornuftigt ved udelukkende positive priser, kræver en tydelig politik for priser omkring nul og under nul.

Additiv justering har også konsekvenser. Et signal, der køber under en absolut tærskel på $30, kan ændre sig, når senere rulninger omskriver tidligere niveauer. Et signal baseret på forskellen mellem et hurtigt og et langsomt glidende gennemsnit kan være invariant over for en fælles additiv forskydning, hvis begge vinduer får samme forskydning. Vinduer, der krydser en justeringsgrænse, skal undersøges særskilt.

Gem justeringsmetoden, rulningsplanen og dataversionen sammen med analyseresultatet. For signaler, der reagerer på justerede niveauer, skal du rekonstruere den historik, der var tilgængelig på hver beslutningsdato. En aktuel download kan indeholde justeringer fra rulninger, der endnu ikke havde fundet sted.

De to ordrerækker, der mangler i det kontinuerte diagram

Her er en bevidst forenklet bogføring. Antag, at én majkontrakt blev værdiansat til −30.00 før rulningen. Antag, at majpositionen lukkes, og juni åbnes til de historiske afregninger ovenfor, hvorefter juni værdiansættes til 21.00. De antagne udførelsespriser er kun en bogføringsillustration.

BogføringshændelseBeregningBrutto-P&L
Luk én lang majposition ved −37.631,000 × (−37.63 − (−30.00))−$7,630
Åbn én lang juni position ved 20.43Ingen prisbevægelse ved indgang$0
Værdiansæt juni til 21.001,000 × (21.00 − 20.43)+$570
I altFør udførelsesomkostninger og gebyrer−$7,060

Forskellen på $58.06 optræder ikke som en selvstændig indtægt eller udgift. Den daglige variationmargin afgør, hvornår futures-P&L påvirker kontantbeholdningen; den skaber ikke en ekstra kopi af denne P&L.

En reel rulning kan udføres via en kalender-spreadordre i stedet for to uafhængige ordrer. Simulatoren bør afspejle den mekanisme, den antager, inklusive udførelser og omkostninger, samtidig med at de enkelte kontraktpositioner bevares nedenunder.

Mit acceptkriterium er enkelt: Hver dollar futures-handels-P&L skal kunne afstemmes mod en navngiven kontrakt, en mængde, en multiplikator og to priser for den samme kontrakt. Jeg vil også have tidspunktet for beslutningen om rulning og dens input. En volumenbaseret regel, der bruger dagens afsluttede sessionsvolumen, kan ikke i smug handle tidligere i den samme session.

Vis den kontinuerte linje som kontekst. Vis nedenunder kontrakterne, der faktisk var i position, og markér hvert skift. Hvis egenkapitalkurven springer ved et skift, er de to ordrerækker det første sted, jeg kigger.

kontinuert futuresbacktestingfuturesrulningermarkedsdataP&L-bogføring
← Alle indlæg