是非问题需要 logit
当结果是“是/否”(SPY 明天会涨吗?)时,直线回归可能预测出小于 0 或大于 1 的概率。logit 模型让线性得分通过一条曲线:P(上涨)=1/(1+e^(-z)),其中 z=β₀+β₁x₁+…。在 statsmodels 中只要一行,smf.logit('up ~ ret + vol20 + spread', data).fit(disp=0),res.predict(data) 返回每行的概率。系数是对数几率的变化,很难体会。有两种翻译能帮忙。e^β 是几率比:变量增加一个单位时“上涨”几率被乘上的因子(0.95 表示减少 5%)。平均边际效应 res.get_margeff().summary_frame()['dy/dx'] 说明多一个单位平均会使概率增加多少个百分点。
方向模型必须击败一个平凡的基准,而在市场里这个基准很强:SPY 在 5,345 个交易日里有 55.0% 上涨,所以总是说“上涨”的规则有 55.0% 的时间是对的。用昨日收益、20 日波动率和 10 年减 2 年利差的 logit,对收益给出几率比 0.95(收益高一个点使上涨几率降低 5%;边际效应为 -1.26 个点),McFadden R² 为 0.0007,几乎为零。它的命中率是 55.2%,而总说“上涨”是 55.0%,因为模型在 99% 的日子里预测概率高于 0.5。p 值低于 5% 说明系数大概率不为零,并不说明模型有用。始终把命中率和朴素比率放在一起看。
- 系数是对数几率:把它们翻译成几率比(
exp)或对概率的边际效应。 - 与朴素规则比较:总是预测占多数的方向,是模型必须超越的基准。
- 显著不等于有用:McFadden R² 为 0.0007,是可测量的系数,却是无法使用的预测。
实验:评分内容
- 日度表15 分
- logit 拟合10 分
- 几率比10 分
- 平均边际效应15 分
- 模型的命中率10 分
- 朴素基准10 分
- 完整研究30 分