《Advances in Financial Machine Learning》读书笔记 (二)

第一部分 数据分析 第二章 金融数据结构
2.1. 要处理的问题:学习如何将非结构化的金融数据处理成结构化可供机器学习算法处理的数据。别人处理好的数据中效果通常不理想,因为其中包含的已经是公知信息或即将被大家认知的信息,理想的方法是从原始数据中挖掘有意义的特征。
旁注:这段论述让笔者想到对于多因子模型的两种不同的看法:一种观点认为我们不需要更多的数据和因子,人性不变,多因子模型的应用人员最重要的工作是在不同的市场环境中找出起主要作用的经典因子;另一种观点认为经典因子随着被投资界广为获知和使用,由alpha因子退化为beta因子,因此挖掘新的因子非常必要,这一观点与本文中的观点相似,目前我见过用得比较好的另类数据包括:消息面数据(如基于Twitter和Triumph讲话市场情绪数据),以及卫星图片数据(如利用卫星图片监控作物种植量或油田产量以指导期货交易)。
2.2 金融数据类型:
最常用的金融数据有四类:基本面数据、市场数据、分析数据、另类数据:


image.png

2.2.1 基本面数据:
基本面数据包括:资产、负债、销售、成本/收入以及一些宏观数据;基本面数据的一个重要组成部分是财务数据。基本面数据应用中两个问题包括:
1)在实验中,误把数据的报表日期当成发布日期;
注:例如,认为公司的一季报在3/31日已经公布,并在做多因子模型时如此应用,这个问题如何处理,国内券商的一些多因子报告中写的非常清楚且大同小异:
 上年的10月底,11月底,12月底,今年的1月底,2月底,3月底使用上一年的三季报;
 今年的4月底,5月底,6月底,7月底,使用上一年度的年末报表数据‘
 今年的8月底,9月底使用同年的半的报表数据;
2)数据回填问题,上市公司经常会在后续报告中修正自己的报表数据,在回测中,如果用修正过的数据,则造成回测不准;
注:这个对于不大的对冲基金,最好的选择是依赖数据提供商提供高质量的数据源,有时候这个事情很难完美,因此,很多用机器学习做基本面数据的,实际上把大半精力用于处理数据,这个是值得的,毕竟“garbage in, garbage out”,是否足够严肃的对待数据,是模型成败的重要决定因素。
基本面数据规范化程度高而频度低且容易获得,已经很难从中挖掘到新的价值,但与其它数据结合使用可能有效。
注:以多因子为例,我的理解有三种不同的观点:
--人性不变,经典因子(传统的基本面指标)线性回归结合投研对市场的理解已经能够解释和跟踪市场;
--利用非线性模型( 统计机器学习、深度学习等)挖掘数据与收益之间的非线性关系
--利用先进的数据挖掘技术(当然包括机器学习)挖掘新的数据因子。
作者显然是第三种做法的拥护者。
2.2.2 市场数据:
此处作者说的市场数据,不是一般意义上的K线数据,而是构成交易簿的tick级别数据,并举例说根据某些特征: 如TWAP算法的交易痕迹,人工下单通常买卖量为整数等预估交易对手的下一步活动。(这部分数据我应用不多,只看过一些市场微观结构的资料)。
2.2.3 Analytics(分析数据):
一般意义上认为的分析分析数据是源数据的衍生数据,不管是基本面、市场或另类数据员亦或其它分析结果的汇总。这里说的分析结果的特点不在于其内容,而在于它在传统数据源上不可获得,是用特殊方式专门为你加工的数据。投资银行的分析公司出售包括商业模式深度、商业活动、竞争及前景深入分析的数据,一些专门的公司出售另类数据的分析结果,人新闻和社会媒体提取的情感数据等。
分析数据的一个优点是其从原始数据中提取信号,缺点在于分析数据通常售价昂贵,其数据加工的方法论经常是有偏或不清楚的、且这些数据通常不能独占。
2.2.4 另类数据:
Kolanovic and Krishnamachari按数据来源将另类数据分为:由私人产生(社交媒体、新闻、网络搜索等)、商业行为产生(交易、企业数据、政府机关等)及传感器(卫星、地址定位、天气、闭路电视等)。一些常用的卫星或视频应用包括:监控油轮、隧道交通、停车场.
另类数据的主要特性在于它是第一手数据且未被其它数据源使用。在埃克林美孚公布业绩增长、股价上涨、分析师写最新业绩报告之前,美孕的钻井、油罐车、输油管已经在工作。这些数据能比传统数据源提前几个月体现业绩信息。(注:国内的电商销售数据的简单加工,也能体现某些如白色家电等有网络渠道公司的业绩方向)。使用这些数据的一个问题在于数据成本和私密性。
处理另类数据意味着要应付独特且难以处理的数据集。那些难以存储、处理和操作的数据经常是最有价值的数据。要注意的是,如果某些数据让你的数据团队感觉困扰,那它很可能有用。也许你的竞争对手由于逻辑原因不使用这些数据,在数据使用中半途而废或处理不当。
注:这是否有点儿技术男对于新数据的过份追求,我同意另类数据中蕴含的价值,但是否越难处理越有价值或者投资的成败这么大程度由另类数据决定,我表示不完全认同。
2.3 Bars
此部分作者用Bar泛提市场分析的基本单位,如日线交易者每天一个Bar,30分钟交易者每30分钟一个Bar。但市场本身并不是按时间提供信息(如开盘和收盘的一小时通常比中间时段更加活跃),且由于当下市场交易的主体是计算机(CPU)而非人,而计算机也并非按时间交易。因此,作者认为应该用等时长加工数据之外的方法加工交易数据,比如按tick、按交易量、按成交额、按信息驱动方式、按tick等等,本人目前还没有这个精力处理这样的数据,因此这部分工作打个Mark,有待将来要做时参考。
2.4 多交易品种时间序列的处理:
此部分作者提到当建模型处理多个不同交易品种的时间序列时,有时需要不停的调整各品种的权重,其它时候,我们需要处理某些交易品种不定期发生的诸如票息、分红等事件,作者在此处提出很多有建设性的处理方法,这个与我现在的工作相关度较低,只做浏览待日后需求时再研究。
2.5 特征取样:
直接在源数据上应用机器学习算法,在大多数时候并不是好主意:首先,一些机器学习算法例如SVM在大规模数据上表现不好(注1);其次,机器学习算法基于更相关的特征才能取得更好的效果,比如我们要预测市场下一次5%的价格变动是涨是跌,这种预测在大多数时候准确率不高,但在市场处于某种极端条件时,准确率会上升(注2)。
注1(部分思路来自知乎):SVM本质上是非线性方法,那么就决定了:(1)在样本量比较少的时候,容易抓住数据和特征之间的非线性关系(相比线性分类方法如logistic regression,或者linear SVM)。但是,在样本量比较多的时候,线性分类方法的劣势就要小了很多,例如可以通过手工拆分/离散化特征来模拟非线性关系。这时SVM优势就不明显了。而且有个经验就是,在数据量大的时候,一些看起来很粗暴无脑的方法反而有“令人惊奇的好效果”。
(2)计算复杂度高。主流的算法是O(n^2)的,这样对大规模数据就显得很无力了。不仅如此,由于其存在两个对结果影响相当大的超参数(如果用RBF核,是核函数的参数gamma以及惩罚项C),这两个超参数无法通过概率方法进行计算,只能通过穷举试验来求出,计算时间要远高于不少类似的非线性分类器。虽然说也还可以优化,但是与其优化它,不如去优化一些理论更鲁棒的方法(比如GP classification),或者直接就用计算时间较低的暴力非线性方法(如random forest,这是O(nlogn)的方法)
3)增加数据当然能够增加模型的准确率,能够有效调整分类面的长相,但是当你的数据分布覆盖面足够的时候,你的特征向量已经基本选定,你继续增加训练数据,正常的数据是不会对分类面产生任何影响的,因为它们并不是特征向量,而一些噪声数据则会对分类面产生不好的影响,它们可能会在分类面附近甚至被当做特征向量,导致特征向量过多,超平面过拟合,这种不管在计算速度上还是在准确率上都会产生不太好的影响。
注2:X和Y相关是非常重要的,比如我们无法用100根5分钟线预测下周涨跌,也很难用周线来预测未来30分钟的走势。作者提到的这个模型能力,在市场剧烈波动时、消息面有重大事件地、技术形态呈V顶、V底时,或交易风格为比如涨停敢死队的操作时,可能都比较合适。
2.5.1 数据压缩采样:
如前所说,数据采样的一个目的是缩小数据规模以方便模型使用。常用取样方法包括:线性等分采样和均匀采样。线性等分采样的缺点在于步长是主观认定的,而这种主观性可能很大程度影响结果;均匀采样通过从全样本中均匀采样克服这种主观性。但这两种方式采样的样本仍不理想,因为它们都不能保证包含在预测能力和信息量上最相关的样本。
2.5.2 基于事件采样:
组合经理的买卖决策通常是在特定事件发生后,例如结构性突破、特定信号或微观结构某种现象。这些事件可以是宏观统计数据公布、波动率急剧增加、大幅偏离均衡水平。我们可以定义一些重要的事件并让机器学习算法学习这些事情是否有预测能力。如果答案是否定的,则可以用来修订事件或尝试其它特征 。

你可能感兴趣的:(《Advances in Financial Machine Learning》读书笔记 (二))