浅尝辄止

理论是灰色的,而生命之树常青。这里是@Dilettante258 的个人博客,用于记载和分享学习。

时间戳与金融建模

Dilettante258's avatar
| 0 views

带有时间戳的数据是大数据时代的典型特征之一。

探索性数据分析(EDA)

在建模之前最好充分地利用探索性数据分析的方法彻底了解手中的数据。 对于用户行为数据分析来说,EDA要做的第一件事就是画出每个用户的使用行为时间序列图。想掌握用户的整体特征,前提是做足够细致的局部分析工作。研究者要从单个用户的角度去挖掘数据所阐释的意义,从而确保所收集的数据是合情合理的,但这并不意味着你需要审查完每一个用户。 先在所有用户中取出一个样本。通常看完100个用户的数据之后,你对用户整体特征应该已经了解透彻。但是,如果想更精细地研究和推断用户行为特征,100个数据肯定不足,而且你还可能需要模型的帮助。 探索完数据之后,我们可能已经对数据有了一定程度的认识,接下来的任务就是构建指标/变量了。 之后是建模,构思和实现算法,深入地分析数据了! 可以建立时间序列模型,并用作预测。比如说较为常见的自回归模型就是时间序列模型的一种。如果某个建模对象对时间较为敏感(比如,市场总是时涨时跌,与时间的关系密切。时间在市场分析中就扮演着极为重要的角色),这样我们就可以根据建模对象的时间特征预测它下一步会如何表现。 也可以做聚类分析。对于用户数据的聚类分析,其关键点也同样在于如何定义用户之间的相似性。 也可以做一个事件监测系统,也叫作“变点分析”。也就是说我们可以根据用户的行为特征判断在某个时点发生了“不寻常事件“。更深入的问题还包括:用户的何种行为会触发类似的事件?用户的行为与该事件的发生有无因果关系等?

金融建模

样本期内外以及因果关系

样本期内,顾名思义就是在观测期范围内的样本数据,而样本期外与我们前面章节所讨论过的“测试数据”有所关联,但又有本质的不用。测试数据本质上还是在观测期内,只是将观测器划分成了训练数据和测试数据两个部分,一部分用来训练模型,另一部分用来验证和测试模式。而金融建模中的样本期外的数据严格发生在建模之后,对于样本期内的数据来说,它们是未观测到的数据。其目的是用来检验金融模型在未观测数据上的真实预测表现。 此外,样本外分析的次数甚至都应该加以严格限制。因为,每一次分析,我们都将手头的样本内数据学习了一遍,如果样本外分析的次数过多,即使是研究的问题稍有不同,抑或是不同的模型,我们在潜意识里都有可能不知不觉地得到过拟合的结果。 其次,当执行因果关系建模的时候(这与统计学家所说的因果关系有所不同),我们必须多加小心。核心原则可以一语概括:永远不要拿未来的数据去预测未来!意思就是只能使用样本期内已经观测到的数据。 因为时间戳的存在,在给定一个训练数据集后我们难以确定何为模型的“最佳估计参数”。因为从数据的第一个时间戳开始估计,每增加一个时间戳,模型的估计都会发生相应的改变,直到估计到最后一个时间戳。也就是说,我们不会得到一个“最佳估计值”,而是得到一系列随着时间推进而演化的估计序列。 这类估计方法的有用之处在于,我们可以借此检验模型估计的稳定性。譬如说,如果某个参数的估计值的正负号在估计序列中前前后后变化了十几次,那么我们可以认为该参数的估计相当不稳定,而索性将其从模型中赶出去。当然,具体要不要把它赶出去还要看数据和模型的具体含义,也许它是一个天生就好动的参数,但在模型中却扮演着十分重要的角色。

数据预处理和分析

在实际建模之前,通常要对数据进行预处理和分析:比如,做对数变换,计算均值和方差等。这是很好的习惯,也称作“预建模”。 常用的变换方法:

  • 将数据减去其均值并除以其标准差,变换后的数值严格位于0到1之间。这称作标准化变换。
  • 在标准化变换中,也可以除以数据的最大值。
  • 对数变换:对变量的每个观测值取对数。
  • 将数据从小到大等分成5个组,每组的观测值数量相同。
  • 将数据变换成二元变量(0或者1)。最常见的变换方法我们之前有过论及,可以取一个阈值,如果变量的值大于该取值则变换为1,否则变为0。

对数收益率

相比于绝对百分比收益率,对数收益率具有可加性。 对数收益率另外一条有趣的性质是“对称性”。 对于高频数据,可以用对数收益率很好的近似百分比收益率,并且可以保留对数收益率可加性和对称性的优良特性。

模型的PnL值

模型的PnL值,PnL指的是模型所获取的实际收益与实际损失的差值,代表了模型的日度表现变动情况(注意,是差值而不是比例值),从计算上来看就是今天的表现值减去昨天的表现值。 先验信息量指在模型建立之前,根据历史、行业经验或者主观判断,对于某些参数的分布做出主观性预判,这种预判被数学化之后并整合进了原先的模型之中。

分析时间序列时,一个常用的统计量叫作“自回归系数”,可以帮助我们客观地确定合适的滞后项阶数。