如何在pandas_ta中添加AVWAP并为锚定VWAP设置特定日期锚点?
如何用pandas_ta将锚定VWAP(AVWAP)的锚点设置为指定日期
pandas_ta的vwap方法默认的anchor参数只支持按周期(如D日、W周、M月)重置锚点,没法直接指定单个特定日期。要实现锚定到自定义日期的AVWAP,你可以通过切片数据集+局部计算VWAP的方式来实现:
核心思路
- 从你的数据集中,筛选出从指定锚点日期开始到结束的子数据集
- 在这个子数据集上计算VWAP,此时VWAP的计算会以指定日期作为起始锚点,后续所有数据都基于该起始点累计计算
- 将计算结果合并回原数据集,未覆盖的前期数据会显示为
NaN(符合AVWAP从锚点开始计算的逻辑)
修改后的代码实现
import pandas as pd import yfinance as yf import pandas_ta as ta from datetime import datetime # 下载数据 data = yf.download("aapl", start="2021-07-01", end="2022-08-01") df = pd.DataFrame(data) # 1. 指定你要锚定的日期 anchor_date = "2021-10-01" # 2. 筛选从锚定日期开始的子数据集 df_anchor_segment = df.loc[anchor_date:] # 3. 在子数据集上计算VWAP(anchor设为"1D"确保不按周期重置,持续累计) avwap_from_custom_date = df_anchor_segment.ta.vwap(anchor="1D") # 4. 将计算结果合并回原数据集 df_with_avwap = df.join(avwap_from_custom_date, how="left") # 查看结果 print(df_with_avwap)
代码说明
anchor="1D"的作用是让VWAP不自动按日重置,而是从锚点日期开始持续累计计算,实现真正的“锚定到指定日期”的AVWAP效果- 如果你的锚点日期不在数据集索引中,
df.loc[anchor_date:]会自动找到该日期之后的第一条数据作为计算起点 - 合并后的数据集里,锚点日期之前的AVWAP值会是
NaN,这是合理的,因为AVWAP只从锚点开始计算
内容的提问来源于stack exchange,提问作者Programmer_nltk
相关产品推荐
相关产品推荐

