4月9日基础班问题答疑
由small_q创建,最终由qxiao 被浏览 11 用户
问题:有些策略在固定持有时间时,对回测起始时间非常敏感,起始时间相差1天,回测收益率就会有很大变化。有什么好的办法能降低策略对回测起始时间的敏感度?
根本原因:固定持有期策略本质上是在做"相位采样",不同起始日对应不同的持仓批次,收益差异大说明策略本身存在较强的时序依赖或批次效应。
可以把日期当做一个参数,进行参数寻优测试。
解决思路:
① 多起始点平均(Phase Averaging) 最直接的方法。对同一策略跑 N 个不同起始日(如错开 1~20 个交易日),取平均收益/夏普作为策略真实表现估计。
import pandas as pd
results = []
for offset in range(20): # 错开0~19个交易日
start = get_trading_date(base_start, offset)
result = run_backtest(start=start, end=end)
results.append(result['annualized_return'])
print(f"均值: {pd.Series(results).mean():.2%}")
print(f"标准差: {pd.Series(results).std():.2%}")
print(f"最差: {pd.Series(results).min():.2%}")
② 分散持仓批次(Tranche 化) 将资金分成 N 份,每份错开一个交易日建仓,相当于同时持有 N 个相位的策略,自然平滑了起始时间敏感性。这是固定持有期策略的标准工程化做法。
③ 改用信号驱动替代固定持有期 固定持有期本身就是一个强假设,可以考虑用止盈止损、动态再平衡或信号退出替代,让策略的持仓时间由市场状态决定。
问题:基于市场风格因子收益表的多风格组合策略高度依赖风格因子收益表的准确性,但是不同来源的风格因子收益表(比如:factors_return和cn_stock_market_style)数据差距很大,应该如何判断风格因子收益表的准确性?除了风格因子收益表,其他还有什么好的数据可以作为策略轮动的信号?
还有 宏观择时,可以参考:3月27日:如何利用Cowork进行高效量化择时
问题:现有很多策略,收益有的好有的差,但是实盘时候总是负的,导致对策略不是很有信心,如何评判有用的策略,有么有一个样板策略,以建立信心
实盘亏损但回测好,核心问题通常是回测偏差,而不一定是策略本身无效。
评判框架(由严到宽):
第一关:排除回测偏差
- 是否有未来函数(用了当天收盘价买入?用了未来的因子?)
- 是否有幸存者偏差(回测股票池是否包含退市股)
- 滑点/手续费是否合理设置(建议双边千三起步)
- 数据是否有前视偏差(财务数据用报告期还是披露期)
第二关:样本外验证
text
训练期:2015-2020 → 验证期:2021-2024 → 测试期:2025至今
只有测试期表现接近验证期,策略才算通过。
第三关:逻辑自洽 策略背后要有可解释的 alpha 来源(行为金融、结构性摩擦、信息不对称),纯数据挖掘的规律容易失效。
建立信心的实操建议:
- 先用小仓位(5-10%)实盘验证 3-6 个月,对比回测预期
- 记录每笔交易的预期 vs 实际,分析偏差来源
- 多策略分散,单策略不超过总仓位 30%
问题:现有很多因子,如何利用?如何在原有基础上优化因子
原始因子 → 因子预处理 → 因子有效性检验 → 因子合成 → 组合构建
参考 本月线下私享会活动,有“因子组合”的专题
问题:择时的策略有哪些?推荐一些思路和有效的择时?
择时本质是判断市场状态,有效的择时信号通常来自以下几类:
① 趋势类(中低频,稳健)
均线系统:MA20/MA60/MA120 多头排列
价格动量:过去 N 月涨幅(12-1 动量)
布林带突破
② 估值类(低频,均值回归)
全市场 PE/PB 分位数(低于 30% 分位加仓)
股债性价比(EP - 10年国债收益率,即"美林时钟"简化版)
# 股债性价比示例\nequity_premium = 1/pe_ratio - bond_yield
# 当 equity_premium > 历史均值+1σ 时,股票相对债券有吸引力
③ 情绪类(高频,反转)
融资余额变化率
涨停板数量/跌停板数量比值
换手率分位数(极高换手往往是顶部信号)
④ 宏观类(月频,配置层面)
PMI 拐点(从收缩转扩张是买入信号)
社融同比增速拐点
美联储政策周期
实践建议:
单一择时信号胜率通常只有 55-60%,需要多信号共振
择时策略更适合做仓位管理(0-100% 仓位),而非全进全出
回测时注意:宏观数据有发布延迟,要用发布日而非统计期
问题:高频因子如何利用,和传统风格因子如何综合?
方案一:分层架构
高频因子 → 短期信号(日内/T+1调仓)
风格因子 → 中期持仓方向
两者叠加:在风格因子看多的股票中,用高频因子择优买入时机
方案二:多频率因子合成
# 给不同频率因子赋予不同权重和衰减系数
combined_score = (
0.3 * normalize(hf_factor_1d) # 高频,权重低但信号新鲜
+ 0.3 * normalize(hf_factor_5d)
+ 0.4 * normalize(style_factor) # 风格因子,权重高但更稳定
)
注意事项:
- 高频因子换手率高,合成后要控制整体换手,否则手续费侵蚀严重
- 高频因子容量限制,大资金慎用
问题:AI模型和线性模型有么有经典的策略推荐,好魔改,之前滚动训练一直修改不好,怎么去优化他
基于因子的选股策略均为线性策略,本质都是一致的。
AI策略LightGBM/XGBoost Ranking:预测股票相对收益排名,还有DNN \CNN\LSTM\Transformer
问题:债券 ETF 数据不全,如科创类债券 ETF
可否说下数据来源,我们便于对比和获取。
问题:邵老师 ETF 轮动宝策略中,嘉实原油 LOF 成交金额存疑(停牌一小时),调仓却是9:30
日频策略不会考虑盘中停牌,买单的话,只要不是一字涨停 、和全日停盘均可买入。
小资金实盘的话,买单可以用较高的价格下单。
问题:stockranker模型的原理是什么,针对其他模型的优势是什么,以及适用场景希望能讲解下,比较迷茫,不知道stockranker模型的潜力和进化方向在哪里。
类似于 xgboost、lightGBM来实现排序学习。优化方向:进行特征工程、参数寻优和滚动训练。
问题:bigtrader回测引擎的生命周期,handle_data是否在k线后执行。实盘交易是每日都会执行一次initialize,befor_trading,handle_data全流程吗? 如果是每日重新执行,trading_day_index和其他context上下文是否会存在dai中每日读写。
模拟交易第一天会运行,后续每日只会运行 befor_trading 和handle_data 两个事件函数。
如果需要持久化一些用户的变量,可以采用context.user_store 来存储。
context.user_store['counter'] += 1
问题:老师有没有批量生产因子的模版?可以自动遍历平台因子和算子组合的那种,这样挖掘因子就方便很多了,我听说现在AI可以做。
直接用Cowork 。 https://bigquant.com/cowork
之前有一个 可以参考下:
问题:我尝试把多个cta 策略,表现好的品种,组合到一个品种策略组合,但是表现不佳。 这种原因是什么?有哪些优化组合方向
下次回答 。