Pandas 使用自定义体积加权聚合重新采样
Pandas resampling with custom volume weighted aggregation
我正在尝试根据我有多个数据点的 5 秒时间步长进行成交量加权价格汇总。通过传递聚合类型的字典,我可以获得单个字段的简单均值和总和聚合。但是,要生成体积加权聚合,我需要同时使用定价和体积字段为每个步骤生成它。
TS P Q
D
2018-01-01 00:00:00 1514764800 1673574.0 0.164012
2018-01-01 00:00:00 1514764800 1673954.0 0.006000
2018-01-01 00:00:00 1514764800 1673967.0 0.005808
2018-01-01 00:00:00 1514764800 1673949.0 0.040000
2018-01-01 00:00:00 1514764800 1673573.0 0.159234
2018-01-01 00:00:00 1514764800 1673569.0 0.007000
2018-01-01 00:00:00 1514764800 1673949.0 0.100000
2018-01-01 00:00:00 1514764800 1673569.0 0.008000
2018-01-01 00:00:00 1514764800 1673949.0 0.033000
2018-01-01 00:00:00 1514764800 1673346.0 0.033000
2018-01-01 00:00:01 1514764801 1673967.0 0.212200
2018-01-01 00:00:02 1514764802 1673954.0 0.006765
2018-01-01 00:00:03 1514764803 1673950.0 0.012000
2018-01-01 00:00:03 1514764803 1673955.0 0.005700
2018-01-01 00:00:03 1514764803 1673642.0 0.031197
2018-01-01 00:00:03 1514764803 1673949.0 0.067654
成交量权重公式应该只是数量 x 价格的累加总和除以该期间的总数量。
有没有一种方法可以通过使用价格和数量系列到 return VWAP 的自定义聚合来做到这一点?
使用.apply
您可以编写任何您想要的自定义聚合函数。
def vwap(data):
return (data.P * data.Q).sum() / data.Q.sum()
使用石斑鱼时,可以这样应用:
df.groupby(pd.Grouper(freq="5s")).apply(vwap)
通过重采样,也可以使用.apply
:
df.resample("5s").apply(vwap)
我正在尝试根据我有多个数据点的 5 秒时间步长进行成交量加权价格汇总。通过传递聚合类型的字典,我可以获得单个字段的简单均值和总和聚合。但是,要生成体积加权聚合,我需要同时使用定价和体积字段为每个步骤生成它。
TS P Q
D
2018-01-01 00:00:00 1514764800 1673574.0 0.164012
2018-01-01 00:00:00 1514764800 1673954.0 0.006000
2018-01-01 00:00:00 1514764800 1673967.0 0.005808
2018-01-01 00:00:00 1514764800 1673949.0 0.040000
2018-01-01 00:00:00 1514764800 1673573.0 0.159234
2018-01-01 00:00:00 1514764800 1673569.0 0.007000
2018-01-01 00:00:00 1514764800 1673949.0 0.100000
2018-01-01 00:00:00 1514764800 1673569.0 0.008000
2018-01-01 00:00:00 1514764800 1673949.0 0.033000
2018-01-01 00:00:00 1514764800 1673346.0 0.033000
2018-01-01 00:00:01 1514764801 1673967.0 0.212200
2018-01-01 00:00:02 1514764802 1673954.0 0.006765
2018-01-01 00:00:03 1514764803 1673950.0 0.012000
2018-01-01 00:00:03 1514764803 1673955.0 0.005700
2018-01-01 00:00:03 1514764803 1673642.0 0.031197
2018-01-01 00:00:03 1514764803 1673949.0 0.067654
成交量权重公式应该只是数量 x 价格的累加总和除以该期间的总数量。
有没有一种方法可以通过使用价格和数量系列到 return VWAP 的自定义聚合来做到这一点?
使用.apply
您可以编写任何您想要的自定义聚合函数。
def vwap(data):
return (data.P * data.Q).sum() / data.Q.sum()
使用石斑鱼时,可以这样应用:
df.groupby(pd.Grouper(freq="5s")).apply(vwap)
通过重采样,也可以使用.apply
:
df.resample("5s").apply(vwap)