Zipline Error: 'NoneType' object has no attribute 'index'

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Ole
User
Beiträge: 2
Registriert: Montag 18. September 2017, 09:12

Hallo,

I moechte gerne meine manuellen Tradingstrategien automatisieren mit Zipline. Um mich einzuarbeiten in Zipline habe ich das auf der Webseite zur Verfuegung stehende Beispiel uebernommen und wollte es mittels run_algorithm() starten. Da habe ich nun eine Fehlermeldung bekommen. Ich habe es auch ueber Terminal und IPython versucht. Da kam der gleiche Fehler.

Ich nutze Python 3.6 auf MAC OSX und Zipline 1.1.1

Das ist der Code:

Code: Alles auswählen

import zipline as zl 
from zipline.api import order, record, symbol

def initialize(context): pass

def handle_data(context, data): order(symbol('AAPL'), 10) record(AAPL=data.current(symbol('AAPL'), 'price'))

zl.run_algorithm(start=2015-1-1, end=2017-1-1, initialize=initialize, capital_base=10000)
Das ist die Fehlermeldung:

Traceback (most recent call last): File "/Users/SOL/Desktop/Python/backtest.py", line 13, in zl.run_algorithm(start=2015-1-1, end=2017-1-1, initialize=initialize, capital_base=10000) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/utils/run_algo.py", line 360, in run_algorithm environ=environ, File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/utils/run_algo.py", line 132, in _run env = TradingEnvironment(asset_db_path=connstr, environ=environ) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/finance/trading.py", line 99, in init self.bm_symbol, File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/data/loader.py", line 173, in load_market_data environ, File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/data/loader.py", line 287, in ensure_treasury_data if not has_data_for_dates(data, first_date, last_date): File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/data/loader.py", line 87, in has_data_for_dates dts = series_or_df.index AttributeError: 'NoneType' object has no attribute 'index'
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

hast du mal den Link auf die Webseite, von der du dein Beispiel hast?

Gruß, noisefloor
Ole
User
Beiträge: 2
Registriert: Montag 18. September 2017, 09:12

Hallo,

das ist der Link: http://www.zipline.io/beginner-tutorial ... -algorithm

Ich bekomme auch den Fehler, wenn ich versuche das Beispiel "Dual Moving Average Cross-Over" zu reproduzieren.
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

[codebox=text file=Untitled.txt]Traceback (most recent call last):
File "/Users/SOL/Desktop/Python/backtest.py", line 13,
in zl.run_algorithm(start=2015-1-1, end=2017-1-1, initialize=initialize, capital_base=10000)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/utils/run_algo.py", line 360,
in run_algorithm environ=environ,
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/utils/run_algo.py", line 132,
in _run env = TradingEnvironment(asset_db_path=connstr, environ=environ)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/finance/trading.py", line 99,
in init self.bm_symbol,
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/data/loader.py", line 173,
in load_market_data environ,
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/data/loader.py", line 287,
in ensure_treasury_data if not has_data_for_dates(data, first_date, last_date):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zipline/data/loader.py", line 87,
in has_data_for_dates dts = series_or_df.index AttributeError: 'NoneType' object has no attribute 'index'[/code]

Bitte füge deine Fehlermeldung immer in einer Codebox hier ein, das ist sonst kaum zu lesen und ärgerlich :? .

Die letzte Zeile liest sich für mich so, dass du es nicht geschafft hast die Daten zu laden, weshalb wahrscheinlich eine Funktion irgendwo dann None zurückgegeben hat und darauf kann dann eben nicht wie geplant zurückgegriffen werden.

Du könntest mal schauen, ob du die aktuellste Version installiert hast und sonst ein Upgrade versuchen. Möglicherweise wurde der Fehler schon mal gelöst. Du könntest den Fehler bei einem github-Repository (o. ä.) melden und erklären, was du gemacht und welche Fehlermeldung du erhalten hast. Ferner könntest du mal ein anderes Trading Symbol testen (AAPL).

Falls Du ganz viel Zeit hast, könntest du mal schauen, welche Datenbasis die Bibliothek nutzt. Yahoo hat die Datenlieferung vor geraumer Zeit eingestellt und kann meines Wissens nur über einen Umweg noch genutzt werden (aktueller Zustand ist mir unbekannt). Google liefert nur noch Daten für den Zeitraum eines Jahres. So wie der Fehler aussieht, könnte als Quelle noch Yahoo genutzt worden sein. Bei pandas tritt momentan ein vergleichbares Problem auf.
Antworten