1. Az állítás
Az MNQ chartod nem egyetlen piac évek óta futó árfolyama. Négy szerződés váltja egymást évente, és amit „az MNQ árának" hívsz, az mindig az éppen aktív szerződés ára. Évente négyszer ez a szerződés lecserélődik, és ilyenkor három dolog mozdul el egyszerre: a likviditás, az árszint, és — ha nem figyelsz oda — a backtested eredménye is.
Ez a lecke rövid, de kihagyni drága. A roll-hét az az időszak, amikor a kereskedők egy része váratlanul rosszabb kötéseket kap, és nem érti, miért.
2. Piaci mechanika
Négy szerződés évente. A részvényindex-futures a márciusi, júniusi, szeptemberi és decemberi ciklust követi. A kereskedés gyakorlatilag mindig egyetlen szerződésben, a front monthban koncentrálódik; a többi ott van, de alig forog.
A lejárat készpénzes elszámolással zárul. Az utolsó kereskedési nap a lejárati hónap harmadik péntekje, és az elszámolás a nyitáskor képzett speciális indexértékhez igazodik. Nem kapsz részvényt, nem kapsz értesítést arról, hogy „mostantól nincs pozíciód" — egyszerűen elszámolják, olyan áron, amelynek a kialakulásában te nem vettél részt.
A roll nem egy pillanat, hanem egy átvándorlás. A lejárat előtti hetekben a szereplők fokozatosan átteszik a pozícióikat a következő szerződésbe. Ezt jellemzően naptárspreaddel csinálják: egyszerre zárják a közelit és nyitják a távolit, egyetlen ügyletben. A napi forgalom egy adott napon átbillen a következő szerződésbe; a részvényindexeknél ez tipikusan a lejárati hét előtti csütörtök környékén történik meg.
Az árszint nem ugyanaz a két szerződésben. A távolabbi lejárat ára tartalmazza a hátralévő időre eső finanszírozási költséget és a várható osztalékokat, ezért jellemzően eltér a közelitől. Ez az eltérés nem hiba, hanem a futures árazásának lényege — de a chartodon szakadásként jelenik meg.
Ezért van kétféle folytonos chart. A „visszaigazított" (back-adjusted) sorozat úgy ragasztja össze a szerződéseket, hogy eltünteti az ugrást — ennek ára, hogy a régi árszintek már nem a valóban kereskedett árak. A nem igazított sorozat valódi árakat mutat, de látványos réseket tartalmaz. Mindkettő hazudik valamiben; a kérdés az, hogy melyik hazugság zavar téged kevésbé abban, amit éppen mérsz.
3. Szabályosított definíció
Hónapkódok (a teljes készlet, bár indexnél csak négyet használunk):
| F | G | H | J | K | M | N | Q | U | V | X | Z |
|---|---|---|---|---|---|---|---|---|---|---|---|
| jan | feb | már | ápr | máj | jún | júl | aug | szep | okt | nov | dec |
Szimbólum felépítése: gyök + hónapkód + évszám. Például MNQZ6 a 2026.
decemberi Micro Nasdaq szerződés. Egyes platformok kétjegyű évet írnak
(MNQZ26), a logika ugyanaz.
Front month: az a szerződés, amelyikben a napi forgalom nagyobb része zajlik. Figyelem: ez forgalom szerinti definíció, nem naptári. A naptár csak jelzi, mikor érdemes odanézni.
Utolsó kereskedési nap: a lejárati hónap harmadik péntekje, nyitáskori elszámolással.
4. Számolás / kód
from datetime import date
MONTH_CODES = {3: "H", 6: "M", 9: "U", 12: "Z"}
def third_friday(year: int, month: int) -> date:
d = date(year, month, 1)
# az első péntekig lépünk, onnan +14 nap
first_friday = d.day + (4 - d.weekday()) % 7
return date(year, month, first_friday + 14)
def contract_symbol(root: str, year: int, month: int) -> str:
return f"{root}{MONTH_CODES[month]}{year % 10}"
def active_contract(today: date, root: str = "MNQ", roll_days_before: int = 8):
"""Naptár szerinti front month. A VÉGSŐ szót a forgalom mondja ki!"""
candidates = sorted(
(third_friday(y, m), y, m)
for y in (today.year, today.year + 1)
for m in (3, 6, 9, 12)
)
for expiry, year, month in candidates:
if (expiry - today).days > roll_days_before:
return contract_symbol(root, year, month), expiry
raise ValueError("nem található aktív szerződés")
sym, exp = active_contract(date(2026, 9, 19))
print(sym, exp) # MNQZ6 2026-12-18
print(third_friday(2026, 12))A roll_days_before paraméter szándékosan van kiemelve: ez becslés, nem
szabály. A helyes eljárás az, hogy a naptár figyelmeztet, a forgalom pedig
dönt — a két szerződés napi volumenét összeveted, és akkor váltasz, amikor
az új átvette a vezetést.
5. A bizonyíték
Hol ellenőrzöd elsődleges forrásból: a CME termékoldalán a lejárati naptár, a platformodon pedig a két szomszédos szerződés napi forgalma egymás mellett. Ha az új szerződés forgalma átlépte a régiét, a roll megtörtént, függetlenül attól, mit mondott a naptár.
Első tévhit: „lejáratkor be kell zárnom, különben leszállítják nekem a részvényeket". Indexfutures esetén nincs szállítás. Ami viszont valóban történik: a pozíciódat elszámolják egy olyan áron, amelyet te nem választottál, és amely a nyitási aukcióból származik. Ez nem szállítási kockázat, hanem árkockázat.
Második tévhit: „a roll csak a hosszú távú tartóknak számít, én napon belül kereskedem". A napon belüli kereskedőnek pont a legfontosabb következménye van: ha a rossz szerződésben ülsz a roll után, vékonyabb könyvben kereskedsz, szélesebb spreaddel és rosszabb kitöltéssel. A költségleckéből tudod, hogy ez mennyibe kerül.
Harmadik tévhit: „a folytonos chart ugyanaz, mint a valóság, hiszen évek óta azt nézi mindenki". Backtest szempontjából ez a legveszélyesebb feltételezés. Visszaigazított sorozaton a régi szintek nem valódi árak, tehát a „régen is működött a szintem" állítás önmagában semmit nem bizonyít. Ezzel a P5 pálya részletesen foglalkozik.
6. Végrehajtás
Írd be a naptáradba a négy lejáratot az évre előre, és mellé a roll-hetet.
A roll-héten minden reggel vesd össze a két szerződés forgalmát, és akkor válts, amikor az új átvette.
Váltás után számold újra a szintjeidet. Az előző napi csúcs és mélypont a régi szerződés árain keletkezett; az új szerződésen ezek eltolódnak.
Ellenőrizd, hogy a chart és a megbízás ugyanazon a szimbólumon van. Ez a roll-hét klasszikus, drága figyelmetlensége.
A lejárat napján ne ülj a lejáró szerződésben, hacsak nincs rá kifejezett okod.
7. Gyakorlat
Feladat 1. Futtasd le az
active_contractfüggvényt a mai dátummal. Egyezik azzal, ami a platformodon nyitva van?Feladat 2. Nyisd meg egymás mellett a jelenlegi és a következő MNQ szerződés napi forgalmát. Írd le mindkettőt.
Feladat 3. Keresd meg a következő lejárat dátumát, és vedd fel a naptáradba két bejegyzéssel: „roll-hét kezdete" és „lejárat".
Feladat 4. Nézd meg a platformod folytonos chartját az utolsó roll környékén. Látsz rést? Ha nem, a platformod visszaigazított sorozatot mutat — írd fel, mert ez a backtestjeidre is érvényes lesz.
Ellenőrzési kritérium: fejből meg tudod mondani a jelenlegi front month szimbólumát és a lejárat dátumát, és tudod, hogy a platformod folytonos chartja igazított-e vagy sem.