
出版社: 清华大学
原售价: 89.00
折扣价: 58.00
折扣购买: 中国期货市场量化交易(R与C++版)
ISBN: 9787302503224
李尉,目前担任广州某量化私募投资基金高级投资经理,负责管理多个私募证券投资基金产品。日常工作主要是运用现代统计学及机器学习模型,研究期货及股票市场,编写全自动交易程序。在任职国丰源之前,李尉曾担任深圳前海泓倍资产管理有限公司CTA量化交易员(投资经理)、广州康腾投资管理有限公司高级策略师、广发期货有限公司高频交易小组组长兼量化研究员、美国CMT Asia Inc量化分析师等职位。李尉于2011年获得美国斯坦福大学计算与数学工程硕士学位,于2009年获得中山大学数学与应用数学学士学位。
2.2 合成5分钟数据 有些人问为什么需要合成5分钟数据?其实这更多是从研究效率来考虑。 5分钟K线有以下几个好处。 (1)过滤了分笔数据的很多噪音。分笔数据的量非常大,但行情起起伏伏, 很多是噪声交易者所为,并不能预示未来的趋势。因此,如果能把这些信息整 合起来,可以起到减少噪声的作用,而且太微观的变化对持仓长线的策略并没 有太大意义,性价比不高; (2)提高计算速度。500毫秒的分笔数据5分钟可以有5×60×2=600个数 据,如果使用5分钟K线,数据量只有原来的1/600,可以大大减少计算量; (3)频率也不会太低。如果用频率更低的15分钟线,则可能会因为频率 太低而失去很多交易的机会。国内商品市场上午10:15—10:30有个空档,而且 上午是到11:30,下午1:30开始,因此划分K线最好是15的约数,10分钟其 实也不大好,比如15分钟的空档很难处理;如果是半小时、一小时,则会出 现跨越很多空档时间段,因此5分钟是比较好的选择。其实15分钟的因子都 可以用5分钟合成。但1分钟或许太过密集,很多商品不活跃,1分钟也不会 有太多成交。 合成5分钟K线数据主要包括开始价、最高价、最低价、结束价、成交量、 成交额、持仓量等信息,这些都是500毫秒数据包含的,只需简单处理一下。 中国期货市场量化交易(R与C++版)30 但需要注意的地方包括: (1)并不一定在整5 分钟结束的时候有行情。比如这段rb1709 的行情: date.time price cum.open.int open.int bid ask bid.qty ask.qty341 2017-07-26 21:04:57.500 3664 12724 0 3662 3664 1 10 342 2017-07-26 21:04:58.500 3664 12724 0 3662 3664 1 8 343 2017-07-26 21:05:00.500 3664 12724 0 3662 3664 1 8 344 2017-07-26 21:05:01.000 3664 12724 0 3662 3665 2 1 345 2017-07-26 21:05:01.500 3664 12724 0 3663 3665 2 9 346 2017-07-26 21:05:02.000 3664 12724 0 3664 3665 1 9 347 2017-07-26 21:05:02.500 3664 12722 -2 3662 3664 3 2 348 2017-07-26 21:05:03.000 3664 12722 0 3662 3665 4 9 349 2017-07-26 21:05:03.500 3664 12722 0 3664 3665 2 9 350 2017-07-26 21:05:06.000 3664 12722 0 3664 3665 2 9 在加粗部分,直接从21:04:58.500 跳到了21:05:00.500,而应该存在的 21:05:00.000 却不存在。因此,在进行K 线分割时,并不能机械地查找整5 分 钟的时间点,而应该顺着行情一个一个检查。 (2)每个合约开始结束时间并不一样。比如黄金、白银是凌晨2:30 结束, 而很多品种没有夜盘,有的品种夜盘的时间在历史上修改过,因此,程序要能 灵活识别这些情况。比如把数据分段,如果该段不存在行情,则应该知道该品 种在那个时段是没有交易的。在这里,把夜盘分成5 段,因为白天都是一样的, 所以只有一段,因此,程序可以这么写: night.1 <- which(data$time>"20:59" & data$time<"23:00:01") ## 夜盘第一段 时间 night.2 <- which(data$time>"23:00:01" & data$time<"23:30:01") ## 夜盘第 二段时间 night.3 <- which(data$time>"23:30:01") ## 夜盘第三段时间 night.4 <- which(data$time<"01:00:01") ## 夜盘第四段时间 night.5 <- which(data$time>"01:00:01" & data$time<"02:30:01") ## 夜盘第5 段时间 day.time <- which(data$time>"08:59:00" & data$time<"15:00:01") ## 白天时 段 注意到,比如是23:00:00.500 这个时间,它会属于night.2,某些品种夜盘 会在这个时刻结束,因此,如果用“<23:00:01”的条件可以把它包含进来。每 天结束时有时会有15:00:00.500的时刻,因此用“<15:00:01”可以把它包含进来。 (3)程序运行速度。无论R语言、Matlab,还是Python,其实都是解释 性语言,运行速度较慢,如果处理一些难以向量化的运算则会力不从心,此时 可以考虑用C++来写。 充分利用GPU、多核并行、Rcpp等计算手段,利用统计学和人工智能等技术,提高程序的计算速度,从而提高效率。从而给出最优化的投资组合和推荐。