描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302503224
析。不仅覆盖了*基础的数据获取、数据清理、因子提取、模型构造以及*后的动态投资组
合优化、C 编程实现等方面,而且有丰富的代码方便读者临摹学习和修改提升。本书中的
数据首先是交易所*原始的期货分笔数据,在此基础上整合成5分钟K线,然后再计算预测
因子,*后套入统计预测模型。在交易层面,采用严谨的滚动优化方式,充分考虑了滑点和
手续费,严格测试。另外本书还覆盖了中低频的趋势策略以及高频的短趋势策略,*后也详
细介绍了跨期套利策略,以及对读者择业就业的建议。
本书内容的广度和深度都是国内市场上少见的,适合相关专业人士和感兴趣的投资爱好
者阅读,如高校数理类和经管类师生及证券、期货、私募证券、公募基金等量化交易相关从
业人员,以及对机器学习在金融方面运用的相关人士和对量化交易感兴趣的各行各业人士。
1.1 股指日内策略 ··2
1.2 商品趋势策略 ··6
1.3 高频交易策略 ··12
1.4 本节介绍 ·17
1.5 未来展望 ·18
1.6 本章小结 ·21
第二章 数据处理
2.1 期货分笔数据 ··23
2.2 合成5分钟数据 29
2.3 异常处理 ·38
2.4 本章小结 ·41
第三章 预测因子
3.1 技术指标来源 ··43
3.2 因变量的选择 ··52
3.3 高频因子 ·60
3.4 本章小结 ·66
第四章 基础统计模型
4.1 线性回归 ·68
4.2 带约束的线性回归 75
4.3 模型选择 ·82
4.4 本章小结 ·86
第五章 复杂统计模型与机器学习
5.1 复杂统计模型 ··88
5.2 跨品种因子 ·94
5.3 高频数据建模 101
5.4 本章小结 ·111
第六章 从预测到交易
6.1 落实到交易才有意义 113
6.2 开平仓阈值 ·115
6.3 策略筛选 ·125
6.4 本章小结 ·129
第七章 策略模型深化
7.1 优化提速 ·131
中国期货市场量化交易(R与C 版)
VIII
7.2 策略更新 ·140
7.3 计算因子的技巧 143
7.4 本章小结 ·146
第八章 投资组合优化
8.1 马科维茨均值-方差模型 ·148
8.2 简单分配的情况 158
8.3 本章小结 ·166
第九章 投资组合优化深入研究
9.1 风险平价策略 169
9.2 动态投资组合优化 173
9.3 近似动态规划(增强学习) ·189
9.4 本章小结 ·192
第十章 C 实现策略
10.1 关于期货程序化接口·194
10.2 从R到C ·198
10.3 本章小结 ·224
第十一章 实盘交易管理
11.1 模拟交易 ·227
11.2 风险管理 ·232
11.3 资金曲线管理 240
11.4 人工主观干预 243
11.5 心态管理 ·246
11.6 本章小结 ·249
第十二章 套利交易
12.1 策略介绍 ·251
12.2 跨期套利深入研究 259
12.3 跨期套利策略 268
12.4 跨品种套利 ·277
12.5 本章小结 ·285
第十三章 求职与工作
13.1 对在校学生的建议 287
13.2 工作初期 ·290
13.3 投资经理 ·294
13.4 业内交流 ·298
13.5 本章小结 ·302
后记 ·304
农民聚集在一起,商量一个有中央结算性质的交易场所,最终成立了芝加哥期
货交易所。后来随着电子计算机技术的发展,期货交易所日益电子化,交易更
为便捷,交易大厅的交易员也逐渐演变成计算机前的量化交易员和程序员。
相比期货交易,量化交易是一个更新鲜的概念。传统的期货交易有很多技
术分析的书籍,如经典的《日本蜡烛图技术》《期货市场技术分析》等,一般
更着重于使用技术图表分析K线形态,从而给交易员提升买卖点位,辅助交易
员主观交易。
然而,量化交易不大一样,或者说是期货交易的升华。量化交易更多是运
用现代统计学模型,包括机器学习、深度学习等模型来预测市场的价格变化,
从而编写计算机程序,实现自动交易。更广泛地说,投资的整个过程,包括品
种的选择、价格变化的预测、投资组合权重的分配、最小化交易成本地下单等,
都可以使用相应的量化模型来分析,并且提供一套系统性、科学性的测试方法。
因此,量化交易跟传统意义上辅助交易员下单的技术分析还是很不一样的。
对于一些基本面信息,本质上也可以融入量化模型中,因此,量化分析和
基本面分析并不矛盾。并且现在市场上也有很多期货和股票方面的基本面量化
的书籍供读者参考翻阅。
目前,国内期货市场蓬勃发展,量化交易方兴未艾。然而,目前国内很多
私募量化基金交易的期货策略都是传统的程序化交易方法,与国外基于统计分
析、机器学习模型的方法相比存在较大差距。然而国内却没有有关方面的书籍,
即使有也是在股票投资方面,期货方面仍属空白。因考虑到广大理工科学生和
科研人员对金融量化交易有着极大的热情,且本人有国内外期货量化交易多年
中国期货市场量化交易(R与C 版)
II
的经验,于是写作了本书。
本 书 特 色
1. 国内率先系统性运用统计和机器学习模型研究中国期货市场的书
国外用机器学习模型研究股票与期货市场的书确实存在,但比较新,如
《Machine Trading: Deploying Computer Algorithms to Conquer the Markets》,
主要运用Matlab,分析的主要是美国股票市场日线数据。本书分析的是国内期
货市场,使用的是分笔数据和5分钟K线数据,频率上要比市场上同类书籍高
出不少。另外本书的模型都是本人实战多年的成果,有着良好的实盘交易记录,
并且还给出了研究用的R代码和实盘用的C 代码,方便读者学习。能做到
这点的,市面上无论中国还是美国,以本人的经验看,尚不存在。
2. 理论结合实际,由浅入深,娓娓道来
本书从最基本的分笔数据出发,如从如何获得数据、如何合成K线等,到
最后的C 实盘交易程序,应该说量化交易的内容都有所涵盖。从最基本的
基于买卖规则的策略,到最后基于深度学习、增强学习的策略都有所涉及,而
且有详细的R和C 代码,方便大家自主学习。本人也有着丰富的国内外量
化交易经验,不仅在美国对冲基金公司全职工作过,而且也在国内多家期货公
司和私募基金工作过。本书里面的代码经历过多年实盘交易的检验,另外也会
穿插介绍本人的职场经历,可以供各位参考。
3. 覆盖高频与中低频交易
绝大多数的量化交易书籍都不会涉及高频交易,本书却给出了研究高频交
易模型的框架,同时检验了多种经典的机器学习预测模型。一般来说,相对于
中低频交易,高频交易数据量更大,就可以训练更复杂的模型,因此本书也探
讨了很多非线性的模型。但对于中低频交易的训练,还是以传统线性模型为主。
本书内容及体系结构
第1章 期货基本策略概要。简单介绍了目前国内流行的股票对冲、商
品CTA、高频交易等策略,以及常见的程序化交易平台,对比了R、Python、
Matlab等常见的分析语言,并且对全书进行了概括性的介绍,结合本人的经历
发表了对国内量化交易市场的看法。
前 言
III
第2章 数据处理。详细介绍了国内商品期货分笔数据的数据结构、获取
的方式、处理的方法等,以及如何从分笔数据合成K线数据,如何提取主力合
约,如何编写更高效率的处理程序等。其中包括R与C 相结合的编程方式,
如何在R里面编译及调用C 程序,如何使用多核并行计算等,而且有详细
的R与C 代码,为以后的建模做准备。
第3章 预测因子。任何模型本质上都是因子的组合方式。机器学习模型
又被称为统计预测模型,因此里面用到的因子自然被称为预测因子,当然也有
人称为特征因子。本章介绍了构造因子的方法,给出了一些常用的因子,并且
还给出了测试因子的基本方法。这里的因子既有基于K线信息的因子,也有基
于分笔数据的高频因子,方便各种策略使用。
第4章 基础统计模型。本章在第3章的基础上,运用一些经典的统计模
型进行预测分析,并且使用了训练集、验证集和测试集的概念,严谨建模。本
章使用的模型以线性模型为主,因为对于绝大多数情况,采用线性模型已经足
够了。在模型测评方面,采用样本外的R2作为主要依据,这种方法跟样本内
的R2和调整后的平方都不一样。
第5章 复杂统计模型与机器学习。本章讨论了更为复杂的统计模型,一
般也被称为机器学习模型,包括决策树、随机森林、神经网络、深度学习等,
并且对比了不同模型之间的表现。由于金融数据的高噪声、高维度特征,因此
复杂的模型很多时候未必会比简单的模型更好。在中低频交易中,如果条件允
许,花更多精力收集信息或许更为有效。
第6章 从预测到交易。有了预测模型之后,还要落实到交易才有意义。
把预测结果转成交易信号有很多方法,本章会进行比较。当然还要结合品种的
买卖价差和手续费,以及交易的频率等。对于股票配置型的策略和期货择时型
的策略,会有不一样的处理方法。
第7章 策略模型深化。本章是对前面几章的总结和提炼,主要是在结果
一致的情况下探讨一些提高计算速度的方法,从而提高研究效率。很多时候,
量化研究过程需要很多次的搜索、迭代等运算,这会消耗大量时间。如果能提
高计算速度,那么就可以大大提高研究的效率。事实上,最近神经网络、深度
学习等方法重新流行起来,更多是依靠GPU等计算技术的发展。
第8章 投资组合优化。有了交易信号和资金曲线之后,下一步就是对各
中国期货市场量化交易(R与C 版)
个策略、各个品种的投资组合进行优化工作。事实上,这部分工作也可以用量
化模型来完成。与之前的统计预测、机器学习不同,这部分更多是传统的运筹
优化方面的模型,如均值-方差模型、Black-Litterman模型等。本章对比不同
的投资组合优化的方法,并给出测评的结果及相关的程序。
第9章 投资组合优化深入研究。本章主要介绍了风险评价策略和增强学
习(近似动态规划)等在投资组合里面的应用。其中近似动态规划属于动态投
资组合优化的内容。另外,本章也介绍了策略的滚动优化和动态调整,对比了
滚动优化和全局最优化的结果。事实上,如果处理得当,滚动优化可以取得比
全局最优更好的效果。
第10章 C 实现策略。本章主要介绍了如何把R语言转换成C ,从
而实现自动交易。本章还介绍了CTP接口的基本原理,以及转换策略的基本
步骤,包括处理行情数据、K线数据、计算指标、计算仓位、合并策略等。本
章主要是基于Linux的C 编程,系统默认是Ubuntu 16.04 LTS,读者掌握后
就能自主编写全自动交易程序了。
第11章 实盘交易管理。上一章介绍了用C 实现实盘交易的程序。事
实上交易过程中其实会遇到各种各样的问题,特别是自己用C 写程序,各
类错误都要自己调试改正。本章系统介绍实盘交易会遇到的各种问题,并给出
相应的解决方案。
第12章 套利交易。前面介绍的都是关于投机型趋势策略。因为没有做
空的限制,所以商品期货从本质上都可以交易。本章就专门讨论套利类的策略,
先从最基本的跨期套利开始,然后再简单介绍一些跨品种套利。
第13章 求职与工作。前面章节讲的都是量化交易研究与技术方面的问
题。现实中,我们技术人员还要去工作,无论是担任期货的资管还是从事私募
证券投资基金。因此,在学习了前面的知识之后,本章有关求职与工作相关的
话题,作者有些经验可以和读者们分享。
本书读者对象
.
数学、统计、信息与计算科学、计算机、金融工程等专业本科生、研
究生
.
高校数理类和经管类教师和科研人员
前 言
.
证券、期货、私募证券、公募基金等量化交易相关从业人员
.
对量化交易感兴趣的各行各业人士
.
对机器学习在金融方面运用的相关人士
.
人工智能方面想从事量化交易的相关人士
.
学习R语言或C 的相关人士
.
其他对中国期货市场量化交易感兴趣的人
感 谢
本书写作过程中,本人的妻子张妮洁女士正处于怀孕中,还要不断给
本人写作提供各种各样的帮助。在此,本人表示对妻子衷心的祝愿。希望我
的妻子能一切顺利,同时希望我们的宝宝能平安出生,成为新一代的“baby
quant”。对于本书的更新和未来进展,以及相关程序、数据资料的获取,本人
会在知乎“baby quant谈量化金融”专栏里发布,敬请各位读者留意。
2018年1月
baby quant
save(data,file=paste(object.dire,new.file,sep=””)) ## 保存新文件
}
}
这里面调用了函数get.data.5m.fast(),它就是利用了Rcpp 的函数来把分笔
数据整理成5 分钟数据,速度比较快,代码如下:
get.data.5m.fastdata 速读取文件
data trade.date colnames(data) open.int”,”open.int”,”turnover”,
“qty”,”open.symbol”,”close.symbol”,”type”,”dire”,”bid”,”ask”,”bid.
qty”,”ask.qty”) ## 列的名称
data$datetime,6,7),substr(data$date.time,9,10),sep=””)
## 提取日期
data$time total.bar pre.time night.1 “20:59” & data$time段数据
night.2 “23:00:01” & data$time第二段数据
night.3 “23:30:01”) ## 夜盘第三段数据
night.4 night.5 “01:00:01” & data$time第五段数据
day.time “08:59:00” & data$time天数据
chosen.line split.time cur.i if (length(night.1)>0) { ## 处理夜盘第一段数据
chosen.line[(cur.i 1):(cur.i 24)] night.1.split) night.1[1]-1chosen.line[cur.i 24] split.time[(cur.i 1):(cur.i 24)] }
if (length(night.2)>0) { ## 处理夜盘第二段数据
chosen.line[(cur.i 1):(cur.i 6)] night.2.split) night.2[1]-1chosen.line[cur.i 6] split.time[(cur.i 1):(cur.i 6)] }
if (length(night.3)>0) { ## 处理夜盘第三段数据
chosen.line[(cur.i 1):(cur.i 6)] night.3.split) night.3[1]-1chosen.line[cur.i 6] split.time[(cur.i 1):(cur.i 6)]
cur.i
}
if (length(night.4)>0) { ## 处理夜盘第四段数据
chosen.line[(cur.i 1):(cur.i 12)] night.4.split) night.4[1]-1
chosen.line[cur.i 12]
split.time[(cur.i 1):(cur.i 12)]
cur.i
}
if (length(night.5)>0) { ## 处理夜盘第五段数据
chosen.line[(cur.i 1):(cur.i 18)] night.5.split) night.5[1]-1
chosen.line[cur.i 18]
split.time[(cur.i 1):(cur.i 18)]
cur.i
}
if (length(day.time)>0) {## 处理白天数据
chosen.line[(cur.i 1):(cur.i 45)] day.split) day.time[1]-1
chosen.line[cur.i 45]
split.time[(cur.i 1):(cur.i 45)]
cur.i
}
chosen.line
chosen.line[chosen.line==0]
data.5m
data.5m$time
data.5m$trade.date
start
while (data$bid[start]==0 & data$ask[start]==0) start 过滤没意义的行情
for (i in 1:cur.i) { ## 逐段计算K线数值
range
data.5m$open.int[i]
data.5m$qty[i]
data.5m$open[i]
data.5m$high[i]
data.5m$low[i]
data.5m$close[i]
start
}
return(data.5m) ## 返回5分钟K线
}
这里计算了5分钟K线的高开低收以及成交量、持仓量等,至此,整个把
分笔数据合成5分钟K线的程序就完成了。如果该品种某段交易时间段不交易,
则会自动跳过该段时间段,进入到下一个时间段。哪怕该段时间只有一次交易,
也会生成该段所有的5分钟K线。
评论
还没有评论。