很多散户看到“AI交易机器人”就以为能躺着赚钱,但真实情况是:期权交易风险极高,方向预测稍有偏差就可能亏掉全部权利金。本文不提供投资建议,只展示一个可运行的Python脚手架——如何用特征管道(期权链、隐含波动率、PCR)、梯度提升分类器和强制Greeks风险限制的回测引擎,构建一个针对ASX 200指数期权的AI辅助交易机器人。请先记住:这只是教育示例,请咨询ASIC或持牌顾问后再考虑实盘。 ## 为什么选择ASX 200期权作为AI目标? 1. **流动性集中**:指数权重股期权流动性好,标的较干净,比宽基ETF更适合训练分类器。 2. **AUD/USD叠加**:汇率变化是额外特征维度,可能提升方向预测的区分度。 3. **监管清晰**:澳大利亚ASIC对期权成本披露要求严格,交易透明,更容易做费用回测。 ## 三层架构总览 - **第一层:数据与特征管道** → 输入期权链、IV、PCR,生成特征矩阵。 - **第二层:模型** → 用梯度提升(HistGradientBoosting)输出方向概率 P(direction | features)。 - **第三层:规则与Greeks引擎** → 根据模型概率判断是否下单,同时执行持仓规模、止损和DTE限制。 这三层缺一不可。模型只给概率,最终决策由规则引擎控制——这正是为了对抗“AI玄学”带来的过度自信。 ## 第一层:特征工程(Python代码) 以下代码在 Mac/Linux/Termux 中用 `python3 features.py` 运行,Windows CMD 用 `py features.py`。 ```python import pandas as pd, numpy as np def build_features(chain: pd.DataFrame, pcr: float) -> pd.DataFrame: df = chain.copy() df["mid"] = (df["bid"] + df["ask"]) / 2.0 df["spread_pct"] = (df["ask"] - df["bid"]) / df["mid"].clip(lower=1e-9) df["moneyness"] = df["strike"] / df["spot"] - 1.0 atm_iv = df.loc[(df["moneyness"].abs()).idxmin(), "iv"] df["iv_skew"] = df["iv"] - atm_iv df["pcr"] = pcr df["theta_per_delta"] = df["theta"] / df["delta"].clip(lower=1e-9) return df if __name__ == "__main__": # 演示数据:一只ASX 200看涨期权 demo = pd.DataFrame([{ "strike": 7800, "bid": 22, "ask": 23, "iv": 0.14, "delta": 0.50, "gamma": 0.0016, "theta": -3, "vega": 12, "oi": 42000, "volume": 2100, "spot": 7780, "dte": 14 }]) f = build_features(demo, pcr=0.90) print(f[["mid", "spread_pct", "moneyness", "iv_skew", "theta_per_delta"]].to_string()) ``` 这段代码生成了五个核心特征:中间价、买卖价差百分比、货币性(虚实值程度)、IV倾斜度、每单位Delta的Theta消耗。这些特征反映了期权链的微观结构和风险压力。 ## 第二层:方向概率模型 使用 `HistGradientBoostingClassifier`(sklearn)。注意,真实训练需要大量历史期权链和对应到期结果,这里仅展示结构: ```python from sklearn.ensemble import HistGradientBoostingClassifier import numpy as np # X_train, y_train 来自历史特征和实际到期方向(1=上涨,0=下跌) # 模型输入:build_features 生成的所有特征列 model = HistGradientBoostingClassifier( max_iter=200, learning_rate=0.05, max_depth=4, random_state=42 ) model.fit(X_train, y_train) # 对新特征向量输出方向概率 prob_up = model.predict_proba(X_test)[:, 1] # P(上涨) ``` 模型输出的是一个概率,而不是直接交易信号。这一层其实很脆弱——市场会变化,所以必须过第三层。 ## 第三层:规则与Greeks风险引擎 假设模型给出 P(上涨)=0.65,规则引擎不会直接做多。它先检查这些条件: ```python def rules_engine(prob_up, features, greeks, max_risk_pct=0.02, max_dte=30): if not (0.55 <= prob_up <= 0.85): return "skip" # 概率不够极端,不下注 if abs(greeks["delta"]) > 0.6: return "skip" # Delta暴露过高 if features["spread_pct"] > 0.05: return "skip" # 买卖价差太宽,交易成本吃掉利润 if features["dte"] > max_dte or features["dte"] < 3: return "skip" # DTE过低或过高都危险 # 满足所有条件才允许下单,并限制仓位 position_size = min(max_risk_pct / (abs(greeks["delta"]) * 100), 1) return f"buy_position_size={position_size:.2f}" ``` 注意,这里的 `max_risk_pct` 是账户风险预算,`delta` 控制方向敞口。整个回测必须强制执行这些限制,否则模型再准也可能一次爆仓。 ## 回测必须做的三件事 1. 按时间顺序滚动训练/测试,防止未来泄漏。 2. 考虑交易成本(ASX期权点差、佣金)。 3. 每次强制检查 Greeks(Delta、Theta、Gamma、Vega)和 DTE,模拟真实强制平仓。 建议用 `backtrader` 或 `vectorbt` 进行事件驱动回测,但核心始终是:**模型负责概率,规则负责生死**。 ## 最后说两句 这个脚手架不是让你直接拿去实盘。它演示了如何把特征工程、机器学习、风险规则组合成一个可验证的流水线。在ASIC监管下,散户交易期权必须了解自己的风险承受能力。请把代码当作学习工具,先用模拟盘测试半年,再考虑真实资金。永远记住:期权可以完全归零,别让AI的“高概率”蒙蔽了你的双眼。

打开网易新闻 查看精彩图片