実装コード python

# ===================================================================== # 量化策略流派 · 官方教学示例(多因子选股 / Multi-factor) # 策略:价值 + 质量 + 动量 三因子横截面 Z-Score 等权合成,做多高分、做空低分 # 说明:本代码为社区教学示例,由站点整理发布,仅供学习交流。 # 示例代码由站点提供,站点不对代码的安全性、合规性与收益 # 表现作任何明示或默示担保;据此交易风险自负。 # 依赖:numpy(pip install numpy) # 运行:python multi_factor.py # ===================================================================== import numpy as np def gen_stocks(n=300, seed=3): """模拟横截面:真实因子暴露 + 观测噪声 + 未来收益。""" rng = np.random.default_rng(seed) value = rng.normal(0, 1, n) # 价值(低估值程度) quality = rng.normal(0, 1, n) # 质量 mom = rng.normal(0, 1, n) # 动量 fwd = 0.3 * value + 0.3 * quality + 0.4 * mom + rng.normal(0, 0.5, n) obs_value = value + rng.normal(0, 0.4, n) # 观测含噪 obs_quality = quality + rng.normal(0, 0.4, n) obs_mom = mom + rng.normal(0, 0.4, n) return dict(value=obs_value, quality=obs_quality, mom=obs_mom, fwd=fwd) def backtest(d, top=0.1): def z(x): return (x - x.mean()) / (x.std() + 1e-9) score = (z(d["value"]) + z(d["quality"]) + z(d["mom"])) / 3.0 order = np.argsort(score) k = int(len(score) * top) longs = order[-k:] shorts = order[:k] spread = d["fwd"][longs].mean() - d["fwd"][shorts].mean() ic = np.corrcoef(score, d["fwd"])[0, 1] return dict(spread=spread, ic=ic, top_mean=d["fwd"][longs].mean(), bot_mean=d["fwd"][shorts].mean()) if __name__ == "__main__": d = gen_stocks() m = backtest(d) print("多因子选股(价值+质量+动量 合成)横截面检验") print(f" 股票数 : {len(d['fwd'])}") print(f" 多空收益差 : {m['spread']:.3f}") print(f" 因子 IC : {m['ic']:.3f}") print(f" 头部组合均值 : {m['top_mean']:.3f}") print(f" 尾部组合均值 : {m['bot_mean']:.3f}")
コードは利用者提供です。サイトは安全性・適合性について責任を負いません。

💬 実装へのコメント