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
| Felt | Majkontrakt | Junikontrakt |
|---|---|---|
| Kontraktidentifikator | CLK20 | CLM20 |
| Leveringsmåned | Maj 2020 | Juni 2020 |
| Afregning 20. april, dollars pr. tønde | −37.63 | 20.43 |
| Kontraktstørrelse | 1,000 tønder | 1,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.
| Konstruktion | Hvad sker der ved denne splejsning | Konsekvens for analysen |
|---|---|---|
| Ujusteret | Forskellen på $58.06 består | Indikatorer kan fortolke kontraktskiftet som en markedsbevægelse |
| Additiv backjustering | Læg 58.06 til det ældre segment | Dollarændringer inden for segmentet bevares; historiske niveauer og procentændringer forskydes |
| Forholdsbaseret backjustering | Gang det ældre segment med 20.43 / −37.63, cirka −0.543 | Den 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ændelse | Beregning | Brutto-P&L |
|---|---|---|
| Luk én lang majposition ved −37.63 | 1,000 × (−37.63 − (−30.00)) | −$7,630 |
| Åbn én lang juni position ved 20.43 | Ingen prisbevægelse ved indgang | $0 |
| Værdiansæt juni til 21.00 | 1,000 × (21.00 − 20.43) | +$570 |
| I alt | Fø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.
← Alle indlæg


