
更多精彩内容,欢迎关注公众号:数量技术宅 ,也可添加技术宅**个人微信号:sljsz01,**与我交流。
期货市场的价格发现
期货市场对现货市场具有重要的领先作用。期货市场的价格发现功能能够提前反映市场的供求关系和未来预期,为现货市场提供价格参考;期货市场的交易行为可以通过影响现货市场的供求关系,进而影响现货价格;期货市场的价格变化可以传递市场信息,引导现货市场参与者调整自己的生产、经营和投资决策。
数字永续合约与期货的关系
数字货币的永续合约与期货存在不少相同点:
交易机制:两者都允许投资者使用杠杆进行交易。通过缴纳一定比例的保证金,投资者可以控制远大于保证金金额的合约价值,从而放大潜在的收益或损失。都支持双向交易。投资者既可以看涨(做多),买入合约等待价格上涨后卖出获利;也可以看跌(做空),卖出合约等待价格下跌后买入平仓获利。
价格波动影响:价格波动的影响因素类似。都受到市场供求关系、宏观经济形势、行业发展动态、政策法规变化以及投资者情绪等多种因素的影响。例如,当市场对某种数字货币的需求突然增加时,其永续合约价格会上涨,同样,相关期货合约在类似的供需变化下价格也会波动。
风险控制措施:都有相似的风险控制手段。如设置止损和止盈机制,帮助投资者控制损失和锁定利润。当市场价格达到预设的止损价位时,系统会自动平仓以限制损失;当价格达到止盈价位时,则自动平仓实现盈利。此外,还都存在强制平仓的风险,当投资者的保证金不足时,可能会被强制平仓以避免进一步的损失。
市场参与者类型:参与者群体有一定相似性。都吸引了包括套期保值者、投机者和套利者等不同类型的参与者。套期保值者利用合约来对冲现货市场的风险;投机者则通过预测价格波动来获取利润;套利者通过发现不同市场或合约之间的价格差异进行套利操作。
永续合约是否存在领先作用
鉴于数字货币永续合约在交易机制、价格影响因素等特征层面,与传统期货存在诸多相似之处,由此衍生出一个值得深入探究的问题:传统期货所具备的价格发现功能,在永续合约中是否同样存在并发挥作用?为解答这一问题,我们精心构建了严谨的策略,并运用历史数据进行回溯测试,旨在通过实证分析对该问题予以验证。
数据准备
我们将首先从Binance的FTP服务器获取历史交易数据。在币种选择上,我们筛选出市场成交活跃度较高的三个交易对,分别为BTCUSDT、ETHUSDT和SOLUSDT,并下载其相关历史数据。下载完成后,进入数据清洗环节,我们会将原始的、以月度为单位存储的数据进行整合,统一合并至一个数据集中,从而完成数据的初步整理工作。此外,为了能够测试不同时间频率下的数据表现,我们准备了日线周期的数据集以满足后续的分析需求。
策略回测
本次回测策略主要依托Binance平台的永续合约与现货日线和30分钟线数据,基于基差率构建交易决策体系并开展回测分析,具体逻辑如下:
-
数据整合:将永续合约数据与现货数据进行合并,生成统一的DataFrame(命名为merged_df),以便后续集中分析处理。
-
阈值设定:确定两个关键阈值,分别为上阈值n1与下阈值n2,这两个阈值作为触发交易信号的重要依据。
-
基差率计算:计算基差率(jcrate),其计算公式为jcrate = 永续合约收盘价 / 现货收盘价 - 1 。基差率这一指标能够精准反映永续合约与现货价格之间的相对差异,为交易决策提供核心参考。
-
回测交易逻辑
开仓逻辑:当投资组合中的目标仓位为0时,若基差率大于上阈值(jcrate > n1),则对相应币种执行做多操作,即调整仓位为position = 1;若基差率小于负的上阈值(jcrate < -n1),则执行做空操作,将仓位调整为position = -1。
平仓逻辑:当仓位处于1(即做多状态)时,若基差率小于下阈值(jcrate < n2),则对该币种实施平仓操作,将仓位归零(position = 0);当仓位为 -1(即做空状态)时,若基差率大于负的下阈值(jcrate > -n2),同样对该币种进行平仓操作,使仓位恢复为0 。
资金记录:在每一次交易操作完成后,将账户的资金状态记录至capital_history列表中,以此记录整个回测过程中资金的动态变化情况。
回测绩效
我们先行选用最为常规的参数设置,将n1取值设定为0,n2取值设定为0。在此种参数设定下,对应的交易策略为:当基差率大于0时,执行平空单并开多单的操作;当基差率小于0时,则执行平多单并开空单的操作。基于上述设定开展测试,最终获得的回测结果如下:

从回测结果来看,回测曲线所呈现的走势与我们预期的情况截然相反(本次回测未将手续费等交易成本纳入考虑范围)。面对这一相悖的结果,我们不禁产生疑问:这种差异是否是由参数设定不合理所导致的呢?为了探寻答案,我们决定更换几组不同的参数,重新进行测试分析。再选取n1=0.001,n2=0:

以及n1=0.0002, n2=-0.0001:

通过对测试结果的细致观察可以发现,即便对参数进行了调整,使得该策略的交易频率产生了变化,但整体回测曲线的走向并未出现根本性的改变。这一测试结果清晰地表明,我们或许需要对信号的运用方式进行重新考量,采用与初始设定相反的操作策略。具体而言,当基差率处于较低水平时,执行做多操作;当基差率处于较高水平时,则执行做空操作。
为了验证这一反向操作策略的有效性,我们再次选取n1 = 0、n2 = 0这组参数进行测试。此次反向测试的结果与第一次测试所呈现的图形完全相反,并且与我们事先预期的情况高度吻合,充分验证了该反向操作策略在当前测试条件下的合理性与可行性。

多币种策略回测
在上述单币种的测试过程中,无论采用何种参数组合进行测试,其结果均与我们的理论预期背道而驰。按照理论,合约价格对现货价格的领先性本应具有正向指导意义,但在实际测试中,这一领先性却意外地成为了反向指标。此外,单纯基于数据进行的反向交易测试结果虽然较为不错,但未能与我们所期望的市场逻辑相契合,使得此次测试结果的可信度大打折扣。
鉴于此前单币种测试结果不尽如人意,我们决定进一步优化思路。在数据准备环节,我们下载了BTCUSDT、ETHUSDT和SOLUSDT这三个活跃币种的历史现货数据与合约数据。基于这些数据,我们不禁思考:能否利用这三个币种的基差率构建组合信号,进而尝试对这些币种的组合进行择时交易呢?为此,我们设计了如下多币种策略逻辑:
首先,按照上一个策略中所采用的计算方式,分别计算 BTCUSDT、ETHUSDT、SOLUSDT 这三个币种的永续合约相对于现货的溢价率。具体的交易策略如下:
-
当这三个币种的永续合约溢价率同时大于设定的阈值 n1 时,执行策略,以等权重的方式做多这三个币种。
-
一旦这三个币种的永续合约溢价率中,任意一个小于设定的阈值 n2 ,则立即将所有多头仓位全部平仓。
-
当这三个币种的永续合约溢价率同时小于设定的阈值 (-1)×n1 时,执行策略,以等权重的方式做空这三个币种。
-
若这三个币种的永续合约溢价率中,任意一个大于设定的阈值 (-1)×n2 ,则迅速将所有空头仓位全部平仓。
和前一个策略一样,我们还是先用最简单的阈值,n1=0 n2=0进行测试,得到如下结果

可以看到,借助 BTCUSDT、ETHUSDT、SOLUSDT 这三个币种永续合约溢价率所共同给出的信号,我们至少得到了与理论逻辑相符的价格变动方向。也就是说,合约溢价率对这三个币种的价格走势具备一定的领先指示作用。只不过这种领先作用在 2020 年至 2022 年期间表现得较为显著,而在近两年来,其指示效果却不尽如人意。
我们进一步对参数进行了调整,将 n1 设置为 0.0005,n2 设置为 -0.0004。考虑到当前采用的是 BTCUSDT、ETHUSDT、SOLUSDT 这三个币种的组合信号,为了防止信号出现的频率过低,参数取值不宜过大,此番所取参数数值较为适宜。

这组参数(n1=0.0005,n2=-0.0004)表现尚可,即便是在近两年信号表现不佳的行情下,也能够实现不亏损的良好效果。此外,我们还对其他一些参数组合进行了测试,测试结果所呈现出的规律与上述图形所反映的情况基本相似,为避免赘述,在此便不再对这些测试结果一一展开阐述。
此前在数据准备环节中曾提及,我们还准备了时间粒度为 30 分钟的数据。接下来,我们将把数据切换为 30 分钟周期,参数仍选取最基础的n1=0 n2=0,同时保持其他回测条件均不变,在此基础上开展测试工作。

这组参数(n1=0.0005,n2=-0.0004)表现尚可,即便是在近两年信号表现不佳的行情下,也能够实现不亏损的良好效果。此外,我们还对其他一些参数组合进行了测试,测试结果所呈现出的规律与上述图形所反映的情况基本相似,为避免赘述,在此便不再对这些测试结果一一展开阐述。
此前在数据准备环节中曾提及,我们还准备了时间粒度为 30 分钟的数据。接下来,我们将把数据切换为 30 分钟周期,参数仍选取最基础的n1=0 n2=0,同时保持其他回测条件均不变,在此基础上开展测试工作。