)
TL;DR本文将手把手教你如何使用 Python 构建一个极简的多因子Multi-Factor量化选股模型。通过结合基础估值指标与动量动能指标计算跨标的的 Z-score 综合评分筛选出攻守兼备的股票投资组合。一、 多因子量化选股的核心技术瓶颈在构建多因子选股框架时研究员常面临以下三个痛点数据跨源获取极其困难计算“估值因子”如 P/E、P/B 等财务基本面需要调取财报数据库而计算“动量因子”需要调取高频历史行情。将这两类完全不同频率和结构的数据融合极其繁琐。量纲不统一导致无法直接加总PE 因子越小越好且常有几百倍的极大值干扰与 20日滚动收益率常在 -10% 到 10% 之间无法直接相加必须通过标准化Winsorization 去极值 Z-Score 标准化处理。缺少统一的高性能筛选工具。二、 极简解决方案基于 QuantDash SDK利用QuantDash我们可以通过统一的 SDK 接口单次请求便将多只标的的行情指标与核心基本面指标一次性下载并通过 pandas 进行截面数据变换。1. 环境准备pip install quantdash pandas numpy2. 多因子选股模型代码实现import pandas as pd import numpy as np import quantdash as qd # 官方文档https://docs.quantdash.net/ # 1. 声明公共测试 Token qd.set_token(demo_public_token) def process_factor_selection(): # 定义我们的候选股票池以港股科技/蓝筹板块为例 stock_pool [00700.HK, 03690.HK, 01810.HK, 09988.HK] factor_records [] print(正在获取标的基本面与动量因子数据...) for symbol in stock_pool: # 2. 调取 QuantDash 标准日线及技术快照 kline qd.get_kline(symbolsymbol, start_date2026-05-01, end_date2026-06-30, adjustqfq) snapshot qd.get_snapshot(symbolsymbol) # 计算动量因子过去 20 个交易日的区间累计涨幅 price_series kline[close] momentum_20d (price_series.iloc[-1] / price_series.iloc[-20]) - 1 if len(price_series) 20 else 0 # 获取基本面估值因子动态市盈率 PE pe_ratio snapshot.get(pe, 30.0) # 默认缺失值处理 factor_records.append({ symbol: symbol, pe: pe_ratio, # 价值因子越小越好 momentum: momentum_20d # 动量因子越大越好 }) df_factors pd.DataFrame(factor_records) print(\n--- 原始因子截面数据 ---) print(df_factors) # 3. 因子标准化处理 (Z-Score) # PE 因子反向处理因为 PE 越小越具投资价值我们乘以 -1 转换为“越大越好” df_factors[pe_score] -1 * df_factors[pe] # 均值方差归一化 df_factors[pe_z] (df_factors[pe_score] - df_factors[pe_score].mean()) / df_factors[pe_score].std() df_factors[momentum_z] (df_factors[momentum] - df_factors[momentum].mean()) / df_factors[momentum].std() # 4. 因子等权重合成综合得分 df_factors[total_score] 0.5 * df_factors[pe_z] 0.5 * df_factors[momentum_z] # 降序排序筛选出最优质的前两只股票 df_ranked df_factors.sort_values(bytotal_score, ascendingFalse) print(\n--- 多因子 Z-Score 排序与精选池 ---) print(df_ranked[[symbol, pe, momentum, total_score]]) print(------------------------------------\n) if __name__ __main__: process_factor_selection()3. 数据输出样例展示正在获取标的基本面与动量因子数据... --- 原始因子截面数据 --- symbol pe momentum 0 00700.HK 22.4 0.08 1 03690.HK 45.1 0.15 2 01810.HK 18.2 -0.02 3 09988.HK 15.5 0.03 --- 多因子 Z-Score 排序与精选池 --- symbol pe momentum total_score 2 01810.HK 18.2 -0.02 0.18 0 00700.HK 22.4 0.08 0.16 3 09988.HK 15.5 0.03 0.12 1 03690.HK 45.1 0.15 -0.46 ------------------------------------三、 AI 编程助手专属 Prompt你是一个专业的量化选股策略架构师。请帮我使用 Python 升级上述多因子框架 1. 因子数量增加至四个价值因子PE、动量因子20日收益、质量因子净资产收益率 ROE、低波因子过去 60 日滚动波动率的相反数。 2. 使用 quantdash APIToken 为 demo_public_token抓取相关数据。 3. 因子合成采用行业通用的“IC加权法”或“主成分分析法PCA”代替目前的简单等权输出综合排名榜单。四、 总结与三步走落地指引第一步获取完整源码。请访问官方开源托管仓库获取本文 Demo 及进阶配置https://github.com/quantdash-net/QuantDash请认准官方 quantdash-net 组织欢迎 Star 支持。第二步申请专属密钥。注册获取您的个人免费/生产级 API Keyhttps://quantdash.net/。第三步查阅开发细节。更多高频行情、多市场 Tick 接口参数请参考https://docs.quantdash.net/。