本文目录导读:

在量化投资或智能选股模型中,“基本面权重”并没有一个放之四海而皆准的固定数值,它取决于你的投资策略风格(价值/成长/均衡)、持仓周期以及市场环境。
如果我们针对Python量化策略(如使用 pandas、alphalens 或 vectorbt)给出一个通用参考框架,可以按以下梯度来设定:
通用参考权重区间(按策略风格)
| 策略风格 | 基本面因子权重 | 技术/情绪因子权重 | 适用场景(Python回测周期) |
|---|---|---|---|
| 纯价值投资/长线 | 70% - 80% | 20% - 30% (仅用于择时) | 月频调仓,持有>3个月 |
| 均衡配置(推荐新手) | 40% - 50% | 50% - 60% | 周频调仓,持有1-3个月 |
| 中短线/动量 | 15% - 25% | 75% - 85% | 日频调仓,持有<2周 |
| 纯量化高频/情绪 | 0% - 10% | 90% - 100% | 不以基本面为依据,仅做风控过滤 |
核心逻辑:为什么不能拍脑袋定“50%”?
在Python中,设定权重前,你需要先做IC(信息系数)分析,权重比例应当由因子的有效性和独立性决定,而不是主观偏好。
Python 实操建议(权重推导流程):
- 分别计算IC:计算基本面因子(如PE、ROE)和技术因子(如RSI、MACD)的Rank IC(秩相关系数)。
- 计算相关性矩阵:如果基本面因子和技术因子相关性极高(例如0.8),那么权重叠加会导致“双重暴露”,这时你应该减少其中之一的权重,防止集中波动。
- 使用优化器:在Python中,通常用
scipy.optimize或cvxpy做一个简单的最大化夏普比率求解,此时最优权重是模型算出来的,而不是人为设定的。
如果必须给一个“初始值”:
如果你是刚入门量化,想搭一个稳健的“基本面+技术面”合成策略,且没有精力做复杂的因子正交化,建议采用:
基本面权重 = 35% ~ 40% 技术面(量价)权重 = 60% ~ 65%
为什么给技术面多? 因为A股及多数新兴市场散户占比高,短期价格波动受情绪影响大,量价因子在短期内能提供更平滑的收益曲线,而基本面因子在极端熊市或成长股估值切换期可能会连续“失效”数月,给基本面40%的“兜底”权重,足以防止选到财务造假或估值虚高的股票,同时又不至于拖累短线收益。
进阶优化(Python实战案例代码思路)
如果你在写一个选股打分合并函数,可以这样设计动态权重:
# 假设 df_fundamental 是基本面得分(0-100),df_technical 是技术得分
def dynamic_weight(signal_f, signal_t, market_volatility):
"""
根据市场波动率动态调整权重
市场高波动时(如Vol > 20%),降低基本面权重,提升技术面权重
"""
if market_volatility > 0.2:
w_f = 0.25 # 防守态势,跟随趋势
else:
w_f = 0.5 # 正常市况,均衡配置
w_t = 1 - w_f
final_score = w_f * signal_f + w_t * signal_t
return final_score
不要问“应该占多少”,而要问“我的策略周期和风险偏好允许占多少”。
- 如果是长线定投(月频):基本面 70%,技术面 30%。
- 如果是周频轮动:基本面对半开(50%)。
- 如果是日内/隔日交易:基本面只做剔除ST/退市风险股的过滤器(此时权重意义不大,基本约等于 10% 或仅作为布尔值)。
建议你先用历史数据跑一个网格搜索(比如权重从0.1到0.9,步长0.05),看哪个权重组合在回测中夏普比率最高且最大回撤最小,那就是属于你数据的最优解。