R中的高频数据系列清洗

机器算法验证 r 金融
2022-03-25 11:47:58

我正在查看外汇和债券市场的时间序列数据(以测试极端走势的回归)。不幸的“tick”数据,即高频数据,容易出现许多问题,它们显然会严重干扰分析。我想知道哪个 R 库可以帮助解决以下类型的相当频繁的数据清理问题:

1)一个尖峰:

在此处输入图像描述

这通常是当一个做市商在一个报价单中打印出错误的报价时创建的,但在该价格下不会有可交易性,因为它持续了一瞬间。我想消除尖峰(但前提是只有一个(或可能 2 个)打印件)

2) 买卖差价:

在此处输入图像描述

在这种情况下,市场流动性相当低,数据算法在买卖之间跳跃(在这种情况下为 2 个基点宽),从而导致了这种奇怪的云。

我应该从哪里开始清理这些东西,显然是试图丢弃最少量的真实数据。我意识到“查看数据”的格言适用于此,但是当您查看 1000 个系列,每个系列都有 100 天的数据时,您会发现这将很快变得不切实际,因此我需要一些自动化帮助。如果 Python 语言方法可用或更好,我也会看看它们。

4个回答

有一个包。查看RTAQ

小插曲:有一个你可能感兴趣的量化金融堆栈交换。

要检测异常,您需要一个提供期望的模型。干预检测给出了以下问题的答案:“在观察之前观察到的概率是多少?我建议您专注于较短的时间序列并使用自动建模算法,该算法基于分离信号和噪声形成 ARIMA 模型。然后可以使用此 ARIMA 模型来识别“异常”。时间序列方法可用于提醒用户底层活动发生了显着变化。问题是,如果没有模型(至少是轻微的),您无法捕获异常值) 用于您的数据。否则,您怎么知道某个点违反了该模型?事实上,不断增长的理解、发现和检查异常值的过程必须是迭代的。这不是一个新想法。培根,

我不相信需要“清洁”。在学术 quantfi 文献中使用函数形式(例如 GARCH,尤其是 HARCH 来预测短期波动性)对高频数据进行建模。该文献可以追溯到 90 年代,例如 Dacorogna 等人的这篇论文、http ://long-memory.com/volatility/Dacorogna-etal1998.pdf和同一作者的其他论文。在我看来,这将是比修改数据更可取的方法,因为它保留了信息,例如,正如您在买卖差价中所指出的那样。

也许可以尝试一些“移动删除器” - 在 p 观察窗口中计算标准偏差,然后删除与先前观察的绝对差比该窗口中的标准偏差大 x 倍的 obs。但是这种方法不适用于第二张图片中显示的密集异常值(一个接一个)。

附言。这些图片来自什么程序?