时间序列数据,部分数据和面板数据是金融字段中的常见数据组织方法。面板数据包含两个维度:时间序列和交叉 - python,python,pandas通常可以由dataframe或numpy的两个维度阵列表示。海豚中的面板数据也可以由表或矩阵表示。
该教程主要介绍如何表示和分析海豚中的面板数据。内容包含在:面板数据表示方法和处理功能,SQL语句处理面板数据,矢量化功能处理面板数据以及面板数据处理方法中。
本文中的所有实例均基于Dolphindb 1.30。
Dolphindb提供了两种处理面板数据的方法:
DolphindB中的数据表和矩阵都使用列存储。
我们将使读者更好地了解如何通过以下方式执行这些功能。
当使用DolphindB的两个维数据表来表示SQL的面板数据时,一列通常存储一个指示器,例如开放,高,低,关闭,音量等,并且一条线代表一次库存的数据这一点的优势是,当处理多个指标时,数据不再需要对齐。缺点是组计算(基于库存组的时间顺序计算,或时间数据包的横截面),您需要首先对其进行分组,可以使用/pivot by/pivot by sql语句可用于分组。该数据包具有一定数量的费用,通常在组中计算通常会尽可能多地计算。
Dolphindb的SQL不仅支持SQL的标准函数,而且还支持扩展,包括面板数据处理,非单调连接,窗口连接,窗口函数等。
上下文是DolphindB的唯一功能,并扩展了标准SQL语句。我们可以通过上下文通过子句实现的组计算函数来简化数据面板的操作。
SQL的组按子句将数据划分为多个组,每个组都会生成一个值,这是一条线。因此,在使用该组在子句中,通常会大大减少行的数量。
在付款相反的面板数据之后,每组数据通常是时间序列数据。例如,根据股票组的数据,每个组中的数据是股票的价格顺序。处理面板数据时,有时我希望维护每个组的数据行数,也就是说,为每个组生成一个值例如,组中的每一行的行。窗口功能可以解决此问题。
Dolpindb通过条款引入上下文来处理面板data.com具有窗口函数,上下文,除了更简洁的语法外,设计还更加系统(三个条款构成了与group by yous pivot by yous pivot构成组数据处理的三个条款)。
(1)根据股票代码进行分组,使用序列函数来计算每个股票的先前交易率以比较:
(2)结合滑动窗口功能,在3个数据更新中计算每个股票的平均价格:
(3)与累积的窗口功能结合使用,计算每个数据更新中每个股票的最大交易量:
(4)应用聚合函数来计算每分钟每分股的最大交易量:
枢轴是海豚的唯一函数。它是标准SQL语句的扩展。它可以按照两个维度来组织数据表中的列内容,以生成数据表或矩阵。
通过按子句应用枢轴,您可以重新安排数据表t:每个行为是一秒钟,每个行为列为股票,您可以一次了解每个股票的更改,您也可以了解每个股票之间的差异
例如:同时比较不同股票的交易价格:
枢轴还可以与聚合物函数一起使用。例如,将数据中的平均每分钟平均收盘价转换为数据表:
当使用DolphindB的矩阵来表示面板数据时,根据时间序列和横截面的两个维度来排列数据。
例如,在分析矩阵的面板数据时:每行都是按时间戳进行排序的时间点,每列都是股票。了解多个股票之间特定点的差异。
矢量化功能面板可以将一系列或更多行数据转换为矩阵。例如,数据表t中的价格转换为矩阵:
以下脚本将价格和音量列转换为矩阵。返回结果是元组,每个元素对应于矩阵的列。
使用窗格功能时,您可以指定结果矩阵的行和列的标签。
使用ROWNAME和COLNAME功能可以获得面板函数返回的矩阵的线和列:
如果将来计算和处理面板数据,建议矩阵表示面板数据。这是因为矩阵自然支持矢量化操作和双重操作,计算效率将更高,代码将更加简洁。
让我们以矩阵表示的面板数据的一些示例。
(1)通过序列函数比较每个股票的相邻价格。
(2)结合滑动窗口功能,计算每个2个数据更新中每个股票的平均价格。
(3)与累积的窗口功能结合使用,计算每个股票中价格的排序。
(4)通过聚合函数获得每种股票的最低价格。
(5)通过聚合函数,同时获得了最低股票价格。
Dolphindb提供了两个扩展数据结构,以支持面板数据的对齐:索引式膜和索引列。
当通过双重操作执行正常矩阵时,根据相应的元素进行计算,并且需要保留尺寸,并且索引matrix和索引系列有助于矩阵或向量根据等级(索引)自动对齐。尺寸没有艰难的要求。
IndexedMatrix和IndexedSeries支持以下支持的双运算符和功能:
(1)作为算术运算符和功能:+, - , *, /(分隔),比率,%(mod),POW
(2)逻辑运算符和函数:和,或,bitxor,&,||
(3)滑动窗口功能:MWAVG,MWSUM,MBETA,MCORR,MCOVAR
(4)累积窗口功能:cumwavg,cumwsum,cumbeta,cumcorr,cumcovar
(5)聚合函数:WAVG,WSUM,BETA,CORR,COVAR
3.2.1 indexedmatrixindexedmatrix是一个特殊的矩阵,它使用矩阵的行和列标签作为索引。当索引iNdexedMatrix执行双操作时,系统根据行标签对齐多个矩阵,并且仅计算出相同数据的同一数据的同一数据RANKS.USE SETINDEXEDMATRIX!函数可以将普通矩阵设置为索引matrix。例如:
3.2.2索引服务器可以使用索引函数来生成索引向量。例如:
(1)索引列之间的对齐操作
两个索引系列执行双重操作,并在计算前根据索引对齐。
(2)索引系列和索引式Matrix之间的对齐操作
索引列和索引matrix执行二进制操作,该操作将根据行标签对齐。计算索引销售和索引matrix。
Dolphindb提供了一个具有时间型索引的索引式或索引的索引函数的重新样本和ASFREQ函数,并将其转换为索引列或索引。
其实施的目的是为用户提供一种方便的方法,用于重新采样和传统时间序列数据的频率转换。
3.3.1重新样本(重抽样)重新采样是指将时间顺序的频率转换为另一个频率。必须指定一个聚合物在重新采样时计算数据。
将采样频率降低到一个月:
3.3.2 ASFREQ(频率转换)ASFREQ函数转换为给定数据的时间频率。不像Respample函数,ASFREQ无法使用聚合物函数来处理数据。
3.3.3可能需要根据重新采样和频率转换的结果的零值处理零值的处理。
(1)删除空值
DolphindB提供了DropNA函数以删除向量中的空值,或者包含矩阵中的空值的线或列。
dropna的语法如下:
(2)填充零值
Dolphindb提供了填充无效值的各种功能:向前填充FFILL,向后填充Bfill,填充无效和线性插值插值。例如:例如:
(3)替换零值
Dolphindb用nullfill提供高级别的功能,可以用特定值代替以参与计算。
withNullFill函数的语法如下:
如果在X和Y中只有一个位置中只有一个元素,请使用FillValue替换零值以参与计算。如果X和Y相同位置的元素为null和返回null。
下面我们将展示如何通过更复杂的实践示例有效地解决面板数据问题。著名的论文101公式化的Alphas提供了世界上最高定量对冲基金Worldquan使用的101个因素,其中80%的因素仍然有效,并且使用了。在实际项目中。
以下是世界Quant公开公开开放的alpha98因子的表达。
为了更好地比较每种处理方法之间的差异,选择了一年库存的每日数据,涉及的原始数据量约为350,000件。
以下是脚本测试所需的数据。输入数据是包含以下字段的表:
我们将使用DolphindB SQL语句和矩阵来计算Alpha98因子。
通过两个Alpha98因子脚本的对比,我们可以发现Alpha98因子的脚本更简洁。由于Alpha98因子在计算过程中使用了截面数据,并且还使用了许多时间顺序的计算,因此也使用了很多时间序列。也就是说,在股票的因素中,必须使用股票的历史数据。信息的信息非常大,并且以矩阵形式的面板数据是一种结合交叉 - 的数据类型 -部分数据和时间序列数据。它可以支持库存数据以根据两个维度安排。因此,无需多次转换多个中间数据或输出数据的多个维度,从而简化了使用SQL语句进行计算的计算logic.com,在实现Alpha98因子计算的过程中,该函数已嵌套了多个多个多个多个函数处理数据的时间。将面板函数用于处理面板数据。显然,效率将更高,代码将更加简洁。
在性能测试方面,我们使用单个线程计算,而α98因子的SQL语句计算为232M。面板函数生成37ms数据来生成面板数据并计算141M的alpha98因子。没有太大的不同,矩阵方法可能会稍好一些。
但是,定向功能处理面板数据也受到限制。矩阵的面板数据不能重新组合。单值模型格式不够直观。SQL支持多个列,可以共同查询多个字段的信息。它适用于大量数据的平行计算。
处理面板数据时,客户可以根据自己的分析需求选择不同的方法来处理面板数据。
熊猫(Pandas)实现了alpha98因子的脚本,如下所示:
Alpha98用大熊猫计算得出290秒,使用矩阵实施仅为141ms,性能是数千次。
性能的巨大差异主要是由于与定时数据相关的许多功能中构建的DolphindB,并且优化的性能优于其他系统1至2个定量,例如MAVG,MCORR,MIMIN,MIMIN,MIMIN,MIMIN,MIMIN ,,,,,Mimin,Msum等。计算滑动窗口函数。实际上,在计算和测试二进制滑动窗口(MCORR)中,海豚的计算为0.6秒,熊猫需要142秒,性能差异超过200次。为了避免意外事件在计算结果中,我们已经使用了十年的股票市场收盘价数据。涉及的原始数据约为530万。比较结果是十个连续操作的MS耗时时间。
总体而言,在计算Alpha98因子时,DolphindB将在性能方面具有故障 - 类型的优势。
