发布于: 雪球转发:0回复:0喜欢:0

固定收益量化交易自营部,是运用公司自有资金,进行债券相关金融产品的投资交易。我做的主要是国债期货的量化交易,实践的方法有两种,第一种是运用机器学习的方法,第二种是运用随机过程的方法。

第一种方法,运用机器学习的方法:

机器学习就是寻找变量x和y的关系。在这个方法中变量x是包含200多个维度的时间序列数据,时间是从15年开始到20年。这个数据主要包含有两种,第一种是技术因子,(可以从k线图中计算的到的因子,包括KDJ,RSI,布林带,近期波动率与收益率等),第二种是基本面因子(包含国开债收益率,各大股指指数,央行逆回购MLF,市场7日资金收益率,中美国债利差等)。有些因子会做一个一阶差分,作为一个新的因子。变量y有两个,为每日做多收益率和做空收益率。简单理解是做多收益率计算为 log(close) – log(open) ,做空收益率为 log(open) –log(close) 。x,y准备完毕,进行训练。设定参数N为影响日期,x矩阵前N行为第一个样本,y的第N+1个值为这个样本对应的y。这样就可以最终得到需要的数据集。

得到数据集之后进行训练,首先按照比例划分训练集,验证集与测试集,然后进行训练,模型采取的主要是CNN模型和LSTM模型。模型构建还是比较简单,由于考虑到每个因子可能有差分情况,CNN模型首先使用一维卷积,对每个因子进行卷积,然后进行二维卷积,调整维度,最后经过线性层得到输出,输出是一个值。Loss定为输出的值和真实值的MSE,进行完成模型的训练验证和测试。两个模型经过训练验证和测试训练好之后,在测试集上有相应数量的输出,我们会比较两个输出的大小,取大且正的那个值,进行对应方向的交易。结合真实的价格,计算出每日收益率,pnl,和夏普率等指标进行观察。(eval的时候以什么指标进行模型保存?答:验证集一共有40天数据,经过训练做多模型给出预测,预测值和真实值正负相同,则预测正确天数加一,最后以预测正确天数除以总天数,作为是否保存模型的指标。)

我的主要工作量:

1,时间序列计算KDJ,RSI,MACD,W&R,BOOL技术因子。(择日,择时)

2,计算央行逆回购(7日,30日好多类型)未来一段时间到期、过去一段时间到期,过去一段时间投放的量。(5日,20日,40日,60日…….180日)

3,计算y值,并不是简单的取出close和open,还会有止损机制,设定移动回撤大于历史365天的ATR的N(10%)分位数止损;当最近20个tick跌幅大于历史365天的ATR的M(5%)是止损;做空相反逻辑处理。

4,设计模型,并整理完成自动迭代。

心得:与传统模型不同之处,自己需要设计x和y,且x和y并不直观。市场上x的指标有很多种,y的指标除了做多做空收益率之外,考虑到市场的滞后效应,还会有一个五日做多收益率等,都需要去尝试。金融数据我们期望x和y有一定的线性关系,会对每个x因子做一下和y的线性模型,查看线性模型的F值,r方,秩相关系数等指标。我们期望设计出来的模型有一定的稳定性,所以我们还会计算x每个因子的平稳性(ADF检验和Hurst检验),我们期望整体输给模型的数据是平稳的,所以还要做一下x的协整,如果不协整,就做差分等操作,使之协整之后再进行模型训练。

第二种方法,运用随机过程的方法:

我们经过平稳性检验(ADF检验和Hurst检验)发现价格差这个时间序列满足均值回归假设,我们用OU过程来拟合均值回归这个假设。得到的参数现在价格和30日均值价格的差diff,alpha ,ETua 和VTua,其中alpha代表均值回归力度,ETua代表均值回归预期时间,VTua代表均值回归预期时间的可信程度。对于每一天的数值,当diff , alpha ,VTua/ETUa满足一定条件的时候,我们做多或者做空(进场),当这四个条件达到一定程度的时候平仓。根据持仓情况计算出每日收益率和累计收益率和sharp率。拟合效果还不错,当进场价差为0.6,出场为0.4,进场alpha为 0.25,出场alpha为0.05,进场ETua 为5,出场ETUa为10的时候,各个合约交易,刨除手续费之后sharp为0.52左右。

实习体验:量化交易,我们期望通过一些统计方法来发现数据中可能存在的某些规律,机器学习是强大的函数拟合器,可以用机器学习的方法来探索规律。但是存在以下问题:第一,机器学习模型的不可解释性,做投资交易模型,还是期望模型可解释程度比较高,单纯拟合得到的模型,如果在一定时间内失效了,我们可以根据模型的解释性去调整模型,而不是重新训练拟合。第二,金融数据跟随不同的金融周期,会发生规律迁移的现象,有时候模型拟合效果的不好,可能是规律迁移导致的。量化交易作为一种交易方法,发展路途仍然遥远漫长,