高频交易建模

https://zhuanlan.zhihu.com/p/73883325

目标:让身边对交易不熟悉的朋友快速了解我的工作

结果:从2017年11月到2019年6月实盘累计收益122.6%, 夏普率6.8,最大回撤13.3%。

2019年六月到七月月收益10%,夏普4.6,最大回撤5.7%,利润表现如下图:

2019年六月到七月实盘利润图

我做的交易系统主要特征有高频(交易频率);量化(信号由数学模型处理);程序化(全自动运行);虚拟货币(交易标的);做市商(订单类型)。



本文假设你已经有一定的计量经济学,机器学习,统计学,数学基础。

 

假设我们得到了比特币每分钟的历史价格数据 ,我们可以构造每分钟的价格回报(价格差)- 设这个变量为 x。接下来开始分析 x (只是简单的分析这个时间序列自身的性质, 并没有引入任何策略,可以认为是在做策略前对市场的观察)。

【基本统计指标】:

  • 平均回报:衡量当我们每分钟买卖一次后的平均利润(忽略交易费等市场摩擦)。

 

  • 回报方差:衡量回报的波动率。

 

  • 自相关系数:衡量趋势(反转)关系是否统计显著,是否具有可持续性。如果统计显著,我们则可以使用此关系来进行交易。

【建模】

  • 线性模型(预测未来价格

第一步: 检验时间序列x是不是稳定的(stationary)- 可以用Dick Fuller test(DF)

时间序列如果不是稳定的,那么用线性模型得出的参数都是虚假的(spurious regression)。解决办法一般通过做差(differencing)- 这也是为什么最开始我们不直接分析价格数据而分析回报数据。因为价格序列一般来说是非稳定的(non-stationary),而回报是稳定的。

 

第二步:当用统计检验确定x是稳定序列后,开始建模。

可以用最简单的自相关估计模型(AR esimation)

 

或者移动平均估计模型(MA)

或者自相关移动平均模型(ARMA)[1]

 

第三步:估计完模型参数后可用实盘数据和构建的模型来预测未来价格

  • 线性模型(预测未来价格波动性

为什么需要预测波动性?主要是价格点预测不可能百分百准确。(如果可以预测出在未来每秒中的价格点,就不需要预测波动性了)还有一点是对于一个做市商来说,需要用未来价格波动这个数据来定价。

预测波动性的步骤和线性模型与价格点预测基本一致,只是时间序列x不再是价格点,而变成了历史方差:比如ARMA变成

【非线性模型(以预测价格点为例)】

三个步骤同线性模型一致。以下主要列出第二部的模型分类。

  1. 泰勒级数展开模型 (将非线性模型用线性模型来估测,再用线性模型来建模),前提是你知道非线性模型的形式是怎样的。

2. 临界自相关模型(threshold autoregressive - TAR):AR + jump threshold

3. 马可夫变换模型(Markov switching):加了概率分布的TAR

 

4. 非参数估计模型(nonparametric estimation)- Kernel function

5. 机器学习(神经网络等)

原文地址:https://www.cnblogs.com/dhcn/p/14874871.html