金融数据包含了方方面面,Wiley总结为,基本面数据、市场数据、分析数据、另类数据,我们先不讨论使用特殊方法(例如nlp)处理的表格类或文本类数据,专注于市场数据。市场数据包含了发生在交易所的所有交易活动的数据。市场数据 (Market Data) 包含交易所有类型产品时收集到的数据,包括现货价格 (spot price)、期货价格 (futures price)、利率 (interest rate)、汇率 (exchange rate)、波动率 (volatility)······
为了将机器学习算法应用到我们的未结构化数据上,我们需要对此数据进行解析,从中提取出有价值的信息,并格式化存储。大部分机器学习算法都需要对数据进行对象化特征化。这里一般我们叫做bar,我们在交易所看到的k线就是bar的一种,称之为等时bar,即按照固定的时间间隔来从交易tick中采样,比如每分钟,每小时。我们来看看其他方式的采样:
TimeBar:基于预定义的时间间隔,例如一分钟或一小时。每个条形代表该时间间隔内发生的交易活动。例如,一分钟时间柱将显示一分钟内的开盘价、收盘价、最高价和最低价。
TickBar:基于发生的交易数量。每个柱代表指定数量的交易。例如,100 个点的柱形图将显示该柱形图中发生的 100 笔交易的开盘价、收盘价、最高价和最低价。
VolumeBar :基于交易的股票总量。每个条形代表指定的股票交易量。例如,10,000 股的成交量条将显示总交易量达到 10,000 股之前发生的所有交易的开盘价、收盘价、最高价和最低价。
DollarBar :基于交易股票的总美元价值(即货币换算价值)。每个条形代表交易股票的指定美元价值。例如,10,000 美元的柱形将显示在交易股票的总美元价值达到 10,000 美元之前发生的所有交易的开盘价、收盘价、最高价和最低价。
据统计20%的时间包含了80%的价格变化,TimeBar 存在明显的问题。当市场成交活跃时,它需要等待到固定的时间才能采样,但这部分是真正有价值的数据,而市场上大部分时间都是无用的随机震荡,所以TimeBar存在欠采样。
这个问题可以用TickBar解决,当市场成交活跃时,TickBar会更频繁地采样,但是TickBar存在的噪音更多,并且存在高频欺骗,我们暂时不讨论高频交易,我们可以用DollarBar来替代Tickbar来规避一些问题。
但是DollarBar的采样阈值应该怎么确定呢,我们可以使用动态的窗口历史均值来确定我们想要的阈值。