Commit Graph

116 Commits

Author SHA1 Message Date
dmichalowicz b907b2557e TST: Equity daily data test fixture was using wrong sids 2017-03-15 13:16:45 -04:00
Ana Ruelas 6929427cf5 ENH: Make invalid data behavior optional 2017-03-01 10:41:30 -05:00
Andrew Daniels 296307a632 TST: Adds TestingSlippage slippage model (#1679)
Allows specifying a constant number of shares filled per tick.

Also adds the WithConstantEquityMinuteBarData fixture, relocated from
internal repo.
2017-02-09 08:56:15 -05:00
Andrew Liang 893671339c Merge pull request #1676 from quantopian/param_sapce
TEST: Allow parameter_space to work on repeated calls of test
2017-02-08 18:39:51 -05:00
Andrew Liang 97f537f35c TEST: Allow parameter_space to work on repeated calls of test
If we have a test that's being called more than once (i.e. two
test cases, both subclasses of the same base test case, with
different setup but calling the same test), allow the subsequent
calls to re-consume the same params
2017-02-08 18:19:14 -05:00
Joe Jevnik 50b7768e58 TST: assert_equal dispatch for tuples 2017-02-01 19:42:10 -05:00
Scott Sanderson 2fb90b4a25 Merge pull request #1667 from quantopian/pricing-fixture-cleanups
Pricing fixture cleanups
2017-01-31 10:32:17 -05:00
Scott Sanderson c092e4db4d DOC: Update out of date docstring. 2017-01-30 13:33:21 -05:00
Scott Sanderson b2bacec241 ENH: Align daily/minute bar lookbacks by default.
When EQUITY_DAILY_BAR_SOURCE_FROM_MINUTE is set, use
EQUITY_MINUTE_BAR_LOOKBACK_DAYS as the default value for
EQUITY_DAILY_BAR_LOOKBACK_DAYS.

Without this, trying to run a minutely backtest in a test setting only
EQUITY_MINUTE_BAR_LOOKBACK_DAYS and EQUITY_DAILY_BAR_SOURCE_FROM_MINUTE
fails because the benchmark creation process makes a daily history call
for the entire period of the backtest, which then fails because the
equity daily bar calendar is shorter than the equity minute bar
calendar.

I can't imagine a circumstance in which you'd want the daily bar
calendar to be shorter than the minute bar calendar when you're sourcing
daily bars from minutes, so this change makes that the default behavior
unless it's explicitly overridden.
2017-01-30 13:28:00 -05:00
vikram-narayan 47f6e62bc6 MAINT: pass args, kwargs to add_class_callback 2017-01-27 18:19:23 -05:00
Scott Sanderson 790f307485 Merge pull request #1645 from quantopian/nitpick-some-more-why-dont-you
STY: Simplify style in conditional.
2017-01-12 22:26:21 -05:00
Scott Sanderson bb1b3e39e7 STY: Simplify style in conditional. 2017-01-12 22:03:35 -05:00
Eddie Hebert 9f60524e14 STY: Use def statements instead of lambda assignment. (#1639)
From pep-0008:

```
Always use a def statement instead of an assignment statement that binds a
lambda expression directly to an identifier.

Yes:

def f(x): return 2*x
No:

f = lambda x: 2*x

The first form means that the name of the resulting function object is
specifically 'f' instead of the generic '<lambda>'. This is more useful for
tracebacks and string representations in general. The use of the assignment
statement eliminates the sole benefit a lambda expression can offer over an
explicit def statement (i.e. that it can be embedded inside a larger expression)
```
2017-01-06 13:39:07 -05:00
Andrew Daniels 29aed9ea97 TST: Populate equity_supplementary_mappings from WithAssetFinder (#1622) 2016-12-22 11:07:30 -05:00
Richard Frank 581e827208 TST: Ensure batch_order_target_percent orders like order_target_percent 2016-12-20 19:27:28 -05:00
Richard Frank 1cb85b70f2 DOC: Updated return types in docstrings 2016-12-20 19:27:28 -05:00
Eddie Hebert 117d228fc2 ENH: Allow future chains to only use certain delivery months.
To support contracts such as `PL` which should roll from F->J->N->V, add the
ability to pass a predicate function to the ordered contract chain contstrution
which returns `True` if the contract is allowed in the chain.
2016-12-01 13:26:07 -05:00
Eddie Hebert abc4f55f64 ENH: Allow configurable history prefetch length.
To support using a `DataPortal` and `HistoryLoader` in a notebook, allow
the prefetch length to be configurable, so that it can be set to 0.
Unlike backtesting where the prefetch is useful for repeated history
windows viewed from datetimes which are monotonically increasing by a
small amount, the notebook usage of history windows needs only to
retrieve the exact data needed for the window specified.

This patch also fixes some boundary conditions related to rolls and
adjustments which were uncovered by querying for the adjustments with an
end date near the end of the window.
2016-11-04 13:30:30 -04:00
Joe Jevnik d07f133579 STY: remove unused imports and method, clean up docs 2016-10-28 15:04:18 -04:00
Joe Jevnik bac7af580b TST: add more dispatches 2016-10-28 15:04:18 -04:00
Scott Sanderson 8ccef7b9ab DOC: Comment on outdated code. 2016-10-28 14:06:35 -04:00
Eddie Hebert a4205a0500 PERF: Speedup minute to session sampling.
The minute to session sampling reading was creating two DataFrame
objects, the first to hold the minute data, and then a second returned
by the `DataFrame.groupby` to sample down to sessions.

Instead use the arrays returned by the minute readers `load_raw_arrays`
and implement sampling logic which takes advantage that the minutes
being passed start with the first minute of the first session and end
with the last minute of the last session.

On my machine this takes the tests in `test/test_continuous_futures`
from ~4.0 to about ~0.1 seconds.
2016-10-24 09:59:22 -04:00
Eddie Hebert 73b03de63e ENH: Add history for continuous futures.
Enable unadjusted history for continuous futures.

The history array is filled by the values for the underlying contracts,
where the contract used changes based on rolls.

e.g., if a `1d` history window was over the range
`2016-01-20` -> `2016-02-29` with contracts with a suffix of `F16` that
rolls at the beginning of the session on `2016-01-26`, `G16` on
`2016-02-26`, and `H16` on `2016-03-26`. The `2016-01-20` ->
`2016-01-25` portion would use the values for `F16', the `2016-01-26` ->
`2016-02-25` portion would use `G16` and the `2016-02-26` ->
`2016-02-29` portion would use `H16`.

Using the same contracts as above, a `1m` history window over the range
(using a timezone of US/Eastern) `2016-01-25 4:00PM` -> `2016-01-25
7:00PM` would fill the `4:00PM` -> `6:00PM` portion with data for `F16`
and the `6:01PM` -> `7:00PM` portion with data for `G16`, since the
beginning of the `2016-01-26` session is `2016-01-25 6:01PM`.

Supports `1d` and `1m`.

Also adds the `sid` field to `history` to assist in showing the active
contract at each dt in the window.
2016-10-16 22:40:08 -04:00
Scott Sanderson dc18fa3b45 BUG: Allow partials in assert_equal. 2016-10-12 19:06:56 -04:00
Scott Sanderson bd83e250af Merge pull request #1534 from quantopian/allow-kwargs-to-assert-equal-for-pandas-stuff
BUG/TEST: Forward kwargs to assert_series_equal.
2016-10-12 14:16:07 -04:00
Scott Sanderson 9720803d03 BUG/TEST: Forward kwargs to assert_series_equal. 2016-10-11 21:29:41 -04:00
Joe Jevnik 8e26368d4e TST: Adds assert_equal dispatch for slices 2016-10-07 18:57:05 -04:00
Andrew Daniels eba02da271 ENH: Adds last_available_{session, minute} args to DataPortal (#1528)
This allows optionally setting the last available dts in the DataPortal
explicitly. If these args aren't provided, we fall back to inferring
these from the underlying readers, which was the previous behavior.
2016-10-06 20:46:54 -04:00
Andrew Liang 3b5031a829 MAINT: Rename restrictions.py to asset_restrictions.py
For clarity as to what sort of restrictions these are
2016-09-30 16:35:24 -04:00
Scott Sanderson d47144dfb8 DOC: Rename NoopRestrictions to NoRestrictions. 2016-09-30 16:35:23 -04:00
Andrew Liang 5e276d0e72 TEST: Modify tests for extra BarData parameter
Introducing a WithCreateBarData fixture which allows for the
creation of a BarData using only the `simulation_dt_func` and
`restrictions` params. Assumes that each suite uses the same
`data_portal`, `data_frequency` and `trading_calendar`
2016-09-29 10:11:15 -04:00
Scott Sanderson 599d6c59ef MAINT: Fix warnings from numpy on NaT comparison. 2016-09-20 17:12:07 -04:00
Scott Sanderson 874d2b51f1 MAINT: Pass float explicitly to numpy. 2016-09-20 17:12:07 -04:00
Scott Sanderson becf897da9 MAINT: Fix failures/warnings in test_api_shim.py
- Fixes a warning on indexing with a float that ultimately came from
  pd.Timedelta.total_seconds().  Adds ``timedelta_to_integral_seconds``
  and ``timedelta_to_integral_minutes()`` functions and replaces various
  usages of ``int(delta.total_seconds())`` with them.

- Fixes a warnings triggered in ``_create_daily_stats`` from
  passing tz-aware datetimes to np.datetime64.
2016-09-20 17:12:07 -04:00
Joe Jevnik 1714b2d03a MAINT: remove __getitem__ as alias of __getattr__ 2016-08-31 12:38:20 -04:00
Jean Bredeche 47dba5b6c9 TST: Some futures-related fixtures cleanup. 2016-08-28 21:33:54 -04:00
Eddie Hebert 71a34bf7ac MAINT: Standardize reader get value methods.
The daily/session bar reader's `spot_price` took the same parameters and
returned the same kind of output as the minute bar reader's `get_value`.

Standardize on one method to make a common interface, which may be
formally factored out in a later patch; to help enable writing reader
implementations or mixins which can be agnostic to the bar frequency.
2016-08-24 12:46:36 -04:00
Eddie Hebert 0fb3d9033a TST: Use equity calendar when writing equity data
Use the equity calendar to write equity data, even when the simulation
calendar has been set to a different calendar.

Discovered when writing a test that used a calendar for future asset
data, but also wrote equity data.
2016-08-23 11:11:32 -04:00
Andrew Daniels 37e6a48e99 ENH: Pass calendar instance to BcolzMinuteBarWriter (#1406)
* First pass.

* Improvements and fixes

- Update usages of BcolzMinuteBarWriter
- Updates with rebuilt example data
- Expose calendar from BcolzMinuteBarMetadata instead of calendar_name
- Keep market_opens and market_closes in metadata for compatibility

* Store start_session and end_session in minute bcolz metadata

- start_session replaces first_trading_day
- Add end_session to limit to correct days

* For last_available_dt, get last close from calendar to maintain tz

* Bumps version and handles earlier versionson read

* Rebuilt example data on python 3

* Indicate metadata fields that are deprecated
2016-08-18 15:41:26 -04:00
Eddie Hebert f8ff0b3645 Merge pull request #1405 from quantopian/resample-session-from-minute
ENH: Session bar reader resampled from minute data
2016-08-18 13:26:24 -04:00
Eddie Hebert 4a017ef63b ENH: Session bar reader resampled from minute data
Implement a `SessionBarReader` which uses a minute bar reader as a
backing source, resampling the minute bars into the box around the
corresponding session data.

Also, add future/CME test cases to resample suite.
2016-08-18 11:37:42 -04:00
Scott Sanderson 5e7e56176f BUG: Fix broken fixture resolution.
Make sure that WithDefaultDateBounds is last in everyone's mro().
2016-08-17 16:52:09 -04:00
Scott Sanderson 7fc0dd6d97 MAINT: Use numpy_utils.as_column in more places. 2016-08-17 16:52:09 -04:00
Scott Sanderson c0005e22ad MAINT: Clean up WithTradingSessions.
- Add WithDefaultDateBounds, since we use alias('START_DATE') and
  alias ('END_DATE').

- Fix copypasta in assertion.
2016-08-17 16:52:09 -04:00
Scott Sanderson 7bc8603e22 MAINT: Remove double import. 2016-08-17 16:52:09 -04:00
Eddie Hebert 0ebffbaeb9 Merge pull request #1388 from quantopian/future-pricing-cleanup
Cleanup some Futures related modules and values.
2016-08-11 14:21:53 -04:00
Eddie Hebert 294c716112 MAINT: Define futures minutes per day.
Define the commonly used minutes per day for futures data as a module
level value.
2016-08-11 12:32:17 -04:00
Joe Jevnik ea80b8892c TST: Adds dispatch for assert_equal(set, set) 2016-08-10 15:32:36 -04:00
Eddie Hebert 37f4a5a56b TST: Add tests for Future asset last sale price.
In support, also add future asset minute bar data and reader fixtures.
2016-08-09 14:10:57 -04:00
Eddie Hebert f4891b0a08 TST: Key trading calendar fixture with Asset types
Instead of using strings of 'equities' and 'futures', use the Asset
subclasses to key the trading calendar fixtures.
2016-08-08 03:49:48 -04:00