直观来看,近三天多空持仓比 lspr 均值与未来 72 小时 BTC 收益负相关,并且 lspr 大幅波动往往预示着大概率的上涨。

原文标题:《多空持仓比在数字资产量化交易中的应用初探 | Blofin》
撰文:Holt、SCM、Leo

为了让用户掌握更多的市场信息,多家交易所上线了合约大数据产品,包括多空持仓比、未平仓量、合约基差等与合约市场息息相关的数据。这些市场数据是无数信息交易者和噪音交易者通过真金白银的投入而绘制出的市场画像,数据中包含大量有价值的信息。对市场数据进行分析有助于投资者判断当前市场所处的位置,预测未来市场的走向,从而更好地控制风险,抓住机遇。

本文主要对 OKEx 合约大数据产品中的多空持仓比(Long Short Position Ratio,以下均将多空持仓比简称为 lspr)进行定量的分析。下面以比特币为例,回顾过去半年中 lspr 与市场走向的关系,并且通过建模等手段,抛砖引玉,尝试读懂 lspr 的预言。

多空持仓比介绍

多空持仓比的计算方式为,持有净多头的账户数量除以持有净空头的账户数量:

多空持仓比在数字资产量化交易中的应用初探 | Blofin

所谓净持仓,指的是:若交易者出于某种目的同时持有某数字资产的合约空头和多头合约时,将其所持多空合约一对一抵消后,剩余合约的数量和方向。

在合约市场中,交易者每开出一张多单,就会有对应的一张空单成交。也即,市场上的任何时候,多单和空单的数量都是一样的。净多头账户所持有的多头合约平均张数与净多头账户的积,即为总多头合约数。对于空头合约亦是如此。由以上两点,可以得到下式:

多空持仓比在数字资产量化交易中的应用初探 | Blofin

由(1)(2)式可得:

多空持仓比在数字资产量化交易中的应用初探 | Blofin

可以发现,lspr 可以转化为空头账户平均持仓量与多头账户平均持仓量之比。这意味着:lspr 越高,空方平均资金量越大;反之亦然。例如,若此时 lspr 为 3,就表示平均每个净空头用于做空的保证金为净多头用于做多的保证金的三倍。通常而言,我们认为信息交易者具有资金、消息上的优势,能够在市场中获得超额收益。在资金量较小的交易者贪婪地买入或者恐惧地卖出时,藏在阴影中的信息交易者便可能会在 lspr 因子上露出马脚。

因子衍生

因子衍生,学名「特征工程」,是在原始数据的基础上,进行一系列变换,使得算法能够更好地从数据中获取信息的过程。本文采取的数据为 OKEx 平台上 BTCUSD 交割合约的 lspr 值,以及 Bitfinex 平台的 BTC/USD 现货价格。时间跨度为 2019 年 8 月 1 日至 2020 年 6 月 9 日,其中,2019 年 8 月 1 日至 2020 年 2 月 1 日为训练集,分析和建模将只采用这一范围内的数据。2020 年 2 月 1 日至 2020 年 6 月 9 日的数据为验证集,意在验证规律是否稳定。

衍生因子介绍

为了充分提取 lspr 中蕴含的信息,同时兼顾可观测样本的限制,我们设计了长短两个时间维度,三个统计维度,总计六个因子:

多空持仓比在数字资产量化交易中的应用初探 | Blofin表 2.1 衍生因子

lspr 移动平均值

通过计算 lspr 的移动平均,可以一定程度上消除极端值的影响,从而获得更加稳定的 lspr 值。其中,f_ma_ld 为过去 72 小时的 lspr 平均值,f_ma_sd 为过去 24 小时的平均值。两者反映了近一段时间内 lspr 的绝对水平。下文将探索当 lspr 处于不同水平时,标的未来一段时间内涨跌表现是否存在不同。

lspr 变动率

lspr 变动率衡量了近期 lspr 变动情况。当 lspr 下降时,这一指标则为负值,反之亦然。其中,f_roc_ld 为当前 lspr 值较 72 小时前值的变动率,f_roc_sd 为当前 lspr 较 24 小时前值的变动率。当 lspr 值开始上升,可能意味着资金量较小的交易者开始做多,或者拥有资金和信息优势的交易方开始加仓押注未来即将下跌,那么 lspr 的变动率便可以直观地描述这一现象,为投资者提供变盘的信号。

lspr 波动率

相比上述两个因子,lspr 波动率的计算可能稍有复杂。主观上分析,若 lspr 波动率较低,那么意味着这一段时间内多空持仓陷入了焦灼的状态,双方相持难下;反之,若 lspr 波动率较高,则说明资金博弈层面上,资金量较小的交易者的资金在多空两边反复横跳,这种情形可以被描述为「躁动」。而「躁动」和「焦灼」分别对应了未来的哪一种行情,则需要定量地进行分析。下面,我们分别对过去 72 小时和 24 小时内的 lspr 计算其变异系数(Coefficient of Variation),作为其波动率的估计量。

衍生因子表现

出于经验考虑,预测标的选择为未来 72 小时,即未来三天的收益率。训练集时间段内,BTC 未来 72 小时的涨跌幅如下图所示,基本涵盖了震荡和趋势的行情。

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 2.1 BTC 未来 72h 收益率序列

一般而言,在对各个因子进行加工之后,首先需要对衍生因子的预测能力做一个快速、初步的评估。在本研究中,将不同因子从小到大排序,并且通过 CART 决策树算法确定切分阈值,将样本分为若干个区间。进而计算每个区间内因子的平均值,以及对应的收益率的平均值,从而直观的判断各个因子对收益率的影响。

CART 决策树算法,大多数情况下,是使用二叉树对数据进行分类或回归的算法。如图所示:

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 2.2 CART 决策树示意

图中对 A, B, C, …, L 这些人进行了分类。蓝色的节点被称为分裂点,橙色的节点被称为叶片。叶片的数量也就决定了这一棵决策树最终将样本分成了几类。在本文的算法中,考虑到样本数量不是很多,最大叶片数可以设置为 5,即最多将样本分为 5 份,单个叶片包含最小样本量为总体的 16%。

计算完所有因子以及收益率后,在每天零点取一个样本加入训练集,总计获得 174 个样本。

lspr 移动平均值

过去 24 小时 lspr 均值对未来 72 小时收益率有显著反向影响。f_ma_sd 观测值越大,未来 72 小时内越可能下跌,反之亦然。这与前文的假设一致,具有极强的逻辑解释性。如下图所示,将样本按照因子大小升序分为 5 份,进行分组统计。其中,第 0 组中,因子均值为 1 左右,对应的平均收益率略大于 0;而第 4 组中因子均值超过 1.5,对应的平均收益率小于-2%。且均分较低的组平均收益率显著大于得分较高的组。

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 2.3 f_ma_sd 分组结果

过去 72 小时 lspr 均值也在训练集中展现出类似的性质,在此不再赘述。

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 2.4 f_ma_ld 分组结果

lspr 变动率

在训练集中,通过观察 f_roc 的分组结果,可以发现:f_roc 大幅减少确实意味着未来 72 小时更可能上涨,而 f_roc 大幅上涨对于多头来说却不是什么好迹象。如果当前 lspr 较 3 天前大幅上升,那么多头处于不利地位。若当前 lspr 较 3 天前大幅下降,那做多的预期收益可能会更高。不过,当变动率接近零时,这个因子对未来收益率的预测能力则几乎很弱。详情请见下图:

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 2.5 f_roc_sd 分组结果

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 2.6 f_roc_ld 分组结果

lspr 波动率

现在,我们得以回答上一节中提出的问题。资金层面上多空双方的「焦灼」更可能预示着未来的下跌,而 lspr 的「躁动」,实则是新一轮行情的预兆

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 2.7 f_rv_sd 分组结果

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 2.8 f_rv_ld 分组结果

模型搭建

在上一章中,我们已经总结出来一些规律。但各个因子之间可能存在交互作用,也可能存在一些非线性关系。为了从 lspr 中提取更加有投资指导价值的信息,需要进一步建立量化模型。

算法增强

本文构造的因子在已知数据中均展现出与未来收益率的一定联系,且逻辑上能够进行合理解释,故可以将上述六个因子全部加入模型。

在实践中,单个算法的预测虽然对未来的行情走势存在一定指导意义,但比较模糊。根据机器学习的理论,我们使用了多个算法,进行增强(Boosting)训练,达到综合多种算法学习能力,获得更好预测结果的目的。在建模的思路上,可以先使用六个因子以及其对应的因变量,采用线性和非线性的模型进行样本内训练,得到多个弱分类器;再将弱分类器输出的拟合值作为因子,以线性模型进行集成,得到最终的模型,并在测试集中使用。之所以进行集成,是为了减少单个模型不可靠的可能,增强模型的稳定性和在未知数据上的泛化能力。

其中,线性模型分别为 OLS,RidgeCV。前者最为朴素,可以通过观察回归方程给出直观的理解和解释,但分析因子效果时可能会受到因子多重共线性的影响。后者引入了正则项减少多重共线性的影响,交叉验证虽然减少了引入后验知识的可能,但也增加了模型的复杂度。

由于某些因子与收益率的对应关系并非线性,所以我们也决定使用非线性模型决策树与随机森林算法。决策树算法可以抽象出容易理解的规则,适用于特征维度较高,样本量较少的数据集,我们给定单个叶片的最小样本量以环节过拟合。但其输出的预测集中于几个叶片上,所以可以明显看到它输出的预测「挤在一团」。随机森林算法则以 bagging 的方法随机挑选因子和样本训练大量独立的决策树,并且采用各个决策树投票的方式得到最终模型。它可以很好地提取训练样本的信息,但牺牲了解释性,一定程度上可以视为黑箱。

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 3.1 模型表现

上图为各个模型在训练集和测试集上的表现。其中,OLS、Ridge_CV、DecisionTree、RandomForest 分别为四个子模型。第一行展示了模型在训练集中的表现,每幅散点图中,横纵轴分别是子模型的预测值与 BTC 实际的未来三天涨跌幅。在每幅散点图的下方,列出了模型的拟合优度 R^2, 这一数值越高,说明模型预测能力越强,虽然这一数值普遍不大,但作为预测模型,已经极具实践意义。第二行为验证集,这一行展示了各个采用不同算法的模型在未知数据上的泛化能力。非常合理的是,预测效果较训练集中有所衰减,但超过 0.05 的 R^2 表示,各个子模型也都具有一定的预测作用。

第五列 ALL_OLS 中,展示了以所有子模型的预测值为因子,采用 OLS 算法搭建的集成模型的表现。虽然其 R^2 在测试集上表现并非最佳,但由于其避免了模型选择的偶然性,并以此降低了单个模型的失效对整体的影响,因此选择将其作为最终模型。

在第三行中,采用决策树对 ALL_OLS 模型在训练集中的输出值与实际值进行最优分组,得到其切分点。然后将 ALL_OLS 在验证集中做出的预测值以前一步中得到的切分点进行分组。柱形图(上)为验证集每组预测值的均值,柱形图(下)为其对应真实值的均值。据此,可以直观地看出,模型确实具备一定的预测能力。不过,由于算法的复杂性和数据量的限制,模型背后的经济逻辑尚待未来进一步探究。

预测结果离散化

出于对模型稳定性的追求,下面采取两步方法。第一步上一节提到过的采用集成模型的方法,这减少了单个模型失效对整体的影响以及模型选择上的偶然性和主观性。第二步则为将预测结果离散化。离散化可以减少过拟合的概率,提升模型泛化能力,从而更加自信地在未知数据上使用模型。

预测结果离散化的大致流程如下:

首先,在训练集中得到了 ALL_OLS 模型输出的对于真实涨跌幅得到拟合值,将拟合值通决策树进行切分得到最优分组,此时便得到了一张映射表:

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 3.2 离散化映射表

当将验证集数据输入训练好的 ALL_OLS 模型后,它会输出一个预测值,然后便可以通过映射表将其转化为离散值。若这个预测值为 0.01,那么便将其根据上述映射表转换为 2,若预测值为 0.05,那么转换后的值则为 4。本研究中采取了左开右闭的处理方式,但改变这一设置不会对策略产生决定性的影响。

模型应用

模型基于 BTC 合约多空持仓比数据,因此,这一策略主要的操作标的也是 BTC。根据模型预测结果的分组,我们构造了如下的策略。

模型会预测未来 72 小时的 BTC 走势,但它每天都会产生一个预测结果,即一个 0 到 4 的打分。持仓的范围为 [-1,1],即满仓做空至满仓做多。取过去三日的打分结果均值,作为今日的持仓指标,用于指导持仓。

举例而言,若过去三日的打分结果分别为 2,3,3,则三日的平均分为 2.67 分,将 2.67 在 [0, 4] 区间的位置映射到 [-1, 1] 区间,得到今日持仓比例应为 0.335,即使用 33.5% 的资金做多。

策略构造

基于这一思想,可以构造三个策略:

五层策略:即使用-1,-0.5,0,0.5,1 的仓位比例对应 0,1,2,3,4 的打分,这一构造方式相对中性,不包含对市场的先验主观判断,并且仓位相对连续,调仓成本较小;

五层纯多头策略:即使用 0.2,0.4,0.6,0.8,1 的仓位比例对应 0,1,2,3,4 的打分,这一构造方式包含了先验的主观判断,认为比特币应该长期持有,因此比较适合「囤币党」(意即长期持有数字资产的投资人)用于短期对冲风险;

两层策略:即使用-1,0,0,0,1 的仓位比例对应 0,1,2,3,4 的打分,观察第三章的分组结果,可以发现预测的分组在极端组内(第一组与第五组)的预测效果比较稳健,在中间组(第二、三、四组)内预测效果相对模糊。因此,可以考虑仅在行情落入第一组时全仓做空,落入第五组时全仓做多。

策略回测

三个策略在测试期(2020 年 2 月 1 日至 2020 年 6 月 9 日)内的表现如图所示:

多空持仓比在数字资产量化交易中的应用初探 | Blofin图 4.1 策略回测资金曲线

计算常用的策略评价指标,可得:

多空持仓比在数字资产量化交易中的应用初探 | Blofin表 4.1 策略评价指标

各个策略都取得了相对净持有 BTC 的超额收益。两层策略的夏普比率最高,在无风险收益率为 3% 的情况下,夏普达到了 2.22。但是观察其净值曲线,可以发现在绝大多数时间里,由于策略的开仓条件过于苛刻,策略是空仓的。开仓次数过少意味着回测结果对策略的评价很有可能不够稳健,在更长的时间里,有可能会与本次回测的观测结果产生冲突,因此,我们不认为这是一个好的策略。

五层策略与五层纯多头策略相比,允许做空的策略明显取得了更好的效果。这是因为在回测期内,BTC 基本走出了 0 的收益。不过,作为「囤币党」,或者 BTC 的忠实信众,这一策略也能够为他们对冲掉一些 BTC 的短期下跌风险。

三个策略中表现最好的是五层多空策略。在三个月左右的回测期内,取得了接近 30% 的收益,夏普比率也达到了 2.17,最大回撤仅 10%,最大的持仓比例为 100%,即不带任何杠杆,因而不存在理论爆仓风险。这个策略同时也符合我们在投资活动中的一些想法:不要相信故事,而要相信市场的波动。

总结

综上,OKEx 交易所的合约大数据中,lspr 这一指标能够对未来 BTC 行情起到比较好的指导作用。直观来看,近三天的 lspr 均值与未来 72 小时 BTC 收益负相关,并且 lspr 的大幅波动往往预示着大概率的上涨

使用 lspr 数据,我们构造了一个简单的策略。策略在 2020 年 2 月至 6 月这一段时间中,相对 BTC,取得了 27% 的超额收益,夏普比率 2.17,表现优异。

受限于 lspr 数据量,本文构造的策略测试时间较短,在未来更长期限的投资中,有可能存在表现不稳定的情况。但无论如何,lspr 数据的确能够从一个特殊角度提炼市场信息。进一步的研究可以将多频率,多品种的 lspr 数据与其他的有效因子相结合,以求对未来市场中数字资产的长期和短期走势进行更准确的估计。