- 写在前面:
- 认为可以对指数直接进行交易或者近似交易(如 ETF)
- 默认使用 30 分钟 k 线数据:即最低调仓频率为每 30 分钟调仓一次,对此参数不做调整
- 回测框架采用的是数据驱动回测,非向量回测
一、核心指标:价格-成交量相关系数变化率
它由 两个部分组成:
- 输入:
- (价格对数收益),
- (成交量对数增长率)。
- 为滚动窗口,可以自行定义,如选择20或30周期(分钟)
- 经济学含义:
- 衡量的是同一窗口内“收益率”和“成交量增长率”是否同步变化:理论上来说,上涨要走得长久,一定需要成交量的支持;下跌要持续,也一定伴随放量抛压。如果价格走得很远,但成交量并不跟随,那说明方向可能是虚的。进一步来说量价正相关性则顺趋势,反之趋势可能要反转。
- ,涨伴放量、跌伴缩量(量价同向),属于健康趋势,常见于上行段
- ,涨伴缩量、跌伴放量(量价反向),可能是市场出现分歧、出货或恐慌杀跌
- 经济学含义:
- Dₚᵥ > 0:说明这一刻的价量相关比上一刻更强,而且本身相关就不弱——不管是上升趋势里的价量齐升,还是下跌趋势里价量齐跌,都可以理解为“动能在加速,行情更带劲”。
- Dₚᵥ < 0:说明相关在变弱,动能在掉头,典型就是“价格还在创新高/新低,但量价配合开始走样”,用交易员的话讲就是:上冲/下杀开始“虚”了,有见顶或见底的味道。
- 总结:基于对因子的初步理解,题中给出方案为理论可行方案,初步将策略思路定位:
- 顺势交易:用 ρ 定方向,用 Dₚᵥ 看是不是“越走越带劲”
- 反转 / 背离交易:用“价格创新高/低 + Dₚᵥ 反向”找顶底
多头顺势开仓:
当时,说明价量相关本身为正(价格上涨配合放量),且相关性相较上一期明显增强,量价关系在“越走越同步”。换句话说,上涨趋势不仅存在,而且动能在加速,可视为顺势做多信号。
空头顺势开仓:
当时,说明价格下跌配合放量,量价负相关本身已经很强,并且相关性继续朝负方向走,下跌动能在加强,可视为顺势做空信号。
顶部背离(多头减仓 / 反转参考):
在过去 根 K 线内,若价格创出新高:但此时则可以理解为:价格仍在上冲,但价量相关明显走弱——上涨不是被增量资金推出来的,而是“虚涨”。这是一个典型的 上涨动能衰减(顶部背离) 信号,适合作为多头仓位的减仓 / 止盈依据,激进一些时也可以作为反向试空的参考条件之一。
底部背离(空头止盈 / 反弹参考):
在过去 根 K 线内,若价格创出新低:但此时。则说明价格继续下探的同时,价量负相关在明显“收敛”,下跌动能开始耗尽,是一种 下跌动能减弱(底部背离) 信号,适合作为空头止盈、甚至左侧抄底的参考。
二、K 线图直观理解(题 1)
计算两个指数每根 K 线的价格-成交量相关系数变化率,以及背离信号。
- 目的:从 k 线图和相关数据图的角度可以得到一些策略构建的直观理解
- 关于代码(详见 py 文件):
- 由于单张图片能涵盖的信息有限,解决方案是增加时间参数,建议单次绘图不超过一个月数据;
- 最终绘制图片参考 Wind 分为上中下三部分,分别为 k 线、因子和成交量,便于直观观察。
- 有一点小问题:如果我想绘制 9 月 1 日至 9 月 30 日的 k 线,因子计算的时候滚动导致部分信息缺失,解决方案是人为设定了一些前移标准但并没有完整匹配,会出现绘制了 8 月 27 日至 9 月 30 日 k 线的情况。
结果分析(2024 年 8 月 1 日至 2025 年 9 月 30 日)
- 9 月样本窗口(2024-08-27 ~ 2024-09-30):在 9 月这张图中,前半段指数表现较为弱势,下行过程中成交量并未明显放大, 一度在 0 附近甚至略为偏负, 柱子也多为小幅正负交替,表明“价跌但量价配合度一般”,下跌动能虽在但并不极端。进入 9 月中旬后,价格开始出现较为连续的反弹,K 线形态从阴线主导逐步过渡到阳线占优, 随之从 0 附近抬升并稳定在较高的正值区间,同时 出现一串连续的正柱子,说明“价升 + 放量”的正相关关系在快速加强。若按照策略中“ > 正阈值且 > 正阈值做多”的顺势规则,在这一阶段会给出较为明确的做多信号,有助于在反弹中段跟上趋势;同时,当反弹后期价格仍在高位徘徊而 柱子开始缩短甚至转为小负时,也可视为上涨动能趋于钝化的信号,用于触发部分止盈或减仓。整体来看,9 月样本很好地展示了本因子在“由弱转强”的趋势反转阶段如何从“无信号 → 明确做多 → 动能见顶”的三段式演化,但也可以看到,真正的入场点比价格底部略有滞后,需要配合价格突破类指标来提前介入。
- 10 月样本窗口(2024-09-26 ~ 2024-10-31):10 月这张图是“急跌 + 震荡”的组合。月初阶段价格从前期高位快速回落,单根 K 线实体偏大、下影线有限,呈现出典型的“杀跌段”。在这一段中, 明显从偏正区域向下滑落并一度跌入负值区间,也出现连续的负柱子,说明“价跌配合放量”的负相关关系在迅速强化,按策略的空头条件( < 负阈值且 < 负阈值)会在急跌中段触发顺势做空信号,有利于捕捉下行行情。随后价格在较低水平进入横盘震荡,K 线阴阳交替频繁, 围绕 0 上下小幅摆动, 的柱子也开始在零轴附近正负互换,如果此时仍机械地按照“ρ、D 的符号”频繁翻多翻空,很容易在箱体内被反复打脸。因此,在 10 月样本上可以清楚看到:本因子在“趋势段”能够给出方向明确的空头信号,而一旦进入低位震荡区,就必须通过设置 | | 的绝对值阈值和 || 的显著性阈值(例如仅在 | |>0.25 且 || 处于历史较高分位时才允许开仓),将大量零轴附近的小波动过滤掉,把仓位切换为观望或只做减仓/止盈,从而降低震荡市中的交易噪声。


三、策略回测
策略详细描述
1️⃣指标定义与市场状态划分
- 基础指标
- 时间级别:30 分钟 K 线;
- 价格对数收益:;
- 成交量对数变化:;
- 在长度为 (N)(如 30 根)的滚动窗口内,计算价格–成交量相关系数:
- 相关系数的一阶差分:
- 背离/动能信号:
- 辅助价格指标:
- 价格均线():20 根收盘价简单移动平均;
- 波动指标():20 根的平均真实波幅,用于设置止盈止损。
- 市场状态划分
引入两个与 相关的阈值(可通过样本分位数或回测调参获得):
- 趋势阈值:(如 0.25);
- 退出阈值:(如 0.10,满足)。
据此将市场划分为三种状态:
- 无趋势/震荡区:
价格与成交量相关性较弱,量价关系噪声较大,本策略在该区间内不新开仓,仅允许管理已有仓位。
- 多头趋势区:
价格上涨与放量具有显著正相关,仅允许开多仓。
- 空头趋势区:
价格下跌与放量具有显著负相关,仅允许开空仓。
这样设计的动机是:先由 判断“这是不是一个足够明显的趋势环境”,只有在趋势显著时才启用基于 的择时信号,以降低震荡市中的交易噪声。
2️⃣开仓规则
(1)多头开仓
在时刻 (t),若同时满足:
- 趋势环境:
- 动能增强(量价相关性继续加强):
其中 为动能放大阈值,用于加仓。
- 价格突破确认:
其中 (L) 为局部高点窗口长度。
则在下一根 K 线以开盘价开立多头仓位。
解释:先确认“存在显著多头趋势”(为正且绝对值较大),再确认“量价配合正在继续加强”( 为显著正值),最后由价格的均线方向与局部突破给出一个具体、相对低噪声的入场点。
(2)空头开仓
空头开仓规则与多头对称:
- ;
- ;
- ,且跌破过去 (L) 根的最低收盘价。
满足上述条件时,在 (t+1) 开盘建立空头仓位。
3️⃣仓位管理:加仓与减仓
(1)加仓规则(顺势加一层)
为避免过度杠杆,策略仅允许在趋势持续强化时加一层仓位:
- 已有多头仓位时,若在持仓期间出现:
且价格再次创出新的局部高点,则在原有仓位基础上加仓约 50%。其中 略低于,用于识别“二次发力”。
- 空头仓位加仓规则对称(更负、更负,价格创出新低)。
(2)减仓规则(动能衰减)
- 多头持仓期间,若出现:
- 连续 k 根(如 )为负;或
- 绝对值显著缩小至接近 0 附近,
说明量价相关性虽仍为正,但“变强的过程”已经停止,甚至开始反向,趋势动能在减弱。此时减仓约 50%,或将止损价上移到更接近现价的位置。
4️⃣平仓规则
平仓部分由“硬止损 + 软止盈”共同构成。
(1)硬止损(基于 ATR 的风险控制)
记入场价为 ,入场时 ATR 为 ,给定止损系数 :
- 多头:若
则视为行情已经显著违背入场假设,立即平掉全部多头仓位。
- 空头:若
则全平空头。
(2)趋势瓦解/动能反转止盈
多头仓位的软止盈触发条件为以下任意一条:
- 趋势消失:,表示价格–成交量的相关性回到弱水平,市场由趋势阶段转为震荡;
- 动能明显削弱且价格转弱:
即量价相关性整体仍为正,但其变化方向已经持续转负,同时价格跌破均线。
满足上述条件时,认为既有多头趋势的“边际动能”已经显著衰减,按策略整体退出多头仓位,实现止盈落袋。空头仓位的软止盈条件完全对称( 且 持续转正、价格上穿均线)。
原始思路中,背离信号被直接用于方向判断:
在实际图形观察中可以发现:
- 相当一部分背离仅对应“趋势减速或横盘”,并不立刻触发反转(滞后);
- 在单边趋势较强的阶段,逆势利用背离信号反手建仓,容易多次被“扫掉”后趋势继续原方向(不明确)。
因此,本策略将背离信号的角色从“直接反转信号”调整为“持仓管理与风险控制工具”:
- 当已有多头仓位时,若同时出现:
- 价格创出阶段性新高;
- 自高位回落;
- 并持续一段时间,
则优先触发“减仓/收紧止损”,而不是立即反手做空。只有当 进一步跌破 0、价格也跌破均线等多个条件共振时,策略才允许以较小仓位尝试反向交易。
- 对于空头仓位,逻辑完全对称
这种处理方式在趋势样本中表现为“宁可慢半拍,但尽量活得久”:
结果分析
从整体效果来看,策略在两个指数上都能跑赢“买入持有”,但表现风格明显不同:在 000300 上更稳、更慢;在 000852 上更灵敏、更波动、更有弹性。造成这种差异的核心原因是两个指数本身的市场结构不同。
大盘指数(000300)的趋势通常走得更慢、更平滑,因此使用较长的相关系数窗口 N=40,可以更好地过滤噪声;量价相关系数在这个时间尺度下能够稳定地反映市场情绪,策略的交易频率因此较低,但胜率和净值走势都比较平稳。
小盘指数(000852)则完全不同。它的波动快、反转频繁,如果仍用 N=40,ρ_PV 会“跟不上”行情,导致信号滞后、开仓变慢甚至错过趋势。把窗口缩短到 N=20 后,策略对量价变化的反应明显变快,短趋势能够被及时捕捉,所以 000852 的净值曲线更陡、收益更高,但伴随的波动也更大,交易次数显著增加。
简单来说:
- 000300:慢市场 → 长窗口(40)更有效,稳健性更好。
- 000852:快市场 → 短窗口(20)更合适,趋势抓得更及时。
从图上可以看到,这一调整直接改善了 000852 的策略表现:无论是 2020–2025 全周期还是 2023–2025 子样本,净值都比指数更强势,尤其是在大幅下跌后的反弹段表现突出。而在 000300 上继续使用原参数能保持一贯稳定的节奏,体现出量价趋势方法在不同市场中的适应性。
- 000300 2020.07-08-2025.09.29:
===== 回测结果:ρ_PV + D_PV 顺势择时策略 =====
区间:2020-07-08 10:30:00 ~ 2025-09-29 15:00:00
总收益率:35.37%
最大回撤:-19.97%
年化收益率:6.18%
年化波动率:16.14%
夏普比率:0.38
交易笔数:122
胜率:43.44%
单笔平均收益:0.29%

- 000300 2023.07-08-2025.09.29:
===== 回测结果:ρ_PV + D_PV 顺势择时策略 =====
区间:2023-07-10 10:30:00 ~ 2025-09-29 15:00:00
总收益率:32.35%
最大回撤:-19.97%
年化收益率:13.89%
年化波动率:18.62%
夏普比率:0.75
交易笔数:52
胜率:48.08%
单笔平均收益:0.59%

- 000852 2020.07-05-2025.09.29:
===== 回测结果:ρ_PV + D_PV 顺势择时策略 =====
区间:2020-07-03 14:00:00 ~ 2025-09-29 15:00:00
总收益率:132.61%
最大回撤:-37.92%
年化收益率:18.17%
年化波动率:24.85%
夏普比率:0.73
交易笔数:276
胜率:42.39%
单笔平均收益:0.37%

- 000852 2023.07-05-2025.09.29:
===== 回测结果:ρ_PV + D_PV 顺势择时策略 =====
区间:2023-07-05 14:00:00 ~ 2025-09-29 15:00:00
总收益率:31.08%
最大回撤:-37.92%
年化收益率:13.32%
年化波动率:30.59%
夏普比率:0.44
交易笔数:118
胜率:36.44%
单笔平均收益:0.33%



