تفسير تكاليف الاختبار التاريخي عند خمول حقول الإعدادات
الملخص
تميز ملاحظة الإعدادات هذه بين الخيارات التي تظهر في هوية الاختبار التاريخي وتلك التي تؤثر فعليًا في تكاليف التداول المحاكاة. وتستخدم جميع عمليات التشغيل المسجلة في دراسة الحالة الموصوفة مسارًا متجهًا يحسب العائد حتى تاريخ الانتهاء. ولا تُمرر حقول سعر التنفيذ ومعدل العمولة ومعدل الانزلاق السعري المحددة إلى هذا المسار، كما أن التنفيذ عند جانب السعر المعروض يخص وسيطًا قائمًا على الأحداث لا تنشئه عمليات التشغيل المتجهة. وتظل الإعدادات في التهيئة لأن حذفها سيغير الهوية المرمزة للعمليات الحالية.
تُقرأ تكاليف المحاكاة منفصلةً من ملف إعداد: فروق أسعار دخول الخيارات وخروجها، والفروق المقدرة للتحوط عند كل إعادة موازنة، والعمولات لكل عقد أو سهم. وتشير الملاحظة إلى أن حقل إجمالي الانزلاق السعري المسجل فارغ في كامل المجتمع المذكور، رغم احتساب التكاليف، لأن هذا المسار لا يسجل إجمالي التكاليف. وهذا درس مفيد للتدقيق: فقيمة الإعداد أو غياب مقياس التكلفة وحدهما لا يثبتان ما احتسبه الاختبار التاريخي. وتنطبق النتائج على التطبيق المحدد، وينبغي إعادة التحقق منها إذا تغير مشغله أو مسار بيانات التكاليف.
الأفكار الرئيسية
- قد تؤثر حقول الإعدادات في الهوية المرمزة للتشغيل، حتى عندما لا يستخدمها مسار التنفيذ.
- لا يستخدم مسار العائد إلى تاريخ الانتهاء المتجه الموصوف هنا حقول العمولة والانزلاق السعري المحددة بالمعدل.
- تأتي التكاليف المحتسبة في المحاكاة من مكونات منفصلة للخيارات والتحوط والتصفية.
- لا يثبت حقل إجمالي الانزلاق السعري الفارغ أن التكاليف لم تُحمّل.
- يعتمد تفسير التكلفة على تتبع المشغل المحدد ومسار تدفق بياناته.
الوسوم
النص الكامل
# 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 هذا الملخص استنادًا إلى المصدر الأصلي؛ وهو ليس نسخة منه.