Figuring out what dependencies are needed
sal i
sal at nearlocal.com
Thu Dec 12 01:53:22 EST 2013
On Thursday, December 12, 2013 1:48:42 PM UTC+8, alex23 wrote:
> On 11/12/2013 10:44 PM, sal at nearlocal.com wrote:
>
> > I'm a Python beginner. I want to use it for stats work, so I downloaded Anaconda which has several of the popular libraries already packaged for Mac OS X.
>
> >
>
> > Now I'd like to use the backtesting package from zipline (zipline.io), but while running the test script in iPython, I receive the following error:
>
> >
>
> > AssertionError Traceback (most recent call last)
>
> > <ipython-input-6-f921351f78e2> in <module>()
>
> > ----> 1 data = load_from_yahoo()
>
> > 2 dma = DualMovingAverage()
>
> > 3 results = dma.run(data)
>
> >
>
> > 1) I assume that I'm missing some packages that aren't included in Anaconda, but how do I know which ones to upload?
>
>
>
> You're not missing a package, you're missing parameters. This is the
>
> signature for load_from_yahoo:
>
>
>
> def load_from_yahoo(indexes=None,
>
> stocks=None,
>
> start=None,
>
> end=None,
>
> adjusted=True):
>
>
>
> The first thing it does is call a helper function
>
> `_load_raw_yahoo_data`, which has this assertion:
>
>
>
> assert indexes is not None or stocks is not None, """
>
>
>
> As you're passing no parameters into `load_from_yahoo`, both `indexes`
>
> and `stocks` default to None, so the assertion fails. Take a look at the
>
> examples in the zipline library to see what it is expecting.
>
> > 2) Often I'll just unzip a library file and put the main folder in the iPython folder, but I notice there's usually a setup.py file in the main library folder. I've been ignoring this. Should I be using it?
>
> >
>
> > Thanks
>
> >
Thanks everyone.
This is the entire testing file along with the error at the bottom. It looks like a stock is specified as data['AAPL']:
%pylab inline
Populating the interactive namespace from numpy and matplotlib
In [14]:
from zipline.algorithm import TradingAlgorithm
from zipline.transforms import MovingAverage
from zipline.utils.factory import load_from_yahoo
In [15]:
class DualMovingAverage(TradingAlgorithm):
"""Dual Moving Average algorithm.
"""
def initialize(self, short_window=200, long_window=400):
# Add 2 mavg transforms, one with a long window, one
# with a short window.
self.add_transform(MovingAverage, 'short_mavg', ['price'],
market_aware=True,
window_length=short_window)
self.add_transform(MovingAverage, 'long_mavg', ['price'],
market_aware=True,
window_length=long_window)
# To keep track of whether we invested in the stock or not
self.invested = False
self.short_mavg = []
self.long_mavg = []
def handle_data(self, data):
if (data['AAPL'].short_mavg['price'] > data['AAPL'].long_mavg['price']) and not self.invested:
self.order('AAPL', 100)
self.invested = True
elif (data['AAPL'].short_mavg['price'] < data['AAPL'].long_mavg['price']) and self.invested:
self.order('AAPL', -100)
self.invested = False
# Save mavgs for later analysis.
self.short_mavg.append(data['AAPL'].short_mavg['price'])
self.long_mavg.append(data['AAPL'].long_mavg['price'])
In [16]:
data = load_from_yahoo()
dma = DualMovingAverage()
results = dma.run(data)
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-16-f921351f78e2> in <module>()
----> 1 data = load_from_yahoo()
2 dma = DualMovingAverage()
3 results = dma.run(data)
/Users/my_mac/zipline/data/loader.pyc in load_from_yahoo(indexes, stocks, start, end, adjusted)
302
303 """
--> 304 data = _load_raw_yahoo_data(indexes, stocks, start, end)
305 if adjusted:
306 close_key = 'Adj Close'
/Users/my_mac/zipline/data/loader.pyc in _load_raw_yahoo_data(indexes, stocks, start, end)
245
246 assert indexes is not None or stocks is not None, """
--> 247 must specify stocks or indexes"""
248
249 if start is None:
AssertionError:
must specify stocks or indexes
More information about the Python-list
mailing list