Python Ошибка Backtrader: FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'AAPL' - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь использовать пакет backtrader в Python 3.8 для запуска обратного тестирования AAPL исторических цен акций, полученных из Yahoo Finance с использованием модуля backtrader YahooFinanceData.

Проблема: Похоже, что данные загружаются из Yahoo Finance, но во время тестирования на истории мы получаем ошибку:

FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'AAPL'

Есть идеи, как мы можем решить эту проблему?

Система:

  • Ma c OS X 10.15.3
  • Python 3.8.0
  • backtrader 1.9.74.123

Python Код для воспроизведения ошибки

from datetime import datetime
import backtrader as bt

class SmaSignal(bt.Signal):
    param = (('period', 20), )

    def __init__(self):
        self.lines.signal = self.data - bt.ind.SMA(period=self.p.period)

data = bt.feeds.YahooFinanceData(dataname='AAPL',
                                fromdate=datetime(2018, 1, 1),
                                todate=datetime(2018, 12, 31))
cerebro = bt.Cerebro(stdstats=False)
cerebro.adddata(data)
cerebro.broker.setcash(1000.0)
cerebro.add_signal(bt.SIGNAL_LONG, SmaSignal)
cerebro.addobserver(bt.observers.BuySell)
cerebro.addobserver(bt.observers.Value)

print(f'Starting Portfolio Value: {cerebro.broker.getvalue():.2f}')
cerebro.run()
print(f'Final Portfolio Value: {cerebro.broker.getvalue():.2f}')
cerebro.plot(iplot=True, volume=False)

стек ошибок

Traceback (most recent call last):
  File "02.py", line 21, in <module>
    cerebro.run()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/cerebro.py", line 1127, in run
    runstrat = self.runstrategies(iterstrat)
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/cerebro.py", line 1210, in runstrategies
    data._start()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/feed.py", line 203, in _start
    self.start()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/feeds/yahoo.py", line 352, in start
    super(YahooFinanceData, self).start()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/feeds/yahoo.py", line 94, in start
    super(YahooFinanceCSVData, self).start()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/feed.py", line 674, in start
    self.f = io.open(self.p.dataname, 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'AAPL'

1 Ответ

2 голосов
/ 17 марта 2020

Я немного погуглил на их форуме и нашел 1 и 2 , которые указывают, что Yahoo API не работал в течение нескольких лет. Либо используйте другую ленту данных, либо сохраните данные в виде файла CSV и прочитайте его.

...