策略分享——低波动价值动量轮动策略
由sywgfuture01创建,最终由sywgfuture01 被浏览 20 用户
1.市场观察和机会发现
近年来,A 股市场呈现出显著的结构性分化特征。这种分化不仅体现在行业间的轮动差异,更体现在不同市值规模股票的表现背离上。
对于大盘蓝筹股:北向资金、保险资金等长期资金更倾向于配置流动性好、业绩稳定的大盘蓝筹股,导致中小市值股票群体资金关注度相对较低。在经济不确定性增加的背景下,投资者风险偏好下降,更倾向于选择具有防御属性的大盘蓝筹股。
对于中小市值股票:公募基金、外资等机构投资者对中小市值股票的配置比例处于历史低位,一旦市场风格切换,可能引发显著的估值修复行情。国家层面持续出台支持中小企业发展的政策,包括税收优惠、融资支持、技术创新补贴等,为中小市值企业的发展创造了良好的政策环境。
**动量效应存在:**尽管 A 股市场短期波动较大,但中期动量效应依然存在。研究表明,20 日动量因子能有效捕捉中长期的动量趋势机会。
以下是选择高市值,高股价的PE估值策略,累计收益率达到了-70%,年化收益率-24.6%,接下来我们对比一下其他条件一样的情况下低市值低价股的表现:
以下是上述条件一样的情况下中小市值低价股的表现,可以看出相比起大盘蓝筹股,在中小市值低价股中获得收益的可能性更高:
\
2.假设提出
假设 1:中小市值股票存在系统性低估
理论依据:
- 流动性溢价理论:中小市值股票因交易成本高,投资者要求更高预期回报。
- 信息不对称理论:中小企业研究覆盖不足,市场定价效率较低。
- 行为金融学解释:投资者存在 "规模偏好",倾向于过度关注大盘股。
策略应用
设定 5-20 亿流通市值筛选条件,聚焦细分行业龙头;通过 PE等多维度价值指标挖掘被忽视的优质标的;
假设2:中小市值股票中的 "价值动量共振效应"
理论依据:
- 市场定价偏差:中小市值股票研究覆盖不足,低估值标的的价值发现过程往往伴随显著的动量特征
- 行为金融学解释:投资者对中小市值股票的基本面变化反应滞后,形成 "价值发现→趋势强化" 的传导路径
- 风险收益特性:低估值中小市值股票的动量趋势更具持续性,同时具备估值修复与成长溢价双重收益来源
- 行业轮动特征:中小市值公司多处于行业生命周期早期,价值与动量的同步出现往往预示行业景气度拐点
策略应用:
构建"PE - 动量" 二维打分模型,对于PE 因子,0-20 倍区间内按百分位打分,越低分越高;对于动量因子,20 日价格动量按百分位打分,越高分越高。
3.策略编写逻辑
3.1策略思想
3.1.1稳定性指标
1.0/($stock_num * (0.5 + volatility_5)) AS weight
通过对五日内波动率较高的股票赋予更低的权重,天然分散风险
3.1.2趋势指标
df['momentum_20d'] = df.groupby('instrument')['close'].pct_change(20)
通过计算个股近 20 个交易日的累计收益率,衡量股价短期趋势强度。该指标反映了股价在中期内的延续性,数值越高,代表股价上行趋势越显著,常用于捕捉市场中的短期趋势性机会,与低估值指标结合可有效筛选出兼具趋势动能与安全边际的优质标的。
3.1.3动态估值指标
pe_ttm
通过当前股价除以过去 12 个月滚动净利润计算得出。该指标克服了静态 PE 的季节性偏差,能更及时反映企业最新盈利变化,尤其适用于业绩波动较大的中小市值公司估值分析。
3.1.4估值合理性指标
- 策略要求股票的市盈率(PE)在0到20倍之间 。
- 策略要求流通市值(float_market_cap)在5-20亿之间。
- 策略要求股价(close)在3-15元之间。
- 策略要求股票不是ST股票。
3.2回测配置
- 回测时间:从 20201年 1 月 1 日至 2025 年 6 月12 日。
- 初始资金:1,000,000 元
- 交易频率:每日
4.历史数据回测
对该策略从2020年初回测,市场为中国股票市场,起始资金100万元。4年多来,累计收益率达81.97%,年化收益12.59%,夏普率0.51,最大回撤21.14%。大部分时间跑赢沪深300指数,除2020上半年外每年正收益。
5.回测结果分析
回测数据亮眼,策略累计收益率 463.31%,年化收益率 50.02% ,基准收益率为 - 26.11%,超额收益显著。阿尔法 0.63,体现策略获取超额收益能力;夏普比率 1.37,说明单位风险获收益可观。胜率 58.33%、盈亏比 2.38 ,交易盈利性佳,不过收益波动率 30.83% ,需关注波动风险,最大回撤 26.3% ,长期表现值得肯定。但是上述策略的参数还没有经过参数的优化,接下来将参数进行优化可能可以得到更好的结果。
6.参数优化
6.1 参数优化的必要性
- 提高策略性能:通过调整参数,可以使策略更好地适应市场或问题的特点,从而提高策略的盈利能力、准确性、效率等关键性能指标。例如,在投资策略中,合适的参数设置可能使收益最大化,同时降低风险。
- 增强策略稳定性:优化参数有助于减少策略在不同市场条件或数据子集上的性能波动,使其更加稳定可靠。这意味着策略在面对各种实际情况时,能够更一致地发挥作用,避免因参数不合理而导致的过度拟合或欠拟合现象。
- 适应变化的环境:市场环境、业务需求和数据特征等都可能随时间变化。参数优化能够让策略及时适应这些变化,保持良好的性能。例如,在机器学习中,随着新数据的不断产生,对模型参数进行优化可以使其更好地拟合新数据,提高预测的准确性。
6.2 常用的参数优化方式
6.2.1 原始调优方式
对于大多数人来说,参数调优的方式是不断的在代码中一个一个改参数,比如将持股数量从3只调整到10只,再运行一次,看看效果如何,效果不好的话再换其它的。
这样子的调优方式非常主观,且很看运气。当涉及到多个参数调优时,再进行这种人工遍历调优的方式就更加低效。
6.2.2 科学调优方式
对于参数调优的方式,目前已有多种成熟的方法:
- 网格搜索:这是一种简单直观的方法,它在指定的参数空间中,通过穷举所有可能的参数组合来寻找最优解。例如,对于一个包含两个参数的模型,一个参数有 5 个可能取值,另一个参数有 3 个可能取值,那么网格搜索就会尝试这 5×3 = 15 种不同的参数组合,然后选择性能最佳的组合作为最优参数。这种方法的优点是简单易懂,能够保证找到全局最优解,但缺点是计算成本高,当参数空间较大时,计算量会呈指数级增长。
- 随机搜索:与网格搜索不同,随机搜索是在参数空间中随机选择参数组合进行评估。它通过设定一定的搜索次数,从参数空间中随机采样并测试不同的参数组合,然后根据性能指标选择最优的参数。随机搜索的优点是计算效率较高,能够在较短时间内探索较大的参数空间,但它不能保证找到全局最优解,结果可能会受到随机采样的影响。
- 遗传算法:遗传算法是一种模拟自然进化过程的优化算法。它将参数编码为染色体,通过选择、交叉和变异等操作来生成新的参数组合,并根据适应度函数评估每个参数组合的性能,逐步淘汰性能较差的个体,保留和进化性能较好的个体,最终得到最优参数。遗传算法能够处理复杂的非线性问题,具有较强的全局搜索能力,但需要设计合适的遗传操作和适应度函数,且计算成本也相对较高。
6.3 贝叶斯参数优化
6.3.1 原理
贝叶斯参数优化基于贝叶斯定理,该定理提供了一种在给定先验知识和观测数据的情况下,计算后验概率的方法。在参数优化问题中,我们将参数视为随机变量,并根据已有的数据和先验知识来更新对参数的概率分布的估计。
举例:
6.3.2 选择贝叶斯参数优化方法的原因
- 利用先验信息:贝叶斯优化结合了先验知识和观测数据来估计参数的后验分布。通过利用先验信息,可以在搜索过程中更有针对性地探索参数空间,避免盲目搜索,尤其对于具有一定先验知识的问题,能够更快地找到最优参数。例如,在某些领域中,根据以往的经验或研究,我们可能对参数的大致范围或分布有一定的了解,贝叶斯优化可以将这些信息纳入考虑,提高优化效率。
- 高效的全局搜索:贝叶斯优化使用高斯过程等模型来建模目标函数,能够根据已有的观测数据预测未知点的函数值和不确定性。它通过平衡探索(尝试新的参数区域)和利用(选择当前认为最优的参数区域)来进行搜索,能够在较少的迭代次数内找到接近全局最优的解。相比其他一些优化方法,如网格搜索的盲目性和随机搜索的不确定性,贝叶斯优化在全局搜索效率上具有明显优势。
- 处理复杂的目标函数:对于复杂的、非凸的、甚至不可微的目标函数,贝叶斯优化仍然能够有效地进行优化。它不需要对目标函数进行显式的求导或其他复杂的数学运算,而是通过对函数的观测和建模来寻找最优解。这使得贝叶斯优化适用于各种实际问题,尤其是那些难以用传统优化方法处理的问题。
- 自动调整搜索策略:贝叶斯优化根据观测到的数据不断更新对参数空间的认识,从而自动调整搜索策略。随着迭代的进行,它会逐渐聚焦于可能包含最优解的区域,减少对不太可能区域的搜索,提高搜索效率。这种自适应的搜索方式能够更好地适应不同的问题和参数空间特点,无需人工过多干预。
6.3.3 主要步骤
- 定义先验分布:根据问题的领域知识和经验,为参数设定一个先验分布。这个分布反映了在没有观测到数据之前,我们对参数取值的初始信念。
- 观测数据:进行实验或收集数据,通过对实际系统的运行或采样,获取与参数相关的观测值。
- 计算后验分布:利用贝叶斯定理,将先验分布和观测数据结合起来,计算参数的后验分布。后验分布代表了在考虑了观测数据之后,我们对参数取值的新信念。
- 选择最优参数:基于后验分布,采用某种策略选择最优的参数值。常见的策略包括最大后验概率估计(MAP),即选择后验分布中概率最大的参数值作为最优解;或者使用期望最大化(EM)算法等,找到使目标函数期望最大化的参数值。
- 迭代优化:不断重复上述步骤,随着新数据的不断加入,后验分布会不断更新,从而逐步逼近参数的真实最优值。
6.4 目标函数
设置目标函数,得到累积函数和最大回撤的综合得分
6.5 先验分布
6.6 最优参数
通过对holding_nums、stop_loss等7个参数的优化,实现score的最小,即达到在确保累积收益较大的基础上缩小最大回撤。在进行了30次的迭代后,得到最优参数为:
6.7 调优后的回测
将最优参数输入到策略后,按相同的时间进行回测,累积收益从原来的463.31%提高到1088.55%,年化收益从50.02%提高到78.75%,最大回撤较原来有所提升,但策略收益实现了大约57%的提升,夏普比率也提升了0.21。
7.参数敏感性分析
7.1 参数优化收敛图
\
8.交易成本与滑点
万3 千1 最低五元
def initialize(context: bigtrader.IContext):
context.set_commission(bigtrader.PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
9. 设置最优参数后的策略代码\n
https://bigquant.com/codesharev3/f188f9c0-3cdc-481c-8384-ffeb70b1ff08
==优化代码,不可在模拟交易运行==
- 运行之前请 在开发环境中点击左上角红色Q-终端-新建终端
在终端中【手动】输入: pip install scikit-optimize 然后Enter运行
https://bigquant.com/codesharev3/cf03ad9b-4908-44c3-9f5a-5ee5fdbc4b7f
\