Commit Graph
237 Commits
Author SHA1 Message Date
Eddie Hebert 4860a966b3 REL: Update copyright year on all files changed since the new year. 2014-03-07 22:31:41 -05:00
twieckiandEddie Hebert d900338e00 BUG: Py3 compatibility changes. 2014-02-16 10:59:29 -05:00
twiecki f0322015bd BUG: Fix pandas indexing in trading calendar. 2014-02-11 15:52:43 -05:00
twiecki d91c18b1c2 BUG: Python 3 fix. 2014-01-30 18:48:46 -05:00
Michael Schatzowandtwiecki 59bcd097d5 ENH: Add hdf5 and csv source.
This creates a data source for csv and hdf5 files, a generator to create a sample csv, and a pytables generator to go from a list of dated gzipped csv's in a directory to a pytables data source.

This does not add a unittest yet which we should write for the future.
2014-01-30 16:47:27 -05:00
Moises TrovoandEddie Hebert 64b28d15f8 ENH: Add Brazilian calendar for BMF&Bovespa stock market
Add Brazilian Bovespa Stock Market calendar
2014-01-16 12:53:11 -05:00
Thomas WieckiandEddie Hebert b69590a2f7 ENH: Factor out API methods. Add support for algo scripts.
This is a step towards the goal of uniting Quantopian scripts
and zipline.

To make the syntax of zipline identical to Quantopian
we break out the API methods (like order) and turn them into
functions. To access the algo object we add a thread local reference
to the current algorithm that is accessed in the API functions.

TradingAlgorithm now takes either a string or two functions
(initialize and handle_data) that it executes.

Use api method decorator for methods available in algoscript.

Ported appropriate algorithm tests from internal code.
2014-01-16 12:07:33 -05:00
Eddie Hebert f093b2fb59 MAINT: Adjust for comparison changes in Python 3.
Use date sorted sources instead, instead of sorting with second
argument of Event, etc. since the `heapq.merge` behavior is using
the second part of the tuple, thus requiring a richer set of comparison
methods, which would only be used in the test context.

Use `date_sorted_sources` instead, so that sorting is done on algo time
and source id.
2014-01-07 11:57:52 -05:00
Eddie Hebert 9326a732a4 MAINT: Make exception handling tests compatible between Python 2 and 3
Python 3 removes the `.message` attribute, so use `str` instead.

Also, the divide by zero message has changed slightly between versions,
so just check for the exception type, instead of also checking the message.
2014-01-07 11:57:49 -05:00
Eddie Hebert b4959e46cf MAINT: Use six for Python 3 compatible names and behavior.
Use the six module to import functions and types that are
consistent between Python 2 and 3, so that one code base can
support both versions.

- Use integer types instead of int and long.
- Use string_types instead of basestring.
- Account for iteritems, itervalues, iterkeys.
- Use six.moves for filter and zip, reduce
- Use compatible bytes for md5 hasher.
- xrange and range
2014-01-07 11:33:50 -05:00
David StephensandThomas Wiecki e5786b2593 ENH: Add calendar and test for Toronto stock exchange.
Note that the calendar test is decorated with @nottest (as per the other calendar test functions).  I've run the test to confirm the calendar works.  The differences between the env (Yahoo Finance of GSPTSE) and the calendar are illustrated in the tradingcalendar_tse file and are confirmed to be errors on Yahoo Finance's part.
2013-12-27 13:27:14 -05:00
Richard Frank adb4de740e MAINT: Removed unused parameter 2013-12-20 15:46:49 -05:00
Richard Frank f70ae02694 PERF: Speed up get_open_and_closes by assigning entire columns
to DataFrame, instead of row by row
2013-12-20 15:46:49 -05:00
Eddie Hebert bbad5b386a MAINT: Removed unused test_utils.check functions.
The test_utils were the only references to the blist package,
removing so that blist can be removed as a dependency.
2013-12-02 13:19:00 -05:00
Eddie Hebert f8755a5602 STY: Remove unused imports. 2013-11-12 13:26:08 -05:00
Eddie Hebert a2a56f7c63 MAINT: Remove noop_environment.
The code that was consuming noop_environment now uses a
real trading environment.

As more behavior relies on an accurate trading calendar, maintaining
the noop environment was a constraint that was more overhead than it
is worth.
2013-11-12 13:11:52 -05:00
Eddie Hebert 102cfcbe5b BUG: Fix bad dates from test factory.
Passing the exchange time timestamp to is_market_hours was ending
up with odd behavior due to conversion back to UTC when checking
the is_trading_day boolean.
2013-11-12 12:45:05 -05:00
Eddie Hebert aff8311f2f MAINT: Change name of column in open and close frame.
Use more natural sounding 'market_open' and 'market_close'.
2013-11-11 16:05:10 -05:00
Eddie Hebert 48be898a13 ENH: Add open and closes to trading calendar.
Use the early closes to populate a DataFrame which includes
the open and close minute for each day.

To be used by the environment instead of calculating each value
mid-backtest.
2013-11-11 15:48:44 -05:00
Eddie Hebert 43b85cffb0 MAINT: Calculate tradingcalendar with days beyond the current day.
To make 'next open' calculations more straight ahead, calculate more
than enough days in the trading calendar.
2013-11-11 15:48:44 -05:00
Eddie Hebert 796b9fb67a MAINT: Use Timestamp for calculating next_trading_dt in test factory.
Instead of Delorean, use pandas Timestamp.

Could also consider using environment trading_days directly.
2013-11-11 11:44:40 -05:00
Eddie Hebert dd95b6bfa3 MAINT: Use Timestamp instead of Delorean for tradingcalendar end.
Instead of Delorean, use pandas `today` behavior for Timestamp.
2013-11-11 10:13:05 -05:00
Jonathan KamensandEddie Hebert 73faf9133e MAINT: Clean up imports of zipline.finance.trading
Use "from zipline.finance import trading" instead of "import
zipline.finance.trading as trading".
2013-10-29 13:50:14 -04:00
Jonathan Kamens 0a7539b6de MAINT: flake8 2013-10-29 12:02:51 -04:00
Jonathan Kamens c3ddbc258d ENH: Accept simulation parameters and benchmark source args to create_test_zipline 2013-10-29 11:39:07 -04:00
Jonathan Kamens e36f70f541 ENH: Allow market data loader to be specified to create_simulation_parameters 2013-10-29 11:17:41 -04:00
Eddie Hebert 37c56b9aa4 MAINT: Use Series throughout for daily returns.
Remove the lists of DailyReturn objects in favor of using pd.Series
to store the return values.

Should make it easier to inspect the values when stepping through,
make the windowing of data to a certain range more facile by using,
and have some performance increases due to removing object creation
and member access.
2013-10-19 23:06:18 -04:00
Eddie Hebert 800210fbb3 MAINT: Ensure that test sources only provide market days.
Instead of using all calendar days between start and end in test
sources, use the trading calendar for test sources.

Needed for an incoming refactoring of market open and close,
where the opens and closes are indexed by market days.
2013-10-17 16:45:51 -04:00
Thomas WieckiandEddie Hebert a66f45b598 MAINT: Moving yahoo loader from factory to utils. 2013-10-01 14:09:26 -04:00
Eddie Hebert df7b9c0273 MAINT: Remove date_utils module.
Most of the functions in date_utils can be done via pandas.
The other functions are no longer used for loading, etc. so remove
the date_utils module to reduce the total surface area of Zipline core.
2013-09-30 23:30:07 -04:00
Eddie Hebert 6bbc131bbf MAINT: Compare datetime in test utils instead of integer.
Reduce dependency on date_utils, and improve legibility on failing
test.
2013-09-30 23:01:49 -04:00
John Ricklefs 191715a148 ENH: Add support for asynchronous commission events. 2013-08-26 14:18:32 -04:00
Eddie Hebert 1295f45e13 MAINT: Switch treasury curves from Series to DataFrame.
Instead of using a pandas Series of with dictionaries as the
values treasury curves, use a DataFrame which more naturally fits
the data type of a having a timeseries with mulitple values.

Should allow easier slicing/manipulation of the treasury curves,
e.g. getting 10 year curves would now be:
```
treasury_curves['10year']
```
2013-08-13 23:13:19 -04:00
Thomas Wiecki b89886297f STY: autopep8 codebase. 2013-08-08 16:46:44 -04:00
Thomas Wiecki b1fdebfb7c TST: Added tests for new order methods. 2013-08-08 15:55:08 -04:00
Jonathan KamensandEddie Hebert 3541115b4e BUG: Trading calendar dates should always be midnight UTC
For consistency, datetimes returned by the trading calendar should
always show HHMMSS of midnight UTC. Not only is this useful for
consistency, but it also allows us to check if a particular date() is
in an array of these datetimes, because they will hash to the same
thing. For example:

early_closes = get_early_closes()
... later ...
if current_bar_datetime.date() in early_closes:
    ... today closes early ...

If if the datetimes returned by the trading calendar functions don't
have 00:00:00 for HHMMSS, then the "in" check above will fail because
the date and the datetimes in early_closes won't hash to the same
thing.
2013-08-06 15:53:41 -04:00
Jonathan Kamens 86682b4097 ENH: Use sort() instead of sorted() for efficiency 2013-07-24 12:43:26 -04:00
Jonathan Kamens a1a1fbf21f BUG: Don't include out-of-range date in early closes
Don't include New Year's Eve 1999 in the early closes returned to the
user if it's outside the range of dates requested by the user.
2013-07-24 12:40:28 -04:00
Jean BredecheandEddie Hebert 6fc077a573 ENH: Add support for splits in zipline.
When a split is encountered, open positions and open orders
are updated accordingly.
2013-07-23 16:22:58 -04:00
Richard FrankandEddie Hebert 75dd77ea03 ENH: Added early closes to trading environment
specifically, expected 1 PM closes since 1993
2013-07-16 12:02:34 -04:00
Ben McCannandEddie Hebert b9bd928862 DOC: Fix documentation compilation warnings; improve output formatting
Fix warnings when compiling the docs.
Removes the documentation of the default types, which already gets
included automatically and was wrong because not kept in sync with the
function signature.

Changed, the formatting to the Sphinx formatting.
This looks much better in the compiled documents, but does make the
source a bit harder to read.
2013-07-15 14:18:07 -04:00
Thomas WieckiandEddie Hebert a7818f853a DOC: Add note about performance issue when updating. 2013-06-20 19:36:36 -04:00
Thomas WieckiandEddie Hebert 102cddb4cb ENH: Use smarter matching for updating RollingPanel. 2013-06-20 19:36:36 -04:00
Thomas WieckiandEddie Hebert 236fe92a53 ENH: Make RollingPanel update itself if new fields arrive.
Before we preinitialized the BT's fields and sids.
Thus, no new ones could be added after initialization.
This should be fixed now.
2013-06-20 19:36:22 -04:00
Eddie Hebert aca338c9e5 MAINT: Remove unused NaiveRollingPanel from rolling panel module. 2013-06-20 18:00:13 -04:00
Richard Frank 88b9881145 TST: Include the label in the failure message of isinstance asserts 2013-06-12 14:18:09 -04:00
Thomas WieckiandEddie Hebert b87d454938 BUG: Add bar kwarg to batch_transform.
Before the change to the RollingPanel, window_length
specified the number of days that should be in a window.

The previous commit broke this if data was minute resolution.

By passing bar='minute' to the batch_transform we internally
multiply the window_length by 60*6.5 to have a full day.

Also adds a (still rudamentary) test for batch_transform
with minute data.
2013-05-13 16:42:58 -04:00
fawce 4ed0250424 added a fake window_length to be compatible
with transform protocol
2013-05-01 22:42:17 -04:00
Jonathan Kamens 16e75a31d4 TST: Fix check() test utility function to detect all list differences
The check() function in zipline.utils.test_utils was only comparing
lists up to the length of the shortest list. This fix uses
izip_longest instead of izip so it compares up to the length of the
longest list, which among other things means that it will now
correctly report when one list is empty and the other is not.
2013-04-30 21:13:18 -04:00
Jeremiah LowinandEddie Hebert cc39ec3aef ENH: Add support for TALib based transforms.
Provide a subclass of BatchTransforms that are powerd by the ta-lib
library.
2013-04-30 17:35:56 -04:00