一 、引言
在金融市场投资策略研究领域,小市值和红利低波策略近年来备受关注。在过往研究在这两种策略应用中存在一定缺陷,本文旨在深入剖析并优化,本次着重解决上一次研究中小市值年化收益不足和回撤波动较大的问题。
小市值与红利低波的互补研究:风险对冲与收益增强的双重路径
1.1 上文研究不足之处
上文在优化小市值和红利低波动策略回撤上不够具体,主要体现小市值最大回撤高达34.78%,可以引入熔断机制或者宏观因子作为优化方向;
上文在优化红利低波动的选股仅使用股票数据,没有计算相应的分红收入;
上文在组合的时候遇到困难,由于调仓时间不同,面临组合策略编写困难,优化组合数据仅仅简单本地下载组合,采用等权组合优化。
1.2 优化方向
本次研究聚焦于解决上一次研究中存在的关键问题,即小市值策略年化收益不足以及回撤波动较大的情况。
针对小市值策略年化收益未达预期的问题,将深入挖掘影响收益的潜在因素,通过引入新的因子模型、优化选股逻辑等方式,探寻提升收益的有效途径。
二 、研究框架
本研究选用通用的聚宽(JoinQuant)研究框架开展相关分析。在回测时间设定方面,较之上次研究,本次特意将回测数据的时间跨度延长了 5 年。这一举措旨在通过更长的时间周期,对投资策略的稳定性进行更为全面、可靠的验证。毕竟,金融市场复杂多变,短期数据可能无法充分反映出策略在不同市场环境下的真实表现。借助更长期的数据回测,能够更好地捕捉市场的各种变化和趋势,使策略稳定性的验证结果更具说服力,为投资策略的优化和决策提供更坚实的依据。
本文采用2015-4-22到2025-3-20的时间回测
本文采用历史回测的方式进行实证分析。回测参数设置的不同所得到的测试结果差异很大,客观设置回测参数关系到策略交易效果的真伪和对策略的最终取舍。本文的回测参数设置及全局设定参考如下。
(一)投资金额
假定投资金额为:10万。
(二)回测区间
未指定的情况下,默认回测区间为:2015年4月22日至2025年3月21日
(三)佣金及印花税
为了使回测结果更加接近真实的交易成本,在实证分析中,设置佣金及印花税的比例。
买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
(四)滑点
所谓滑点,是指下单价与实际成交价之间的差价。由于滑点对最终结果的影响较小,本文滑点设定为0。
(五)仓位
根据每次买入时所剩资金,按照买入股票数平均资金,全仓买入。
(六)可行股票池
如无特别指定的情况,本文的可行股票池默认为中证全指。实际情况中,当天停牌的股票是无法进行买卖操作的,所以在整体回测前,将当日停牌的股票剔除。另外,本文在跌停状态下策略不进行买入,涨停状态下策略不进行卖出。
(七)比较基准
对应可行股票池,选取中证全指的每日价格作为判断策略好坏和一系列风险值计算的基准。
(八)其他
1)回测使用市价单下单,并假设不存在买不到或卖不出的现象。
2)财报和市值数据使用的回测日的前一天数据,从而避免未来函数。
三、 研究思路:
本文以研究进程为脉络展开,力求完整呈现策略迭代过程,通过记录每一步的探索与改进,沉淀优质经验。
1 . 增加回测时间(5年延长至10年),代码逻辑不变。
此前回测仅基于 5 年数据,难以充分验证策略在长期金融市场中的有效性与稳定性。为更全面评估策略的长期表现,本次将回测周期拓展至 10 年(2015 年 4 月 —2025 年 3 月),通过长周期数据检验策略的可持续性。
从回测结果(见图 “小市值策略10 年”)可见:
从对比上次策略结果上来看,延长5年数据之后,策略的收益远不如之前的数据,这是因为在前面的五年出现了大幅度的亏损,导致后来的收益不如预期。
以上数据解读:
虽在前 5 年内,纯小市值策略大幅跑赢基准,但在前后 10年出现显著亏损,导致整体年化收益仅 7.65%;
同期基准中证 1000 指数年化收益 –34.07%,显示纯小市值策略在中长期仍具超额收益潜力;
然而,该策略与市场高度相关,贝塔值 0.750,最大回撤 52.36%,显示其在熊市环境下易遭受剧烈回撤(风险太高不适合投资);
信息比率 仅 0.738,超额收益稳定性不足,风险控制能力亟待加强。
2.优化第一步(基本面因子)
引入思路:
针对纯小市值筛选在极端行情下缺乏风险缓释能力的问题,本文在小市值因子的基础上,增加关键财务指标,以提高选股质量。具体思路如下:
市值范围:在既定小市值区间内进行筛选;
财务过滤:剔除财务表现不佳的个股,具体条件包括:
最近一期 ROE > 5%;
最近一期经营性现金流 / 营业利润 > 30%;
候选池规模:将候选池扩大至原有数量的 3 倍,保证足够的选股空间与流动性。
添加相关的财报因子:
相应代码:
#财务过滤
q = query(
valuation.code,
valuation.market_cap
).filter(
valuation.code.in_(filtered),
valuation.market_cap.between(g.min_market_cap, g.max_market_cap),
indicator.roe > 5, # ROE大于5%
indicator.ocf_to_operating_profit > 30 # 现金流质量
).order_by(
valuation.market_cap.asc()
).limit(g.stock_num * 3) # 扩大候选池
df = get_fundamentals(q)
return df.code.tolist()
回测效果图:
在 2015 年 4 月 22 日至 2025 年 3 月 20 这一 10 年回测期内,基于“小市值 + 财报因子”逻辑的优化版策略表现如下:
收益表现
累计总收益 627.83%,年化收益 22.86%;
超额收益 745.78%,Alpha 值提升至 0.240,表明基本面因子增强了策略主动获取收益的能力;
由于剔除了“垃圾股”,策略在多数阶段表现比纯小市值策略更为平稳。
风险指标
最大回撤 48.67%,较纯小市值策略(52.36%)略有下降,但仍处于较高水平;
策略波动率 0.321(基准 0.218),波动率明显偏高;
信息比率 0.974(纯小市值 0.738),有所提高,但在极端行情下风险控制效果仍不足;
贝塔值0.928(纯小市值 0.750)进一步升高,说明所选基本面因子在大盘系统性波动中依旧具有较高相关性。
小结
通过财报因子筛选,策略收益与Alpha均显著提升,表明“基本面安全垫”有助于选出优质小盘股。但在极端行情中,仍需更完善的风险控制规则。下一阶段将重点研究“动态熔断”机制,以进一步降低回撤。
下一步优化:熔断机制的构建与嵌入?还是宏观因子辅助?
Ps:
在选择宏观因子加入的时候,发现该因子跟小市值的价值不匹配(无法有效优化回撤),在宏观方面发现对于曲线的优化作用不大,具体原因参考小市值的本身价值的原因,考虑政策方面的因素,于是舍弃宏观因子研究,探究熔断机制。
3.优化第二步(增加熔断机制)
在“小市值 + 财报因子”框架内,最大回撤仍为 48.67%,说明单纯依赖基本面因子仍难以遏制极端市场风险。为此,本文在每日收盘后增加回撤监控机制,当组合净值回撤达到阈值时,自动触发“暂停交易”一周,从而限制持续亏损。具体思路如下:
峰值净值 (peak_value):跟踪组合历史最高净值;
回撤阈值 (drawdown_threshold):当回撤率≥ 20% 时,触发熔断;
暂停交易期 (stop_until_date):触发熔断后,暂停所有买入信号,为期 7 天。
相关代码:
#止损与暂停机制参数
g.peak_value = context.portfolio.portfolio_value # 最高组合净值
g.stop_until_date = None # 暂停交易截至日期
g.drawdown_threshold = 0.2 # 最大允许回撤百分比(20%)
# 每日收盘后检查回撤
run_daily(check_stop, time='close')
#回撤监控函数
def check_stop(context):
current_val = context.portfolio.portfolio_value
# 更新最高净值
if current_val > g.peak_value:
g.peak_value = current_val
# 检查是否触发回撤
drawdown = (g.peak_value - current_val) / g.peak_value
if drawdown >= g.drawdown_threshold and g.stop_until_date is None:
# 触发止损,暂停一周
g.stop_until_date = context.current_dt.date() + datetime.timedelta(days=7)
log.warn(f"组合回撤达到{drawdown:.2%},停止交易至{g.stop_until_date}")
熔断机制优化后的成效与深度数据解读:
在 2015 年 4 月 22 日至 2025 年 3 月 20 回测期内,加入熔断机制后,策略表现如下:
收益端:
累计总收益 703.28%,年化收益 24.13%,较“财报因子”阶段提升约 12%;
超额收益 833.46%(+117%),Alpha 值略降至 0.235(部分盈利机会因暂停交易而丢失)。
风险端:
最大回撤 43.60%,较前期 48.67% 下降 5.07 个百分点;
贝塔值 0.609(原 0.928),表明与市场整体相关性下降;
夏普比率 0.609(+20%),信息比率 0.816(+20%),风险调整后收益显著改善;
盈利胜率 57.5%(+7%),盈亏比 1.702(+6%),显示在回撤触发与“择时”能力上的优化;
策略波动率 0.331(+3%),主要源于回撤触发后的减仓与重新加仓所带来的交易摩擦成本增加。
小结:
日度熔断机制有效降低了极端亏损,提高了风险调整后的指标,但在极端流动性风险与黑天鹅事件面前,依然存在改进空间。下一阶段将进一步引入“月度禁止交易”规则,针对特定月份进行清仓与停仓,减少非系统性风险敞口。
Ps:
对比了pnl曲线变化:发现在大多数月份亏损效应明显。于是在思考,在这些月份增加相应的技术指标规避还是在暂停该月份的交易。
经过实验之后,大多数的指标因子不太理想,于是我在实验相关的因子这条尝试放弃,选择研究暂停机制(既然这个月几乎都在亏钱,不如不交易)。
4. 下一步:暂停机制的嵌入优化
在“财报因子 + 日度熔断”框架下,策略在某些月份内仍会出现连续亏损,提示在特定月份可主动减少交易频率。基于回测与经验数据,本文引入“禁止交易月份”逻辑,主要思路如下:
预设高风险月份 (如 1 月、4 月、7 月、10 月),在这些月份启动“月度清仓 + 禁止开仓”规则;
月初清仓:每当系统进入禁止交易月份,若尚有持仓,则强制卖出所有持仓;
锁定停仓期:在该月内不再开仓,直至下个月初解除禁止。
## 4.最后优化(增加暂停开仓机制)
增加暂停代码:
g.forbidden_months = [1,4,7,10] # 禁止交易月份[1,3](@ref)
# 月份过滤与清仓函数
def handle_forbidden_months(context):
current_month = context.current_dt.month
# 月份切换时强制清仓[1,3](@ref)
if current_month in g.forbidden_months:
if g.last_clean_month != current_month:
# 清空所有可交易持仓
for stock in list(context.portfolio.positions):
if not get_current_data()[stock].paused:
order_target_value(stock, 0)
log.info(f"[月度清仓] 卖出 {stock}")
g.last_clean_month = current_month
log.warn(f"进入禁买期 {current_month} 月,已清空持仓")
return True
return False
在 2015 年 4 月 22 日至 2025 年 3 月 20 这一回测区间,加入“禁止交易月份”机制后,策略整体表现显著优化(下列数据来源于最新回测截图)。
收益端指标:
累计总收益 1606.27%,年化收益 34.22%;
与基准(中证全指)相比,超额收益 1882.78%,Alpha 0.324;
贝塔值 0.391,表明策略与市场整体波动的关联性进一步降低;
日均超额收益 0.14%,超额收益最大回撤 24.12%,超额收益/最大回撤 1.174。
风险端指标:
最大回撤 28.15%,较前次(43.60%)下降 15.45 个百分点,极大降低了组合的尾部风险暴露;
策略波动率 0.254(基准 0.218),在实现更高绝对收益的同时,并未使波动率出现大幅攀升;
夏普比率 1.191,较前次(0.994)提升 19.78%;信息比率 1.569,显著优于之前 1.192 的表现,表明风险调整后的超额收益更加稳健。
交易绩效:
胜率 60.3%(盈利 301 次,亏损 198 次),较前次(59.2%)略有提升;
盈亏比 2.292,较上一步骤(1.945)进一步优化;
日胜率 51.7%,说明在每日开/平仓信号上依旧保持正向择时能力。
市场适应性检验
2018 年熊市阶段:策略在 1 月、4 月、7 月等“禁止交易月份”成功清仓并暂停开仓,规避了大盘持续下跌的风险,收益曲线在熊市期间保持小幅震荡向上;
2020 年疫情暴跌期:策略在 1 月初即触发月度清仓,避免了绝大多数下跌损失,后续市场反弹时迅速恢复持仓;
2022 年阶段性回撤期:策略最大回撤 28.15%,相比同期沪深 300 指数 48% 回撤幅度,胜过 19.85 个百分点,体现出较强的抗跌能力。
附录:各阶段关键回测数据对比表
小结:基于“基本面因子→日度熔断→月度暂停”三层风控机制的连续迭代,策略在 10 年回测期内兼顾了高绝对收益(1606.27%)与低最大回撤(28.15%),并且在关键风险调整后指标(夏普 1.191、信息比率 1.308)上表现优异,为实盘交易提供了坚实基础。
四、总结
四、总结与展望
本文通过“因子迭代—日度熔断—月度暂停”三层风控框架,将单一小市值选股策略演化为稳健的多层次防护策略。实证结果表明,在 10 年回测区间内,策略累计收益达 1606.27%,年化收益 34.22%,最大回撤仅 28.15%,各项风险调整后指标(夏普 1.191、信息比率 1.308)均优于基准,充分验证了基本面因子与动态风控机制的协同效应。
但须敬畏市场黑天鹅与尾部风险:回测数据中的最大回撤只能代表历史表现,实际市场可能因流动性骤降、政策突变或突发事件导致更大幅度回撤。
彩蛋:
本文充分展现理论和实践部分,对于实盘实践部分至研报产出,回测时间开始(即2025年3月21日至2025年8月21日结束)
等到结束时刻,模拟实盘会在实践专栏说明;并且开源该文章产出代码。