量化交易学习 - longlongwood/blog GitHub Wiki

量化交易学习

数据分析学了这么久,终于找到个用途了,希望能带来一点真的收益。

其实跟机器学习的过程很像,都是根据历史数据设计模型,然后用于真实数据,也有过拟合等问题,所以还是有风险的。

也有训练集和验证集。

验证的指标有多个:回撤率(从最高点到后面最低点的下降幅度),盈率,交易天数占比,年化收益等

VNPY第三代,量Q第四代?前者需要编程,后者图形化操作

商品期货开户条件比股指期货低,股指期货需要50万的门槛,而且是普通期货的交易历史

量化交易能否用于国内的股市?

量Q的公司叫金溢宝,貌似员工只有十几人。

独立交易员的优势:资金少,对市场冲击小,决策快,能抓住短期机会

走势相近的股票:东方航空和南方航空,南方航空的股价高于东方航空,如果发现相反就可以套利

《QUANT》宽客

机器学习是中小投资者的主要策略strategy来源

机器学习的四个流派:

连接主义:神经网络

符号主义:决策树——可解释性

频率:

贝叶斯学派:

神经网络对于金融数据并不是很必要,主要用于图像

机器学习三步走: 数据 模型和评价指标函数 优化方法:寻找函数的极值

统计与概率论不同,前者需要数据,后者是理论

统计学与机器学习的不同:前者数据比较少,后者比较多,机器学习可以看做是数据驱动的统计学

量化交易适合A股

基于价格的分类模型:输入:根据价格及衍生指标 输出:分类:大涨大跌买卖持有等

基于文本的分类模型:基于新闻,高质量社交网络,专业股票评论网站,自然语言处理,选股 输出:最可能涨的股票 ————信噪比太低,来源质量非常重要 可以用在风控领域(官方新闻)风险预警

强化学习:另外一种方式

条件:

好模型和有效的算法

好的硬件

高质量的数据:垃圾进,垃圾出

平台软件:keras tensorflow sklearn

CNN:用于空间数据 LSTM:时间数据,能用隐马尔可夫模型HMM的都可以用

强化学习:环境,代理,策略:Action,Reward最大

自然语言处理:词向量,WORD2VEC,DOC2VEC

基于时间的机器学习:每个时刻T-X,Y,T1-X1-Y2,T2-X2-Y3,当前时间的X对应下一时间的Y,不能有以后时间的X,只能有之前时间的参数 X是什么?特征工程,根据经验选择指标,MA5,...,放入很多 特征选择,从特征中选择一些组合

交易策略的评估: 评价准则 策略基本假设:模型复杂度多高? 夏普率 ...

回测: 细节很重要 筛选 优化 验证 错误回测: 乐观主义偏差:时间段有利 时间旅行:用了未来的数据,训练集,验证集,测试集 幸存者误差:只选了股灾后活下来的股票

事件驱动型量化交易

事件

事件队列

数据处理

策略

...

sklearn:除了深度学习和强化学习都有 线性回归模型

CAPM模型 Portfolio资产组合 个股的CAPM模型 t时刻个股的回报=t时刻整个市场的回报*该股票贝塔系数+该股t时刻的阿尔法值 CAPM假设长期来说阿尔法值为0(均值为0),市场有效 投资组合的CAPM

价格套利理论APT:贝塔值是个变量,每个版块的回报加权平均

技术分析vs基本面分析 历史数据: 价格,交易量 计算指标(属性X):如何选择 启发式选择:经验,机器学习

技术分析:多个指标的非线性组合(机器学习),短时(微观尺度,趋势),异类监测(与大盘不一致)

基本面分析:时间尺度长,越长越有效,与技术分析相反

最基本的指标: 动量线:mom[t]=price[t]/price[t-n]-1, SMA:简单移动平均,滤波器,真实价值? BOLL指标:决策边界是两个标准差,从标准差外进入移动平均区间时才触发

数值归一化:Normalization:Norm=(value-mean)/values.std()

y=f(MOM,SMA,BOLL):f=?

KNN:高维数据不适用,维数灾难

新闻情感也可以作为一个维度

书:element’s of statistical learning

书:笨办法学python:learn python the hard way

时间序列分析:简易模型,传统手法,配对交易:两只股票的相关度

建立数据库:建模,交易,能存能取

tushare

csv,nosql,sql

数据格式:交易所信息,数据来源,ticker/symbol,价格,企业行为(分红,扩股)、国家假日(剔除)

容易出错:企业行为,spikes:噪声(滤波器),缺失数据

EOD(END OF DAY)数据表(每日交易): Exchange: DataVendor:数据源 Symbol:股票缩写 DailyPrice:日线数据ohlc

www.quandl.com

时间序列分析: (传统统计分析,非机器学习方式) 不是随机游走的时间序列,单只股票可能是随机游走,但投资组合可以是稳定的随机过程 找出平稳的随机过程的时间序列 怎么算出来是否平稳?统计学 输入:一段时间序列,输出:是否 OU过程:价格波动跟均值与现价的差成正比,加上一个高斯噪声 ADF TEST: 测试是否可预测 pip install statsmodels ts.adfuller() Hust Exponent:计算H是否接近0.5(布朗运动) 投资组合:CADF TEST 散点图
《统计检测初步》书:P值,t统计

机器学习:另外一种方法 需要足够的数据,比统计学需要更大数量级的数据 Y=f(x)+e x:高维,例如500个特征值 特征定义,大量数据,合适模型->确定模型参数 逻辑回归,SVM,随机森林,LSTM,...

keras

特征:归一化,模型:正则化 标准化:预处理

线性-非线性:核方法

定义

用途

3种:监督,非监督,强化:下棋(马可夫决策过程,MDP) 监督学习:分类,回归 非监督学习:聚类,降维(流型,低维嵌入)

sklearn:PCA降到50维,TSNE降到2维 scikit-learn algorithm cheat-sheet

train_x.shape:检查数据的维数