如何使用带有要价和出价的 pandas 数据框计算成交量加权平均价格 (VWAP)?

2024-02-26

如果我的表格如下所示,如何创建另一个名为 vwap 的列来计算 vwap?

             time            bid_size   bid       ask  ask_size trade trade_size phase  
0   2019-01-07 07:45:01.064515  495   152.52    152.54    19     NaN      NaN    OPEN   
1   2019-01-07 07:45:01.110072  31    152.53    152.54    19     NaN      NaN    OPEN   
2   2019-01-07 07:45:01.116596  32    152.53    152.54    19     NaN      NaN    OPEN   
3   2019-01-07 07:45:01.116860  32    152.53    152.54    21     NaN      NaN    OPEN   
4   2019-01-07 07:45:01.116905  34    152.53    152.54    21     NaN      NaN    OPEN   
5   2019-01-07 07:45:01.116982  34    152.53    152.54    31     NaN      NaN    OPEN   
6   2019-01-07 07:45:01.147901  38    152.53    152.54    31     NaN      NaN    OPEN   
7   2019-01-07 07:45:01.189971  38    152.53    152.54    31     ask     15.0    OPEN   
8   2019-01-07 07:45:01.189971  38    152.53    152.54    16     NaN      NaN    OPEN   
9   2019-01-07 07:45:01.190766  37    152.53    152.54    16     NaN      NaN    OPEN   
10  2019-01-07 07:45:01.190856  37    152.53    152.54    15     NaN      NaN    OPEN
11  2019-01-07 07:45:01.190856  37    152.53    152.54    16     ask      1.0    OPEN   
12  2019-01-07 07:45:01.193938  37    152.53    152.55   108     NaN      NaN    OPEN   
13  2019-01-07 07:45:01.193938  37    152.53    152.54    15     ask     15.0    OPEN   
14  2019-01-07 07:45:01.194326  2     152.54    152.55   108     NaN      NaN    OPEN   
15  2019-01-07 07:45:01.194453  2     152.54    152.55    97     NaN      NaN    OPEN   
16  2019-01-07 07:45:01.194479  6     152.54    152.55    97     NaN      NaN    OPEN   
17  2019-01-07 07:45:01.194507  19    152.54    152.55    97     NaN      NaN    OPEN   
18  2019-01-07 07:45:01.194532  19    152.54    152.55    77     NaN      NaN    OPEN   
19  2019-01-07 07:45:01.194598  19    152.54    152.55    79     NaN      NaN    OPEN   

抱歉,表格不清楚,但最右边的第二列是 trade_size,左边是 trade,显示交易的方向(买价或卖价)。如果 trade_size 和 trade 均为 NaN,则表示在该时间戳没有发生交易。

如果 df['trade'] == "ask",则交易价格将是 'ask' 列中的价格,如果 df['trade] == "bid",则交易价格将是 'bid' 列中的价格。由于有2个价格,请问如何计算vwap,df['vwap']?

我的想法是使用 np.cumsum()。


您可以使用np.where https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html为您提供正确列中的价格(bid or ask)取决于中的值trade柱子。请注意,这会在没有交易发生时为您提供买入价,但因为随后会乘以NaN交易规模并不重要。我还转发了 VWAP。

volume = df['trade_size']
price = np.where(df['trade'].eq('ask'), df['ask'], df['bid'])  
df = df.assign(VWAP=((volume * price).cumsum() / vol.cumsum()).ffill())

>>> df
        time    bid_size    bid ask ask_size    trade   trade_size  phase   VWAP
0   2019-01-07  07:45:01.064515 495 152.52  152.54  19  NaN NaN OPEN    NaN
1   2019-01-07  07:45:01.110072 31  152.53  152.54  19  NaN NaN OPEN    NaN
2   2019-01-07  07:45:01.116596 32  152.53  152.54  19  NaN NaN OPEN    NaN
3   2019-01-07  07:45:01.116860 32  152.53  152.54  21  NaN NaN OPEN    NaN
4   2019-01-07  07:45:01.116905 34  152.53  152.54  21  NaN NaN OPEN    NaN
5   2019-01-07  07:45:01.116982 34  152.53  152.54  31  NaN NaN OPEN    NaN
6   2019-01-07  07:45:01.147901 38  152.53  152.54  31  NaN NaN OPEN    NaN
7   2019-01-07  07:45:01.189971 38  152.53  152.54  31  ask 15.0    OPEN    152.54
8   2019-01-07  07:45:01.189971 38  152.53  152.54  16  NaN NaN OPEN    152.54
9   2019-01-07  07:45:01.190766 37  152.53  152.54  16  NaN NaN OPEN    152.54
10  2019-01-07  07:45:01.190856 37  152.53  152.54  15  NaN NaN OPEN    152.54
11  2019-01-07  07:45:01.190856 37  152.53  152.54  16  ask 1.0 OPEN    152.54
12  2019-01-07  07:45:01.193938 37  152.53  152.55  108 NaN NaN OPEN    152.54
13  2019-01-07  07:45:01.193938 37  152.53  152.54  15  ask 15.0    OPEN    152.54
14  2019-01-07  07:45:01.194326 2   152.54  152.55  108 NaN NaN OPEN    152.54
15  2019-01-07  07:45:01.194453 2   152.54  152.55  97  NaN NaN OPEN    152.54
16  2019-01-07  07:45:01.194479 6   152.54  152.55  97  NaN NaN OPEN    152.54
17  2019-01-07  07:45:01.194507 19  152.54  152.55  97  NaN NaN OPEN    152.54
18  2019-01-07  07:45:01.194532 19  152.54  152.55  77  NaN NaN OPEN    152.54
19  2019-01-07  07:45:01.194598 19  152.54  152.55  79  NaN NaN OPEN    152.54
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用带有要价和出价的 pandas 数据框计算成交量加权平均价格 (VWAP)? 的相关文章

随机推荐

  • Zend Framework:我可以获取 GET 参数吗?

    在 Zend Framework 中 大多数时候要获取参数 我会使用 from controller this gt getRequest gt getParam key 但我怎样才能使用 Zend 方式获取参数呢 或者我只是使用 GET
  • 指定 XmlRootAttribute 时的 XmlSerializer 性能问题

    我目前遇到一个非常奇怪的问题 我似乎不知道如何解决它 我有一个fairly我正在尝试使用 XmlSerializer 类对其进行序列化的复杂类型 这实际上运行良好并且类型序列化正确 但似乎需要一个very长时间这样做 大约 5 秒 具体取决
  • nhibernate 持久化对象真的需要默认构造函数吗?

    由于某种原因 我不想让用户创建对象的实例 而不向构造函数发送属性 但据我所知 该对象应该具有默认构造函数 因此可以在不发送必需属性的情况下创建实例 有什么办法可以防止这个问题吗 如果有的话有副作用吗 只需使用受保护的默认构造函数 publi
  • 在 Qt 中自定义 AppMenu

    我正在为 MacOS 开发 Qt 应用程序 如何向 menuApp 添加项目 我的意思是出现在苹果图标右侧菜单栏上的条目 我想知道如何在 Qt 中实现这一点 而不是 Objective C 我正在使用 Qt 5 9 这是QWidget应用程
  • 带有选择死锁的嵌套更新

    背景 我正在使用一些代码 似乎deadlock经常与自己在一起 在Java中 它产生一个DeadLockLoserDataAccessException定期地 并且导致死锁的违规语句通常是itself 这是在 InnoDB 的事务中运行的
  • deleteRow 有时会删除右边的行,有时则不会在 Javascript 中删除

    我有一张桌子 每行的末尾都有一个 href X 用于删除该行 这很简单 现在 当您单击任意第 2 行的 X 时 它会删除第 2 行 但是当您单击第 3 行时 它会删除第 4 行 这是我的代码 HTML table align center
  • 构建重新训练的初始 SavedModel 后清空变量文件夹

    我正在尝试导出经过重新训练的初始模型 我读过这个几乎类似的问题here https stackoverflow com questions 43001719 deploy retrained inception savedmodel to
  • 求数组中绝对差值之和最小的一个数

    例如 array a 1 1 10 我们需要找到 x 这样 x 1 x 1 x 10 是最小值 这里 x 是 1 可以用贪心的方法解决吗 比如取平均值或其他方法 注意 取平均值不起作用 why 我只能想出O nlogn 解决方案 二分搜索
  • 默认使用maven静态编译.groovy

    我现在在我们的项目中使用maven编译 groovy 我的 pom xml 是
  • 跟踪 PHP 中的内存使用情况

    我正在尝试跟踪处理 URL 的脚本的内存使用情况 基本思想是在将另一个 URL 添加到 cURL 多重处理程序之前检查是否有合理的缓冲区 我使用 滚动 cURL 概念 在多处理程序运行时处理 URL 数据 这意味着每次现有 URL 处理和删
  • 为什么在这种特殊情况下,instanceof 模式匹配不能与 else if 一起使用?

    以下代码片段无法在 javac 版本 17 Temurin 上编译 class Instanceof static void doesNotWork Object o if o null throw new Error else if o
  • NSPredicate 对一个查询字符串进行多次比较

    我想知道是否有一种方法可以简化 NSPredicate 该 NSPredicate 接受多个比较目标的单个查询字符串 我正在搜索同一查询字符串的核心数据实体的多个属性 我当前的查询看起来像这样 NSPredicate predicateWi
  • 如何在 R 中的并行方法中使用无用的记录器进行记录?

    我在 R 中使用无用的记录器进行日志记录 我有一个使用 R 中的 Snowfall 实现的并行算法 并行进程的每个核心都会在记录器中记录中间输出 但是这个输出没有显示在记录器中 我们可以在使用降雪的并行作业中使用徒劳的记录器进行记录吗 添加
  • Android 初学者应用程序中的 openSearch() 未定义

    我刚刚开始学习 Android 初学者教程 现在面临一个问题 在这一页 http developer android com training basics actionbar adding buttons html Respond在 响应
  • 如何播放组合声音,就像从一群发声物体发出的声音一样

    假设我有 100 个 squeaker 类的实例 每个 吱吱声 物体都能够单独发出吱吱声 每个squeaker实体使用相同的 mp3资源 当所有吱吱声一起出现在屏幕上时 例如作为小角色 我希望它们都大约 但不完全 同时发出吱吱声 以便将它们
  • 逆时针旋转矩阵M*N的每个环

    我无法旋转M N逆时针方向的矩阵 我的代码可以正常工作3 3矩阵 但是当我尝试任何其他情况时 它不起作用假设我正在这样做4 4矩阵 则只有外部元素旋转 内部 4 个元素 即 6 7 10 11 不旋转 我的输入是 1 16 个数字4 4 m
  • mvccontrib grid - 如何添加 id

    我想向我构建的 mvccontrib 网格的 tr 元素添加一个 id tr tr tr tr 因此 如果表包含 10 行 则 id 为 0 到 9 一种方法是向我的实体添加一个附加项目来存储该值 然后将其创建为隐藏列 并将 id 作为该项
  • 有没有更快的方法来生成 .csv 文件作为 groupby 和循环的替代方法?

    我必须生成数十个包含数百万行和数十列的 csv 文件 我目前正在通过执行以下操作来生成文件groupby列 A 和 B 并循环动态生成文件to csv 下面是我正在尝试做的事情的一个例子 有没有更快的技术 我的实际数据帧需要 10 多分钟才
  • Visual Studio 中的版本控制

    我目前正在开发一个大型项目 即将做出一些重大更改 并且正在寻找一种方法来 备份 我之前的工作 Visual Studio 中是否有内置功能可用于版本控制 该项目仅由我开发 并且不使用 Team Foundation Server 这是我大部
  • 如何使用带有要价和出价的 pandas 数据框计算成交量加权平均价格 (VWAP)?

    如果我的表格如下所示 如何创建另一个名为 vwap 的列来计算 vwap time bid size bid ask ask size trade trade size phase 0 2019 01 07 07 45 01 064515