使用雅虎历史数据的pyalgotrade VWAP计算似乎不正确

时间:2016-02-27 02:52:42

标签: python pyalgotrade

我刚刚开始使用pyalgotrade,使用我在线修改的示例代码,使用 VWAP(音量调整平均值)计算,以及软件自己获取雅虎历史数据的方法,我有注意到输出 VWAP 计算似乎是错误的,因为雅虎会调整其音量,而软件工具则认为音量未经调整。

这是代码。请注意执行后生成的graph,并注意 VWAP 计算中的停止。我将纳斯达克数据与其已加载的yahoos进行了比较,并指出雅虎的交易量已经调整,尽管未经调整。我确实设置了标志以使用调整后的数据,但软件不会将其用于VWAP计算,因为我认为它假定卷未经调整。

如果有人能找出一种可以纠正问题的方法,我将不胜感激。我可以用来覆盖自己的VWAP计算的方法没问题。此外,我不知道如何向提供商报告错误,因为我是新手。

 from pyalgotrade import strategy
 from pyalgotrade.barfeed import yahoofeed
 from pyalgotrade import plotter
 from pyalgotrade.tools import yahoofinance
 from pyalgotrade.technical import vwap  #Volume Weighted Average Price

 import os

 class MyStrategy(strategy.BacktestingStrategy):
def __init__(self, feed, instrument, vwapWindowSize):



    strategy.BacktestingStrategy.__init__(self, feed)
    self.__instrument = instrument
    self.setUseAdjustedValues(True)     #   use adjusted close

    self.__vwap = vwap.VWAP(feed[instrument], vwapWindowSize )           # ,useTypicalPrice=True)

def getVWAPDS(self):

  return self.__vwap

def onBars(self, bars):

    vwap = self.__vwap[-1]
    if vwap == None:
        return

    shares = self.getBroker().getShares(self.__instrument)

                   #priceAdj = bars[self.__instrument].getAdjClose()
    price = bars[self.__instrument].getClose()
    notional = shares * price
    if price < vwap * 0.995 and notional > 0:
        self.marketOrder(self.__instrument, -100)
    elif price > vwap * 1.005 and notional < 1000000:
        self.marketOrder(self.__instrument, 100) 


def main(plot):
instrument = "aapl"
vwapWindowSize = 5

# Download the bars.
feed = yahoofinance.build_feed([instrument], 2011, 2016, "./data",)

myStrategy = MyStrategy(feed, instrument, vwapWindowSize)

if plot:
   plt = plotter.StrategyPlotter(myStrategy, True, False, True)
plt.getInstrumentSubplot(instrument).addDataSeries("vwap", myStrategy.getVWAPDS())

myStrategy.run()
print "Result: %.2f" % myStrategy.getResult()

if plot:
    plt.plot()

if __name__ == "__main__":
main(True)

1 个答案:

答案 0 :(得分:0)

它将在下一个版本中修复。感谢您报告此事。