Terep
P0 · 02LeckePiszkozat

A P&L matematikája: költség, R és elvárt érték

Tény

Minden kereskedés beépített veszteséggel indul, és a stratégiád csak akkor létezik, ha az elvárt érték ezek után is pozitív — scalpingnél a költség a legnagyobb egyetlen tétel.

P0-02 · pnl-matematikaja-koltseg-es-elvart-ertek
Min alapul Tény— A kontraktus-specifikációból vagy a tőzsdei szabályokból ellenőrizhető.
Szint Alap
Becsült idő 25 perc
InstrumentumokMNQ · MES
Verzió 0.1
Frissítve 2026-09-19
Szerző darthtrader

1. Az állítás

Amikor megnyitsz egy pozíciót, azonnal mínuszban vagy. Nem azért, mert rossz irányba mentél, hanem mert a belépés fizikai ára kiszámlázódott: átléptél a spreaden, fizettél jutalékot és tőzsdei díjat, és ha market orderrel léptél be, valószínűleg kaptál egy kis csúszást is.

Ez a szám nem kerekítési hiba. Aggresszív scalpingnél, nagy kontraktusszámmal, napi több tucat kötéssel a költség rendszeresen nagyobb tétel, mint bármelyik egyedi rossz döntésed. Ez a lecke arról szól, hogyan számold ki pontosan, mekkora ez a teher, és hogyan döntsd el egy stratégiáról — mielőtt élesben kipróbálnád —, hogy egyáltalán van-e esélye pozitív maradni.

2. Piaci mechanika

A spread nem díj, hanem ár. A könyvben két ár van: amiért valaki vesz (bid) és amiért valaki elad (ask). Ha te market orderrel veszel, az askon kötsz, és azonnal a bid oldalon áll a pozíciód értéke. Az MNQ-n ez jó esetben egy tick, azaz kontraktusonként 0,50 dollár. Az oda-vissza (round turn) tehát már önmagában egy tick veszteséggel indul, mielőtt a piac egyetlen tickkel elmozdulna.

A jutalék kétszer számol. A brókerek jellemzően oldalanként (per side) árazzák a kontraktust, és ehhez jön a tőzsdei és clearing díj. Ami a weboldalon „0,25 dollár" néven szerepel, az a valóságban oldalanként értendő, plusz a CME díja, plusz az esetleges adatszolgáltatás. A round turn valódi ára majdnem mindig a duplája annak, ami elsőre a szemedbe ugrik.

A slippage a sietség ára. Market orderrel biztosan kötsz, de nem tudod, hol. Limit orderrel tudod, hol kötsz, de nem biztos, hogy kötsz. A kettő között nincs ingyen ebéd: a limit order ki nem töltése pont azokban a pillanatokban következik be, amikor az ár elment nélküled — vagyis akkor, amikor igazad volt.

Miért skálázódik rosszul a költség. A nyereséged a pontokkal és a mérettel együtt nő. A költséged viszont a mérettel és a kötésszámmal együtt nő, a pontokkal nem. Ezért egy nagy méretű, sok kötéses, kis pontcélú stílusban a költség aránya drasztikusan magasabb, mint egy ritkán kereskedő swing stílusban.

3. Szabályosított definíció

Round turn költség kontraktusonként:

code
RT_koltseg = 2 × jutalék_oldalanként
           + 2 × tőzsdei_és_clearing_díj_oldalanként
           + spread_költség
           + várható_slippage

Az MNQ-n a spread költsége market-in / market-out esetén jellemzően 1 tick (0,50 USD). Limit belépővel ez nullára csökkenthető, de a ki nem töltés kockázatával.

R-multiple. Egy kereskedés eredménye a kezdeti kockázat egységében kifejezve:

code
R = eredmény_pontban / kezdeti_stop_távolság_pontban

Az R azért fontos, mert eltünteti a méretet a képletből: 5 pontos stoppal és 10 pontos célból 2R lesz, akkor is, ha 1 kontraktusod van, és akkor is, ha 20.

Elvárt érték (expectancy), R-ben:

code
E = WR × átlagos_nyertes_R − (1 − WR) × átlagos_vesztes_R

Nullszaldós találati arány: ha az átlagos nyertesed W R és az átlagos vesztesed 1R, akkor

code
WR_breakeven = 1 / (1 + W)

Vagyis 1:1-es kockázat/hozam mellett 50%, 2R célnál 33,3%, 0,5R célnál 66,7% találati arány kell — költségek nélkül. A költség ezt mindig feljebb tolja.

4. Számolás / kód

python
from dataclasses import dataclass


@dataclass
class CostModel:
    """Minden érték USD-ben, kontraktusonként. A sajátodat írd be!"""
    commission_per_side: float = 0.35
    exchange_fee_per_side: float = 0.37
    spread_ticks: float = 1.0
    tick_value: float = 0.50
    slippage_ticks: float = 0.5

    @property
    def round_turn(self) -> float:
        return (
            2 * self.commission_per_side
            + 2 * self.exchange_fee_per_side
            + (self.spread_ticks + self.slippage_ticks) * self.tick_value
        )

    def daily_drag(self, trades_per_day: int, contracts: int) -> float:
        return self.round_turn * trades_per_day * contracts

    def breakeven_points(self, contracts: int, point_value: float = 2.0) -> float:
        """Hány pontot kell megtenned, hogy nullán legyél egy kötésen."""
        return self.round_turn / point_value


def expectancy(win_rate: float, avg_win_r: float, avg_loss_r: float = 1.0) -> float:
    return win_rate * avg_win_r - (1 - win_rate) * avg_loss_r


def breakeven_win_rate(avg_win_r: float, avg_loss_r: float = 1.0) -> float:
    return avg_loss_r / (avg_win_r + avg_loss_r)


c = CostModel()
print(round(c.round_turn, 2))                 # egy round turn ára / kontraktus
print(round(c.breakeven_points(20), 2))       # hány pont a nullszaldó
print(round(c.daily_drag(28, 20), 2))         # 28 kötés × 20 kontraktus napi terhe
print(round(expectancy(0.55, 1.5), 3))        # elvárt érték R-ben
print(round(breakeven_win_rate(1.5), 3))      # szükséges találati arány

A daily_drag sor az, amit érdemes hosszan nézni. Egy aktív napon, 20 kontraktussal és néhány tucat kötéssel a költség háromjegyű, rossz esetben négyjegyű dollárösszeg — a nyereségtől teljesen függetlenül. Ha a napi célod ezer dollár, akkor a valódi célod a költséggel együtt értendő, és a szükséges pontszám ennek megfelelően nagyobb.

Fontos: a fenti számok helyőrzők. Írd át őket a saját brókerednél érvényes tételekre, különben a modell hazudik neked.

5. A bizonyíték

Hol ellenőrzöd elsődleges forrásból: a brókered díjszabása (oldalanként vagy round turnönként árazzák?), a prop cég díjtáblája, és ami ennél is fontosabb — a saját számlakivonatod. A kivonaton kötésenként látod a jutalékot és a díjat. Ez az egyetlen szám, ami nem marketinganyagból származik.

Első tévhit: „a jutalék elhanyagolható, úgyis a stratégia dönt". Egy kötésen valóban elhanyagolható. Havi több száz kötésen, nagy mérettel a költség a legnagyobb, legkiszámíthatóbb és egyetlen garantált tétel a kimutatásodban. A piac bizonytalan; a díj nem az.

Második tévhit: „a magas találati arány jó stratégiát jelent". A találati arány önmagában nem értelmezhető. 90%-os találati arány 0,2R nyertesekkel és 1R vesztesekkel negatív elvárt értéket ad. A nyereséges nap, ahol minden kötés nyert, ugyanúgy jöhet szerencsés piaci környezetből, mint jó rendszerből — ezt csak elegendő mintaszám dönti el, és ezzel a P5 pálya foglalkozik.

Harmadik tévhit: „limit orderrel nincs slippage, tehát ingyen van". A limit order valóban nem csúszik, de az ára az, hogy amikor a piac gyorsan elmegy a jó irányba, nem kötsz. A statisztikádban ez nem költségként jelenik meg, hanem eltűnt nyereségként, amit soha nem fogsz látni — ezért veszélyesebb.

6. Végrehajtás

  1. Számold ki egyszer a saját round turn költségedet, és írd fel tickben. Az MNQ-n 1,44 dollár például közel 3 tick.

  2. Minden setup breakeven pontját told el ezzel. Ha a setup 5 pontos célra dolgozik, és a költség 1,5 pont, akkor valójában 6,5 pont a nullszaldó.

  3. Napi szinten ismerd a költségterhedet. Ha a szokásos aktivitásod mellett a napi drag 500 dollár, akkor az ezer dolláros célod valójában 1500.

  4. Tiltsd meg magadnak a kis pontcélt nagy mérettel, amíg nem számoltad ki, hogy a költség után marad-e valami. Ez a leggyakoribb rejtett vérzés.

7. Gyakorlat

  • Feladat 1. Nyisd meg az utolsó havi számlakivonatodat, és add össze az összes jutalékot és díjat. Oszd el a bruttó eredménnyel. Az így kapott arány a stratégiád valódi költségaránya.

  • Feladat 2. Írd át a CostModel alapértékeit a sajátjaidra, és futtasd le. Jegyezd fel a round turn költséget tickben.

  • Feladat 3. Számold ki az utolsó 20 kereskedésed átlagos nyertes és vesztes R-értékét, majd az elvárt értéket. Pozitív?

  • Feladat 4. Számold ki a szokásos setupod nullszaldós találati arányát, és vesd össze a tényleges találati arányoddal.

Ellenőrzési kritérium: meg tudod mondani fejből a saját round turn költségedet tickben, és azt is, hogy a szokásos napi aktivitásod mellett hány dollár költséggel indul a napod. Ha ezekre nincs számod, a P&L-ed egy részét nem te irányítod.