פרשנות עלויות בקטסט כשהגדרות אינן פעילות
סיכום
הערת תצורה זו מבחינה בין הגדרות שמופיעות בזהות של בקטסט לבין הגדרות שמשפיעות בפועל על עלויות מסחר מדומות. במקרה המתואר, כל הריצות הרשומות משתמשות במסלול וקטורי של תשואה עד לפקיעה. שדות מחיר הביצוע, שיעור העמלה ושיעור הסליפג׳ שהוגדרו אינם מועברים למסלול הזה, וביצועים לפי צד הציטוט שייכים לברוקר מונחה־אירועים שהריצות הווקטוריות אינן בונות. ההגדרות נשארות בתצורה משום שהסרתן תשנה את הזהות המגובבת של ריצות קיימות.
העלויות בפועל נקראות בנפרד מקובץ הגדרות: מרווחי כניסה ויציאה באופציות, מרווחי גידור משוערים בכל איזון מחדש, ועמלות לכל חוזה או מניה. ההערה מדווחת ששדה הסליפג׳ הכולל שנרשם הוא ריק בכל האוכלוסייה המצוינת, למרות שנגבו עלויות, משום שהמסלול הזה אינו מתעד סיכומי עלויות. זהו לקח שימושי לביקורת: ערך תצורה או מדד עלות חסר לבדם אינם מוכיחים כמה שילם הבקטסט. הממצאים חלים על המימוש המסוים ויש לבדוק אותם מחדש אם מפעיל הריצות או חיבורי העלויות ישתנו.
רעיונות מרכזיים
- שדות תצורה יכולים להשפיע על הזהות המגובבת של ריצה גם כשהם אינם משמשים במסלול הביצוע.
- מסלול התשואה הווקטורי עד לפקיעה המתואר כאן אינו משתמש בשדות העמלות והסליפג׳ המוגדרים לפי שיעור.
- עלויות המסחר המדומות בפועל מגיעות מרכיבי עלות נפרדים של אופציות, גידור וחיסול פוזיציה.
- שדה סליפג׳ מצטבר ריק אינו מוכיח שלא נגבו עלויות.
- פרשנות העלויות תלויה במעקב אחר מפעיל הריצות המסוים וזרימת הנתונים שלו.
תגיות
הטקסט המלא
# base.yaml ```yaml # Three fields below are inert on the path this case study runs: `execution.execution_price`, # `commission.rate` and `slippage.rate`. Every registered backtest here is `ret_to_expiry`, # which `case_studies/utils/backtest_runner.py` routes to `_run_htm_daily_mtm`, and that call # is not passed `cost_spec` - the only thing that carries these rates into a run. The # `quote_side` fill is read by the event-driven broker, which a `rebalance.mode: vectorized` # case study never constructs. They still reach the registered `backtest_config` and so the # hashed identity, which is why they stay: removing them would re-key 879 backtests to delete # values nothing reads. # # The costs this case study actually pays come from `_htm_backtest.py`, which reads # `config/setup.yaml::costs.components` directly - per-leg entry spread from the real option # quotes, `hedge_spread.estimate_bps_of_notional` on every hedge rebalance, # `commission.option_per_contract` and `commission.equity_per_share`, plus an exit spread on # liquidation. Verified 2026-09-12; `total_slippage` is NULL on all 879 rows because the # vectorized path records no cost totals, not because nothing was charged. account: allow_short_selling: true execution: execution_price: quote_side mark_price: price execution_mode: next_bar commission: model: percentage rate: 0.0005 slippage: model: percentage rate: 0.0002 calendar: calendar: NYSE timezone: UTC data_frequency: daily feed: timestamp_col: timestamp entity_col: symbol price_col: instr_mid close_col: close bid_col: instr_bid ask_col: instr_ask mid_col: instr_mid metadata: case_study: sp500_options ```
מוצג במלואו בציון המקור ובהתאם לרישיון שלו. רישיון: MIT
הסיכום נכתב בידי סוכן המחקר של Stratmill על סמך המקור; הוא אינו העתק של המקור.