Commit Graph
98 Commits
Author SHA1 Message Date
Jean Bredeche c7250d3207 BUG: Python3 compatibility. 2017-04-26 10:47:27 -04:00
Jean Bredeche b55d4bd423 BUG: Add backwards compatibility for position lookup by int. 2017-04-26 09:55:05 -04:00
Jean Bredeche bed00a1b77 BUG: use isinstance 2017-04-24 17:06:26 -04:00
Jean Bredeche 15d8dc93a3 MAINT: PR feedback. 2017-04-24 15:41:23 -04:00
Jean Bredeche 8c5e4b7bbc BUG: Blotter should process as many splits as it can 2017-04-24 15:41:23 -04:00
Jean Bredeche 64746b186b BUG: get_splits should return empty list, not empty dict 2017-04-24 15:41:23 -04:00
Jean Bredeche 5305fbe471 REF: Remove assetfinder from PerformancePeriod 2017-04-24 15:41:22 -04:00
Jean Bredeche 9a0d9d868c REF: Remove asset_finder and multipliers from PositionTracker 2017-04-24 15:41:22 -04:00
Jean Bredeche e429664fa6 REF: Blotter no longer needs AssetFinder 2017-04-24 15:41:21 -04:00
Jean Bredeche 59a96bf782 REF: Make dataportal emit splits that hold Assets, not sids 2017-04-24 15:41:21 -04:00
Jean Bredeche 1f8e194e09 BUG: Position cost basis was calculated incorrectly for Futures
For futures, we need to divide the position’s commission by the
contract size to get a per-unit commission in order to properly update
the position’s cost basis.
2017-04-24 15:41:20 -04:00
Jean Bredeche b1248cb6d6 REF: Explicitly use Assets in Position, Order, Transaction
(Instead of `sid`, which were already usually assets)

Perf packets are unchanged and still emit `sid`: int
2017-04-24 15:41:13 -04:00
Jean Bredeche ec6492c84e TST: New fixture for constant futures data 2017-04-24 14:15:26 -04:00
Jean Bredeche ea1fb05676 ENH: teach BarData about current session's minutes 2017-03-15 13:40:33 -04:00
Jean Bredeche f11b6467ac Rename _attrs_to_check to asdict 2017-02-23 11:32:04 -05:00
Jean Bredeche 0b8fee49d1 ENH: Solidify equality comparisons for SlippageModel classes 2017-01-24 11:28:32 -05:00
Jean Bredeche 7c72a4fc56 BUG: fix a py3 invalid char 2017-01-19 20:43:48 -05:00
Jean Bredeche b5438ac94e ENH: add current_session property to BarData 2017-01-19 16:53:49 -05:00
Jean Bredeche a9c0ce1dde ENH: Small refactoring of fill price check. 2017-01-18 09:22:05 -05:00
Jean Bredeche 87eb87525f PERF: Be smarter about counting the number of minutes across a contiguous bunch of sessions. 2016-09-19 13:25:03 -04:00
Jean Bredeche 1d2e1015c7 PERF: Save up to 75% of the calls to minute_to_session_label
One year NYSE test that buys a lot triggers 492,963 calls to
minute_to_session_label.  Only 98924 ~(390 * 252) make it past the
cache and trigger the heavier computation.
2016-09-16 15:18:50 -04:00
Jean Bredeche eb7e1fa580 ENH: Switching from cachetools.LRUCache to lru-dict's LRU cache.
lru-dict is written in C and seems much more performant.
2016-09-16 11:03:13 -04:00
Jean Bredeche ae0d41af6f ENH: Make reader.get_value raise NoDataOnDate if the date is not in the calendar.
DataPortal now catches the NoDataOnDate exception and returns nan for
OHLC and 0 for V.

Price is still forward filled, unchanged.
2016-09-14 22:21:43 -04:00
Jean Bredeche a5693d0589 MAINT: Add BarReader base class for both minute and session readers 2016-09-14 13:47:12 -04:00
Jean BredecheandGitHub 959baf7fe0 Merge pull request #1408 from quantopian/really-can-i-trade-how-about-now
ENH: Update can_trade to check exchange time
2016-08-31 22:04:06 -04:00
Jean Bredeche fbd3774278 ENH: Update can_trade to check exchange time
BarData now takes the trading calendar as a parameter.

can_trade now checks if the asset’s exchange is open at the current or
next market minute (defined by the given trading calendar).
2016-08-31 21:22:06 -04:00
Jean Bredeche 38ff7e5aa7 ENH: Simplified implementation of FutureChain object (not user-facing API).
No longer auto-updates its internal as-of date, instead requires an explicit
as-of date from the consumer.

Take a static list of contracts (instead of needing an assetfinder).

Instead of the as_of method, the user-facing API now lets you pass in an
offset, which is defined as an integral number of sessions.
2016-08-31 14:44:02 -04:00
Jean Bredeche f570ab0518 ENH: Put a cache in front of future chain lookups
Cache the last 100 rootsymbol/session pairs, since future chains never
change inside a session.
2016-08-31 10:40:11 -04:00
Jean Bredeche 972f05b8f2 ENH: Avoid unnecessary work with missing data. 2016-08-30 17:16:08 -04:00
Jean Bredeche 749c2eea33 ENH: Let event offsets be up to 12 hours. 2016-08-29 09:33:40 -04:00
Jean Bredeche 47dba5b6c9 TST: Some futures-related fixtures cleanup. 2016-08-28 21:33:54 -04:00
Jean Bredeche 7b83cbe820 ENH: Add new parameter to schedule_function that accepts a trading
calendar.
2016-08-28 21:33:42 -04:00
Jean Bredeche 9a2ad260e5 BUG: Temporarily commenting out new can_trade functionality until we sort out downstream dependencies. 2016-08-13 21:46:00 -04:00
Jean Bredeche 7803ec6e46 ENH: Add public API to register calendars by type 2016-08-11 11:27:48 -04:00
Jean Bredeche ec441c55ea BUG: Fix HolidayCalendar init 2016-08-09 09:10:43 -04:00
Jean Bredeche 2a41331da3 BUG: Need to set simulation_dt in before_trading_start
so that log lines in b_t_s have the proper dt.
2016-08-04 11:59:48 -04:00
Jean Bredeche d1077a36c2 TST: Fix broken tests, updated example data 2016-08-04 09:38:18 -04:00
Jean Bredeche 7d4b19a7f0 ENH: Use bundle name as exchange value 2016-08-02 23:21:39 -04:00
Jean Bredeche e6af4e4f1b ENH: made exchange a required parameter to Asset and its subclasses
This required updating a lot of tests.
2016-08-02 23:21:39 -04:00
Jean Bredeche 17e390a379 ENH: Read asset's exchange directly 2016-08-02 23:12:08 -04:00
Jean Bredeche 9ae725b940 ENH: update register_calendar API to take a specific name 2016-08-02 23:12:07 -04:00
Jean Bredeche 97ccb54326 MAINT: PR cleanup 2016-08-02 23:12:07 -04:00
Jean Bredeche 6020752a1d TST: Filter out pandas performance warnings in tests (for now) 2016-08-02 23:12:07 -04:00
Jean Bredeche fd03004d9f TST: Add tests to verify that we check the correct exchange calendar for can_trade
Also added temporary code to skip trying to get the last price of a
Future until we have finished the Futures data layer.
2016-08-02 23:12:07 -04:00
Jean Bredeche 2854c77d55 ENH: Clock now fires a BEFORE_TRADING_START_BAR event.
`AlgorithmSimulator` listens to that event to call the algorithm's
`before_trading_start` method.
2016-08-02 23:12:07 -04:00
Jean Bredeche d8af3fb92e ENH: Augment data.can_trade to check whether the asset's exchange is currently
open.
2016-08-02 23:11:10 -04:00
Jean Bredeche c54ede896c rebuilt in py3/pandas16 2016-08-02 10:43:04 -04:00
Jean Bredeche 33bef2165c rebuilt data in py3 2016-08-02 10:17:19 -04:00
Jean Bredeche a40d205afa ENH: Adding exchange_full to equity asset column 2016-08-02 09:35:08 -04:00
Jean Bredeche 3305933089 DEV: Change daily mode to use last minute of session instead of session itself. 2016-07-27 09:20:24 -04:00
Jean Bredeche 2462929368 Revert "Merge pull request #1340 from quantopian/by-daily-i-mean-minutely"
This reverts commit f4456719b0, reversing
changes made to 4be07e4628.
2016-07-26 16:20:14 -04:00
Jean Bredeche bcb547d5a8 DEV: Change daily mode to use last minute of session instead of session itself. 2016-07-26 12:49:49 -04:00
Jean Bredeche 7418e893a9 BUG: Implement sessions property for PanelDailyBarReader
Also, renamed it from `_sessions_ to `sessions` and defined an
abstractproperty in `DailyBarReader`.
2016-07-24 21:08:11 -04:00
Jean Bredeche 63ef840363 ENH: Verify params passed to get_datetime 2016-07-21 20:42:28 -04:00
Jean Bredeche adea192f02 BLD: Fix some imports. 2016-07-20 09:10:32 -04:00
Jean Bredeche 21aca754ba ENH: Reorganized internal calendar implementation.
Added tests for CME calendar.

Added ICE calendar (and tests).

Added CFE calendar (and tests).
2016-07-19 22:27:34 -04:00
Jean Bredeche 5a0f840917 Clean up daily bar reader/writer to take advantage of new trading calendar. The reader
is backwards-compatible with the previous format.

In USEquityLoader, use dailyreader's trading_calendar.

This is backwards compatible and will fall back to the NYSE calendar if
the reader doesn’t have a calendar specified.
2016-07-15 15:13:57 -04:00
Jean Bredeche 295cfa3846 Fix some mistakes from a previous merge.
No tests failed, which was worrisome.  Will file issues to take a look
later.
2016-07-14 15:40:36 -04:00
Jean Bredeche 3d6fdc0755 Make sure we are passing ints to nth. 2016-07-13 20:40:57 -04:00
Jean Bredeche 4af61d2c39 unused 2016-07-13 09:13:39 -04:00
Jean Bredeche 6fb4923cc7 Re-implemented the Calendar API.
Instead of having separate ExchangeCalendar and TradingSchedule objects, we
now just have TradingCalendar.  The TradingCalendar keeps track of each
session (defined as a contiguous set of minutes between an open and a close).
It's also responsible for handling the grouping logic of any given minute
to its containing session, or the next/previous session if it's not a market
minute for the given calendar.
2016-07-12 13:13:50 -04:00
Jean Bredeche 97d27cf407 Revert "Merge pull request #1226 from quantopian/schedule_function_resilience"
This reverts commit 6079604483, reversing
changes made to c9b5979f45.
2016-06-09 17:19:46 -04:00
Jean Bredeche 1505c62daf REV: Restore old tradingcalendar.py 2016-06-09 13:56:40 -04:00
Jean Bredeche 4b09715052 ENH: better comments 2016-06-09 13:28:43 -04:00
Jean Bredeche b5633aa87c DEV: Fix merge issues. 2016-06-08 14:16:17 -04:00
Jean Bredeche 92600d7695 BLD: get travis to run on PRs into exchange-calendars-v2 2016-06-08 13:34:23 -04:00
Jean Bredeche b1428aaad1 DEV: Cleaned up trading_minute_window
Removed it from ExchangeCalendar.

Fixed TradingSchedule’s implementation to be much faster.  Removed the
`step` parameter.
2016-06-08 13:34:23 -04:00
Jean Bredeche e1e12534c5 ENH: speed up calculation of all trading minutes. 2016-06-08 13:34:23 -04:00
Jean Bredeche 1208aaf1d9 Fix from bad rebase. 2016-06-08 13:34:23 -04:00
Jean Bredeche 39bf1dbd7b DEV: Re-implement commission models to return correct results in the case of multiple fills. 2016-05-23 21:19:06 -04:00
Jean BredecheandJoe Jevnik 6b1cdb6929 DOC: Updated whatsnew with Q2 information. 2016-05-13 16:48:57 -04:00
Jean Bredeche 83d70f4a70 DEV: pull remove-open-orders logic into its own method
And test it.
2016-05-10 20:14:44 -04:00
Jean Bredeche fe5a2a888a PERF: takes ~14% off the time it takes to initialize a MinuteSimulationClock
on my machine, ~350ms -> ~300ms

also, clarifies the public API for MinuteSimulationClock (now, only
__iter__ is exposed)
2016-05-09 10:18:41 -04:00
Jean Bredeche 9c291cfa28 DEV: extract fetcher method for easier downstream use 2016-05-05 13:06:14 -04:00
Jean Bredeche 3f1b0f79f2 DEV: Ensure there are no duplicates in the data passed into TradingAlgorithm.run 2016-05-05 11:54:39 -04:00
Jean Bredeche c404c60d68 BUG: don't allow ordering in before_trading_start 2016-04-26 10:56:36 -04:00
Jean Bredeche d9d0c2f9fc run flake8 first, before tests 2016-04-25 09:56:44 -04:00
Jean Bredeche 02ded435f6 DEV: Don't log an error if we can't find a matching asset/field/day triple in fetcher data 2016-04-25 09:47:18 -04:00
Jean Bredeche 2a981dc725 BUG: Restoring 'broker_order_id' to Order's dict
More long-term fix is coming later, this restores existing downstream
behavior.
2016-04-21 15:18:42 -04:00
Jean Bredeche 9d1e15ddde BUG: Fetcher wasn't working properly in before_trading_start.
We were trying to use the previous day in before_trading_start because
we were looking for the previous market minute, then normalizing it.  That's
no longer the case, as we want to use today's date for fetcher lookups
in before_trading_start.

Also refactored a bit how dataportal determines if a query should be
routed to the fetcher data structures.
2016-04-21 15:09:14 -04:00
Jean Bredeche c323506f40 BUG: we were improperly checking iterable kwargs in BarData 2016-04-21 11:06:46 -04:00
Jean Bredeche 898942a940 BUG: need broker_order_id for downstream code 2016-04-21 08:22:21 -04:00
Jean Bredeche a1f19dca54 Use __slots__ to save memory 2016-04-20 16:59:55 -04:00
Jean Bredeche 5d3dcc3df4 PERF: do work later, when needed. 2016-04-16 21:39:55 -04:00
Jean Bredeche 63bd7589b7 BUG: support passing an empty list to data methods.
Our type checking code was a bit too aggressive.
2016-04-14 11:11:08 -04:00
Jean Bredeche bd36e92556 DEV: minor perf boosts
likely doesn’t move the needle that much
2016-04-13 16:34:04 -04:00
Jean Bredeche d94b7bb9e4 DEV: Don't need to pass method name in. 2016-04-13 16:09:18 -04:00
Jean Bredeche d597a3caaa DEV: combined the decorators
This way the type decorator could have access to the argument
decorator’s keyword list.
2016-04-13 16:01:00 -04:00
Jean Bredeche bd5e2b183d BUG: Properly log partially filled sell orders. 2016-04-12 13:57:50 -04:00
Jean Bredeche f6902f0368 BUG: bar_data.history too limiting on iterable types
In before_trading_start, history needs to call
DataPortal.get_adjustments, and that method wasn’t correctly checking
for iterables.
2016-04-11 14:02:27 -04:00
Jean Bredeche 4203c54417 ENH: make handle_data optional 2016-04-07 09:50:09 -04:00
Jean Bredeche dc01c45dc4 DEV: Apply adjustments for portfolio and account in BTS
completely copied from https://github.com/quantopian/zipline/pull/1104/

All credit goes to Andrew Liang (@lianga888)
2016-04-05 11:37:34 -04:00
Jean Bredeche f48f88861d BUG: chunk sqlite queries into groups of 999. 2015-11-20 13:39:46 -05:00
Jean Bredeche b0b159e12d ENH: vectorize mean algorithm returns calculation
In a sample backtest on my machine, this takes the final risk
calculations down from ~10 seconds to ~0.8 seconds.
2015-10-24 13:18:52 -04:00
Jean Bredeche 2bb87cbd23 DOC: typo fixes 2015-10-06 09:06:05 -04:00
Jean Bredeche ff87fd32e3 BUG: Let logbook figure out how to bind the context manager. 2015-08-06 13:52:58 -04:00
Jean Bredeche 8f1d599fc6 fixing some bugs with splits (ratios and empty positions) 2013-07-24 15:26:15 -07: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