使用pip install zipline
在Windows 8上使用Python 2.7给我的错误:
Downloading/unpacking six (from python-dateutil==2.1->delorean->zipline[all])
Running setup.py egg_info for package six
Installing collected packages: blist, pytz, requests, python-dateutil, six
Running setup.py install for blist
building '_blist' extension
error: Unable to find vcvarsall.bat
Complete output from command C:\Python27\python.exe -c "import setuptools;__
file__='c:\\users\\ThatsMe\\appdata\\local\\temp\\pip-build-ThatsMe\\blist\\setup.py';ex
ec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" inst
all --record c:\users\ThatsMe\appdata\local\temp\pip-xvoky2-record\install-record.tx
t --single-version-externally-managed:
running install
running build
running build_py
running build_ext
building '_blist' extension
error: Unable to find vcvarsall.bat
Run Code Online (Sandbox Code Playgroud)
问题:如何解决错误?跑步pip install zipline[all]
给出了同样的错误......
我使用quantopian zipline包http://www.zipline.io/beginner-tutorial.html编写了一个python程序.我最近更新了包,并且遇到了不推荐使用zipline.transforms包的问题.我使用了zipline.transforms包中的两个函数,batch_transform()
和MovingAverage
.
我没有找到一个好的帖子来演示如何解决这个问题,除了说要替换batch_transform
这个history()
功能.但是,我不知道如何更换它.我还没有找到一篇文章告诉我们如何解决MovingAverage弃用问题.
这是我正在使用的代码.
from zipline.algorithm import TradingAlgorithm
from zipline.transforms import batch_transform
from zipline.transforms import MovingAverage
class TradingStrategy(TradingAlgorithm):
def initialize(self, window_length=6):
self.add_transform(
MovingAverage, 'kernel', ['price'], window_length=self.window_length)
@batch_transform
def get_data(data, context):
'''
Collector for some days of historical prices.
'''
daily_prices = data.price[STOCKS + [BENCHMARK]]
return daily_prices
strategy = TradingStrategy()
Run Code Online (Sandbox Code Playgroud)
有人可以举例说明如何更新上面的代码吗?我假设有很多人在处理有关流行的quantopian的问题.
目前我正在使用某个函数生成DateTimeIndex zipline.utils.tradingcalendar.get_trading_days
.时间序列大致是每天,但有一些差距.
我的目标是获得DateTimeIndex
每月的最后日期.
.to_period('M')
&.to_timestamp('M')
不工作,因为它们给出了月份的最后一天,而不是每月的变量的最后一个值.
例如,如果这是我的时间序列,我想选择"2015-05-29",而月份的最后一天是"2015-05-31".
['2015-05-18','2015-05-19','2015-05-20','2015-05-21','2015-05-22','2015-05-26',' 2015-05-27','2015-05-28','2015-05-29','2015-06-01']
我正在玩Enigma Catalyst.不幸的是,文档相当有限.
所以我试图运行他们的示例"hello world"类型algo,如下所示:
from catalyst import run_algorithm
from catalyst.api import order, record, symbol
import pandas as pd
def initialize(context):
context.asset = symbol('btc_usd')
def handle_data(context, data):
order(context.asset, 1)
record(btc=data.current(context.asset, 'price'))
if __name__ == '__main__':
run_algorithm(
capital_base=10000,
data_frequency='daily',
initialize=initialize,
handle_data=handle_data,
exchange_name='Bitfinex',
algo_namespace='buy_and_hodl',
base_currency='usd',
start=pd.to_datetime('2018-01-02', utc=True),
end=pd.to_datetime('2018-01-03', utc=True),
)
Run Code Online (Sandbox Code Playgroud)
我意识到根据文档说它首先需要"摄取"下载我认为我做过的历史数据.但是,这会导致以下错误:
Run Code Online (Sandbox Code Playgroud)[2018-02-25 02:54:10.696049] WARNING: Loader: Refusing to download new treasury data because a download succeeded at 2018-02-25 02:08:26.001177+00:00.
这导致没有数据
Run Code Online (Sandbox Code Playgroud)[2018-02-25 02:54:10.830665] INFO: Performance: first open: 2018-01-02 00:00:00+00:00 …
请注意:这个问题在下面成功回答了ptrj.我还在我的博客上写了一篇关于我对zipline的体验的博客文章,你可以在这里找到:https://financialzipline.wordpress.com
我的总部设在南非,我正在尝试将南非股票加载到一个数据框中,以便它可以提供带有股价信息的zipline.假设我正在寻找在JSE(约翰内斯堡证券交易所)上市的AdCorp控股有限公司:
Google财经为我提供了历史价格信息:
https://www.google.com/finance/historical?q=JSE%3AADR&ei=5G6OV4ibBIi8UcP-nfgB
雅虎财经没有关于该公司的信息.
https://finance.yahoo.com/quote/adcorp?ltr=1
在iPython Notebook中键入以下代码,可以获得Google财经信息的数据框:
start = datetime.datetime(2016,7,1)
end = datetime.datetime(2016,7,18)
f = web.DataReader('JSE:ADR', 'google',start,end)
Run Code Online (Sandbox Code Playgroud)
如果我显示f,我看到该信息实际上也与Google财经相关信息相对应:
这是Google财经完全关闭的价格,您可以在Google财经网站上看到2016-07-18的信息与我的数据框完全匹配.
但是,我不确定如何加载此数据框,以便zipline可以将其用作数据包.
如果查看给出的示例buyapple.py
,您可以看到它只是从摄取的数据包中提取了apple share(APPL)的数据quantopian-quandl
.这里的挑战是更换APPL
,JSE:ADR
以便它JSE:ADR
每天订购10 份数据,而不是数据包,quantopian-quandl
并将其绘制在图表上.
有谁知道如何做到这一点?网上几乎没有关于这个问题的例子......
这是buyapple.py
zipline示例文件夹中提供的代码:
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'))
# Note: this function can be removed if running
# this algorithm on quantopian.com
def analyze(context=None, …
Run Code Online (Sandbox Code Playgroud) 我在zipline和pandas工作,并使用该方法pandas.Panel
将a 转换为a .这是结果,你可以看到是多索引的:pandas.DataFrame
to_frame()
pandas.DataFrame
price
major minor
2008-01-03 00:00:00+00:00 SPY 129.93
KO 26.38
PEP 64.78
2008-01-04 00:00:00+00:00 SPY 126.74
KO 26.43
PEP 64.59
2008-01-07 00:00:00+00:00 SPY 126.63
KO 27.05
PEP 66.10
2008-01-08 00:00:00+00:00 SPY 124.59
KO 27.16
PEP 66.63
Run Code Online (Sandbox Code Playgroud)
我需要将此框架转换为如下所示:
SPY KO PEP
2008-01-03 00:00:00+00:00 129.93 26.38 64.78
2008-01-04 00:00:00+00:00 126.74 26.43 64.59
2008-01-07 00:00:00+00:00 126.63 27.05 66.10
2008-01-08 00:00:00+00:00 124.59 27.16 66.63
Run Code Online (Sandbox Code Playgroud)
我已经尝试过pivot方法,stack/unstack等等,但这些方法并不是我想要的.我真的非常坚持这一点,任何帮助都表示赞赏.
我是Pandas和Zipline的新手,我正在努力学习如何使用它们(并将它与我拥有的这些数据一起使用).任何类型的提示,即使没有完整的解决方案,将非常感激.我已经尝试了很多东西,并且已经非常接近,但Exception: Reindexing only valid with uniquely valued Index objects
特别是遇到了索引问题.[Pandas 0.10.0,Python 2.7]
我试图通过以下形式转换我在postgres中的数千种股票的月度回报数据:
ticker_symbol :: String, monthly_return :: Float, date :: Timestamp
Run Code Online (Sandbox Code Playgroud)
例如
AAPL, 0.112, 28/2/1992
GS, 0.13, 30/11/1981
GS, -0.23, 22/12/1981
Run Code Online (Sandbox Code Playgroud)
注意:报告的频率是每月一次,但这里会有相当多的NaN数据,因为我在这里的6000多家公司并非同时出现这些数据.
...到下面描述的形式,这是Zipline运行其后测试器所需要的.(我想.Zipline的backtester可以轻松地使用这样的月度数据吗?我知道它可以,但是这样做的任何提示?)
以下是DataFrame(时间序列?这个怎么说?),我需要的格式:
> data
:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 2268 entries, 1993-01-04 00:00:00+00:00 to 2001-12-31 00:00:00+00:00
Data columns:
AA 2268 non-null values
AAPL 2268 non-null values
GE 2268 non-null values
IBM 2268 non-null values
JNJ 2268 non-null values
KO 2268 non-null values
MSFT 2268 non-null …
Run Code Online (Sandbox Code Playgroud) 我正试图让zipline与非美国的日内数据一起使用,我已将其加载到pandas DataFrame中:
BARC HSBA LLOY STAN
Date
2014-07-01 08:30:00 321.250 894.55 112.105 1777.25
2014-07-01 08:32:00 321.150 894.70 112.095 1777.00
2014-07-01 08:34:00 321.075 894.80 112.140 1776.50
2014-07-01 08:36:00 321.725 894.80 112.255 1777.00
2014-07-01 08:38:00 321.675 894.70 112.290 1777.00
Run Code Online (Sandbox Code Playgroud)
我在这里遵循移动平均线教程,用我自己的符号代码替换"AAPL",用"1m"数据代替"1d"代替历史调用.
然后,我用做最后一次通知algo_obj.run(DataFrameSource(mydf))
,其中mydf
高于数据帧.
然而,与TradingEnvironment相关的各种问题都出现了.根据源代码:
# This module maintains a global variable, environment, which is
# subsequently referenced directly by zipline financial
# components. To set the environment, you can set the property on
# the module …
Run Code Online (Sandbox Code Playgroud) 我正在阅读 Andreas Clenow 所著的《Trading Evolved》一书,并在尝试在 zipilne 上运行第一次回测的代码时遇到断言错误。我是 python 和 zipline 的新手,非常感谢有关如何解决此错误的任何指导。以下是从本书网站获取的源代码:
# This ensures that our graphs will be shown properly in the notebook.
%matplotlib inline
#Import pandas as pd
import pandas as pd
# Import Zipline functions that we need
from zipline import run_algorithm
from zipline.api import order_target_percent, symbol
# Import date and time zone libraries
from datetime import datetime
import pytz
# Import visualization
import matplotlib.pyplot as plt
def initialize(context):
# Which stock to trade
context.stock = symbol('AAPL') …
Run Code Online (Sandbox Code Playgroud) 我的viacsv.py文件中有以下代码,旨在允许自定义捆绑包被摄取:
#
# Ingest stock csv files to create a zipline data bundle
import os
import numpy as np
import pandas as pd
import datetime
boDebug=True # Set True to get trace messages
from zipline.utils.cli import maybe_show_progress
def viacsv(symbols,start=None,end=None):
# strict this in memory so that we can reiterate over it.
# (Because it could be a generator and they live only once)
tuSymbols = tuple(symbols)
if boDebug:
print "entering viacsv. tuSymbols=",tuSymbols
# Define our custom ingest function
def ingest(environ, …
Run Code Online (Sandbox Code Playgroud) zipline ×10
python ×9
pandas ×4
calendar ×1
enigma2 ×1
etl ×1
hft ×1
multi-index ×1
pip ×1
python-2.7 ×1
quantopian ×1