
我开发的量化策略是结合动量、价值、质量因子的股票选股模型,通过滚动窗口计算市场情绪指标(VIX)择时,样本内回测(2010-2015)和样本外回测(2016-2020)验证后,通过动态调整因子权重(如市场风格转换时提升动量权重)和优化交易频率(从月度变为每两周),年化收益从15%提升至17%,最大回撤从15%降至10%。
老师会解释核心模块:
| 因子类型 | 定义 | 理论依据 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|---|
| 动量因子 | 12个月收益前30%的股票 | 动量效应(市场记忆) | 适应性强,捕捉趋势 | 牛市/熊市后反转 | 过度拟合,市场反转时表现差 |
| 价值因子 | 市盈率/市净率低于行业均值 | 市场有效性理论 | 长期稳定,抗周期 | 熊市后期 | 滞后,市场上涨时收益低 |
| 质量因子 | ROE/毛利率高于行业均值 | 企业盈利能力理论 | 风险低,盈利持续 | 市场稳定期 | 对行业周期敏感 |
| 动态权重 | 基于市场风格(机器学习) | 市场风格转换理论 | 适应性强,长期稳健 | 所有市场阶段 | 需要数据支持,计算复杂 |
伪代码(因子计算+择时逻辑):
import pandas as pd
def calculate_factor_score(stock_factors, weights):
return (stock_factors * weights).sum()
def dynamic_weight_adjustment(market_trend):
if market_trend == 1: # 牛市
weights = {'momentum': 0.6, 'value': 0.2, 'quality': 0.2}
else: # 熊市
weights = {'momentum': 0.4, 'value': 0.4, 'quality': 0.2}
return weights
# 示例数据
factor_data = {
'000001.SZ': {'momentum': 0.8, 'value': 0.5, 'quality': 0.7},
'600519.SH': {'momentum': 0.6, 'value': 0.9, 'quality': 0.6}
}
weights = dynamic_weight_adjustment(1) # 牛市,调整权重
scores = {}
for stock, factors in factor_data.items():
scores[stock] = calculate_factor_score(factors, weights[stock])
top_stocks = sorted(scores.items(), key=lambda x: x[1], reverse=True)[:20]
print(f"选股结果:{top_stocks}")
# 择时逻辑
vix = 18 # 当前VIX
vix_mean = pd.Series([20, 18, 22, 19, 17]).mean() # 30天滚动均值
is_buy = vix < vix_mean
print(f"买入信号:{is_buy}")
(约90秒)
“面试官您好,我开发的量化策略是一个多因子选股结合动态市场情绪择时的长期策略。核心是通过动量、价值、质量因子筛选股票,然后根据滚动窗口计算的VIX均值判断交易时机。具体来说,选股时,我们计算每只股票的因子得分(加权后),取前20只;择时上,当VIX低于30天均值(比如20)时买入,否则持有现金。回测方面,我们用2010-2015年样本内验证,2016-2020年样本外测试,考虑0.1%交易成本,结果显示年化收益15%,夏普比率1.2。优化后,通过5折交叉验证调整因子权重(牛市时动量权重提升至0.6),并增加交易频率(从月度变为每两周),优化后年化收益提升至17%,最大回撤从15%降至10%。”