元旦前开始,期粉儿推出“期权做市商系统”的系列文章,作为送给各位读者的新年礼物。这一系列文章均出自本平台签约作者,中粮祈德丰首席期权量化及架构师袁煜华先生之笔。袁老师学富五车不止,且乐于助人,江湖人称“期权相关问题的百科全书”——百全老师,昵称百泉。 本文是“期权做市商系统”系列的最后一篇,关注本公众号回复“期权做市”可以查看全部七篇文章:《期权做市商系统的选择》、《期权做市商系统的硬件架构》以及《期权做市商系统的软件描述》(1-5)。 期权做市商系统会涉及到海量的数据,以在美国交易的最活跃的一支ETF期权SPY为例,仅收集各交易所一天的最优买卖报价,数据量即可超过10G。注意这只是市场最优买卖价,而期权做市商系统会生成更多的数据,比如波动率、理论价格、希腊字母、报价记录、成交记录等等,更加别忘了期权做市商要覆盖少则百个多则千个标的资产,而每个标的资产又有少则百个多则千个的期权挂牌。很多人会有疑问期权做市商到底需要一个多么强大的数据库来存储和处理如此庞大的数据。其实答案很简单,期权做市商不使用任何数据库记录这些数据。 虽然不可否认数据库是任何自动交易系统必不可少的一个组成部分,但是对期权做市商来说,通常只有很少的数据会记录在数据库里。每天系统只在启动时从数据库载入一些必要的数据,例如合约代码,前一交易日的结算价、持仓等等,而在交易过程中一般不会再读写数据库,直到收盘以后再将一些必要的数据写进数据库,例如当天的结算价、持仓等等。不将交易过程中的数据写入数据库的主要原因是数据库的速度太慢了,首先在交易过程中无法追赶上系统中其它模块的脚步,其次即使我们有足够的耐心等待所有的数据都被写入数据库了,当我们需要查询数据的时候也将会面对长时间的等待,换句话说即使数据被写入数据库了它们的可用性也很低。对期权做市商来说,最快速有效的数据存储方式是二进制文件。一旦所有模块的数据都被写入二进制文件,它们天然就是最完整的日志记录。 当然,为了不影响整个系统的性能,我们需要一个单独的进程或线程来完成这项任务。最后需要提醒的是,二进制文件不易做到向后兼容,当数据结构发生改变,解读新的数据结构的程序通常无法正确解读按照旧的数据结构记录的二进制文件。(完)
|