主页 > imtoken最新安卓下载 > 【量化交易日记0280】MLP动量因子择时策略

【量化交易日记0280】MLP动量因子择时策略

imtoken最新安卓下载 2023-05-13 06:42:11

一、研究结论:

该策略选取三类公因子来衡量动量,使用随机森林算法进行建模,根据历史分位数将模型的预测输出转化为持仓信号,并根据信号调整持仓。

外推法训练的模型对样本外的短期行情具有一定的预测能力,预测能力随着观察时间的增加而减弱,符合动量因子的性质。

预测未来12小时左右行情时,每12小时调整一次仓位,BTCUSD交易对,不使用杠杆,交易磨损0.05%,从2018-03-03到2019-12-01 ,该策略最终单位净值为2.11,年化夏普为1.57,平均资金利用率为30%。 同期,目标价从11,025美元上调至7,450美元,年化夏普为-0.1。

2.简介

老读者可能知道,我们研究CTA策略很久了,从仓位控制、多策略组合,到波动率预测,再到股债再平衡。 一直困扰的一个问题是仓位控制。 或许策略输出的信号不应该是简单的-1、0或1(即开空、平仓、开多)。 以布林带突破策略为例BTC合约量化软件,价格向上突破一倍标准差轨道与三倍标准差轨道向上有明显区别。 在这两个事件中,直观上肯定是后者的信号强度更大,而前者的信号强度略低。 我们很难说强突破信号对应的是高位还是低位。 但值得思考的是,它们之间可能存在差异,而差异是我们确定仓位大小的关键。

此外,除非另有说明,本研究中分析的最小时间单位为1小时。

三、核心理念

该策略的核心思想是将CTA策略所依赖的所有信号转化为因素,而不是简单地突破或反转技术指标。 通过分析训练数据中因子大小与对应的回报率之间的关系,得到一个模型,并将该模型用于测试数据上,验证其对测试数据的影响。

因为模型的输出是一个代表其预测未来收益率的数字,自然可以比较这个数字的大小。 因此,当模型预测值的绝对值较大时,我们可以更加信任它并分配更高的位置。 反之亦然。 位置的大小和方向由-1、0、1的数字信号转化为近似连续的模拟信号。

四、入选因素介绍

BTC合约量化软件_btc合约持仓排行榜_btc手机挖矿软件

该策略一共使用了三类动量因子,分别是MAD指标、BLG指标和UUP指标。 您可能无法在大多数软件的市场界面上找到它们,但是计算它们非常方便,您只需高开低收即可。 以下是三类因素的介绍和计算方法。

1.MAD(Moving Average Deviation),长期和短期平均偏差率。 该指标衡量长期移动平均线和短期移动平均线之间的相对距离。 当长期均线高于短期均线时,意味着市场刚刚经历了一轮下跌。 多空均线距离越远,近期市场波动越剧烈。 MAD需要两个参数,计算方法如下,其中P价为收盘价,长期均线周期l大于短期均线周期s

btc合约持仓排行榜_btc手机挖矿软件_BTC合约量化软件

简单的说就是短期均线减去长期均线再除以长期均线归一化。 乘以100是为了好看,没有什么特别的用途。

2. BLG(Bolling Gap),平均偏差率。 当市场处于震荡状态时,我们认为价格已经达到一定的稳定状态,价格服从正态分布。 一侧变化。 这就是非常经典的布林带通道策略的思路。 BLG需要一个参数,即计算标准差和均值的周期数,计算方式如下:

btc手机挖矿软件_btc合约持仓排行榜_BTC合约量化软件

看起来比较复杂,其实就是当前价格减去n期价格移动平均线,再除以这段时间价格的标准差。

3. UUP(Up Power),上升功率指数。 该指标涉及交易量,因此对数据要求比较高。 bitfinex虽然被黑的次数很多,但是业界公认它是一个交易量比较小的交易所,所以我们认为他们的交易量数据更值得信赖。 量价齐飞,水天一色。 大规模上涨无疑是最有力的行情启动信号。 同样,大范围下跌也是必须观察的做空信号。 因此,我们结合涨幅和交易量创建了一个UUP指数。 UUP 索引需要一个参数 n。 其计算方式如下:

btc合约持仓排行榜_BTC合约量化软件_btc手机挖矿软件

其中roc_i为小时涨跌幅,ReLU为线性整流函数,用于将小于零的涨跌幅转化为0,旨在取上涨K线。 函数的翻译就是UUP_n等于,取观察期n上涨的K线,涨幅乘以对应的成交量得到一个乘积,再除以所走过的距离的乘积观察期内价格与交易量 n 笔业务的总和。 有点乱,我觉得还是看公式来理解比较好。

依次取这三个指标缩写的第一、二、三字母构成MLP,故称为MLP动量因子择时策略。 与我的小马驹没什么关系。

btc手机挖矿软件_btc合约持仓排行榜_BTC合约量化软件

5. 因子生成

介绍了三个因子的计算方法之后,我们需要在训练模型之前计算因子。 但是,他们分别有2、1、1个参数可以选择,主观选择显然过于鲁莽。 为了谨慎起见,我们计算了合理参数对应的所有因素。

1. 对于MAD,我们设置长期参数l为3~96,步长为3,短期参数s为2~48,步长为2。结合l的约束>s,形成了大约 500 个因子。

2.对于BLG,我们将n从24设置为96,步长为1,总共约70个因素。

3. 对于UPP,我们也将n从24设置为96,步长为1,总共约70个因素。

6.模型搭建

首先,确定分类算法。 我们选择了随机森林算法。 选择射频算法的原因主要有以下三个:

首先,特征维度接近样本数量的数量级。 随机森林采用集成学习的思想,随机抽取特征训练单基分类器,从而避免了高维计算,可以很好地避免维数灾难带来的过拟合现象。 从特征维度和样本数来看,rf算法适合本例的情况。

其次,避免特征归一化。 支持向量机SVM虽然采用核函数的方法将n维高维空间的内积运算转化为m维低维输入空间的核函数,但也可以避免维数灾难。 但是SVM的训练涉及到空间距离的计算,要求每个特征没有显着的维度差异。 因为我们懒得做归一化,归一化可能会丢失特征信息,所以SVM也通过了。

第三,样本数量不足,无法使用深度学习算法。 10k以下,不能用深度学习。 强的结果是training_data: mse 0.01%, test_data: mse 1e+2。 追求享受极致过拟合体验的玩家可以尝试一下。

其次,确定模型训练的时长。 模型训练时间越长,考虑的历史数据越多,越不容易过拟合,泛化能力可能越强。 然而,当模式确实发生变化时,较长的模型训练时间会淡化较新数据的重要性,从而使模型显得迟缓。 我们选择了 1440 小时,即 60 天。 无论你选择什么。

btc手机挖矿软件_BTC合约量化软件_btc合约持仓排行榜

再次,确定模型的持续时间。 当模型已经使用两周后,它将使用最近的过去 1440 小时来训练新模型。 理论上一个模型只能使用一个小时,但我的电脑性能不够好,无法处理如此大规模的计算。 模型使用时间越短,近期信息的作用越强,适应模型变化的能力越强。 我们选择了336小时,也就是2周,没有他,这也是随机选择的。

其次,调整时间的确定。 许多经验和理论研究证明,动量的影响会随着时间的推移而扩散,时间越短,动量维持的可能性就越大。 但是,再平衡时间越短,换手率越高,此时手续费也不容忽视。 因此,我们选择12小时作为预测和再平衡的时间。 这不是随机选择的,它是通过我们的网格搜索找到的。 20小时以内,策略表现良好,但如果超过24小时,策略给出的信号与随机无异。

下面是随机森林的配置。 调用sklearn库中现成的方法。 我们设置树的数量为500,最小划分单元为50,每棵树的最大特征数配置方式为sqrt:

model = sklearn.ensemble.RandomForestRegressor(n_estimators=500,                                              n_jobs=-1,                                              max_features="sqrt",                                               min_samples_leaf=50)

其实模型的参数不是很重要,使用默认问题不大。

最后根据模型给出的预测值,在历史数据中找到预测值的分位数,确定位置。 通过比较模型在训练集的实际上升和下降中发出的预测的分位数,我们可以确定应该分配的位置及其方向。 有两种情况。

首先,该模型给出了看跌预测。 取训练集中所有增量小于零的标签,从小到大分为50个等级,每个区间对应loc 0,0.02,0.04...0.98。 如果预测对落入loc对应的区间,那么此时的位置为:

btc合约持仓排行榜_BTC合约量化软件_btc手机挖矿软件

如果loc等于0.9,则表示预测落在看跌力度相对较弱的区间内,自然空头仓位不宜过高。 真实仓位为-0.1,即10%的资金用于做空标的。

其次,该模型给出了看涨的预测。 然而,与第一种情况类似,在这种情况下,实际头寸计算如下:

btc合约持仓排行榜_BTC合约量化软件_btc手机挖矿软件

btc合约持仓排行榜_BTC合约量化软件_btc手机挖矿软件

如果您看涨时loc等于0.9,则表示该模型强烈看涨。 此时,账户中90%的资金都可以用来购买标的。

7. 策略回测

1.超参数:

一种。 模型训练时间:1440H

b. 模型使用时间:336H

C。 调整间隔和预测持续时间:12H

交易磨损为 0.05%

2、回测情况:

在不使用杠杆的情况下,该策略从2018年3月3日的第一笔交易到2019年12月3日的总回报率超过100%,而同期BTC下跌了30%。 该策略年化夏普1.57,最大回撤16%,最终净值2.11。

btc合约持仓排行榜_btc手机挖矿软件_BTC合约量化软件

该策略的资金利用率较低,平均资金利用率为30%BTC合约量化软件,多数情况下低于50%。 最大回撤16%,较低的资金利用率为我们利用杠杆提供了空间。 在3倍杠杆的情况下,最终净值为6.36,最大回撤40%。

btc手机挖矿软件_BTC合约量化软件_btc合约持仓排行榜

BTC合约量化软件_btc手机挖矿软件_btc合约持仓排行榜

通过分析未来12小时内仓位和标的的真实涨跌幅平均值,我们可以进一步确认该模型具有一定的未来预测能力。

btc合约持仓排行榜_BTC合约量化软件_btc手机挖矿软件

八、总结与展望

首先,指出优点。 策略最大回撤小,投资体验好。 仅使用量价数据,数据的可用性更好。 而且,策略可以得到强有力的解释,收入来源可以归结为动量效应。

但是,这种策略也有一个致命的缺陷。 由于每12小时调整一次仓位,因此手续费不容忽视。 大多数平台的现货手续费远超0.05%。 0.2%的手续费,这个策略是不会盈利的。 此外,如果交易现货,卖空时还需要考虑融券成本。 降低交易频率怎么样? 如上所述,动量效应随时间扩散。 高换手率带来的高额手续费和高换手率带来的精准预测是齐头并进的。 在预测准确性和交易磨损之间找到平衡点可能是解决这个问题的一种方法。

另一种方法是使用合约而不是现货来运行该策略。 大多数交易所的合约交易费用远低于现货。 本文中使用的 0.05% 是 OKEX 合约接受者的佣金。 合约与现货的微小价差带来了诸多不稳定因素。 即使时间尺度是12小时,我们也不能断言这个策略一定可以用合约替代现货。 如果你有合同数据,你可以仔细测试它。 如果哪位老板有合同历史数据,请与我们分享。 我们这里有2018年,还缺少2019年。

最后,风险提示:

本研究报告中的所有结果均基于模型和历史数据。 历史数据可能无法反复验证,模型也可能存在失效风险。

题图:

btc合约持仓排行榜_btc手机挖矿软件_BTC合约量化软件