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变成
【非线性模型(以预测价格点为例)】
三个步骤同线性模型一致。以下主要列出第二部的模型分类。
- 泰勒级数展开模型 (将非线性模型用线性模型来估测,再用线性模型来建模),前提是你知道非线性模型的形式是怎样的。
2. 临界自相关模型(threshold autoregressive - TAR):AR + jump threshold
3. 马可夫变换模型(Markov switching):加了概率分布的TAR
4. 非参数估计模型(nonparametric estimation)- Kernel function
5. 机器学习(神经网络等)