首先要区分一下数据频率(收集到的市场数据中的频率)和交易频率(交易策略下单的频率),以下讨论中提到的频率是指数据频率。真实信号里有没有高频部分不是我们假设的,而是根据数据来的。
如果你的数据是日线 OHLC,数据本身就已经做过采样过滤掉所有高频的成分了,可以直接上时间序列分析。
如果你的数据是那种快照形式的 L1 或者 L2,要看数据是怎么生成的。如果是按照比如每秒一次的方法,那也相当于是做过采样了。如果是按照每笔交易来记录的,那么每条消息的时间分布应该是不均匀的(irregularly spaced),这个时候如果你要用时间序列的方法,就需要重新采样。根据 Nyquesit-Shannon 定理,可以求出完全保真的采样频率(既 Nyquesit 频率),采样时间间隔等于数据中两条相邻消息的时间差最小的那个值的一半。
但实际上因为交易数据中噪音很多,你也不一定关心真正的高频部分,按照上面这种做法就不一定划算了,因为采样之后你的数据量会变大很多,而且为了得到采样值还得做很多插值工作,插出来的值也不一定对(两条消息之间的价格就不太好插,Last Price,Mid Price,或者 TWAP 都各有各的道理,但显然都不是完全准确的)。对于这种情况,我觉得起主导作用的还是你的关注点和策略特点。如果策略的频率大概是每分钟交易一次,那按每5秒或者每10秒采样一次估计已经很够用了,再高的频率你也用不上(毫秒以内的波动你是不敏感的)。
这样说是因为,交易市场始终是自顶向下由现实世界驱动的。价格是由资产本身价值驱动,而不是反过来由高频交易者驱动价格,所以高频的波动一般而言相对中低频很小,忽略掉不会有什么影响。实际上我觉得只有一种情况需要考虑高频的污染,就是发生 Flash Crash 的时候。但这种情况实在太少见,而且一般不会反复出现。真的遇到的时候做单独处理就好了。
如果关心高频,那么处理的就是直连交易所收到的原始数据,可以完全重构 Order Book,数据量也远超其他形式。这个时候还是根据具体问题来分析。比如你关心交易数据,那么其他的委托修改,撤销之类的消息都可以忽略了,一下子就剪掉很多数据;如果关心的是 Order Book 动态变化过程,所有的消息就都应该考虑,这样当然计算量也会变得非常大。
接下来你可能考虑的就不仅仅是采样频率这种为时间序列技术的缺陷而妥协的方案了,可以考虑其他 irregular time spaced modeling 方法,比如 Autoregressive Conditional Duration 或者 Point Processes 之类,都可以直接在原始时间上建模。当然这个已经进入高频的领域了。
最后还是强调,解决这个问题的思路是从需求出发,而不是保真。高频的部分肯定是存在的,只不过看你拿不拿得到,需不需要用到而已。如果本来就是做中低频交易,采样随便做做就好,几秒钟甚至几分钟采一次应该都不会有太大问题。
— 完 —
本文作者:董可人
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
延伸阅读:
什么是高频交易系统?
远期交易和期货交易的区别在哪里?