Commit Graph

1874 Commits

Author SHA1 Message Date
Richard Frank 599ff1ad8a MAINT: Ensure the sign of the result is positive 2013-09-23 16:12:17 -04:00
Richard Frank b4836b976e ENH: Restrict limit prices to a penny precision
to account for minimum price variation.

On an order to buy, between .05 below to .95 above a penny, use that penny.
On an order to sell, between .05 above to .95 below a penny, use that penny.
2013-09-23 16:12:17 -04:00
Richard Frank a50fbe9289 MAINT: Some code cleanup in the blotter module 2013-09-23 14:09:59 -04:00
Eddie Hebert 70bcfff289 MAINT: Use DataFrame for more risk metrics.
Use metrics DataFrame for alpha, beta, as previously with sharpe.
2013-09-19 21:55:28 -04:00
Eddie Hebert 29a80c2f98 MAINT: Store sharpe values in a DataFrame instead of list.
Eventually, all cumulative metrics, (alpha, beta, etc.) will be
stored in the same DataFrame

For easier tracking of dt to values during debugging, but should be
some performance gains as well.
2013-09-19 21:55:28 -04:00
Richard Frank e4d298f3a0 MAINT: Factored out adjust_cash method in perf period
with semantics unrelated to dividends/splits
2013-09-19 14:13:50 -04:00
Eddie Hebert 6da62a5a9f MAINT: Refactor setting of indices on risk returns containers.
So that it is easier to add new containers, factor out the creation
of the index.

Also, make the returns frequency a parameter, to make the use of
different frequencies more clear from within the risk metrics object,
rather than hot swapping in the new frequency type via the now
removed `initialize_daily_indices`.
2013-09-19 12:28:41 -04:00
Eddie Hebert 84d20fd551 MAINT: Remove unused values during beta calculation.
The eigen_values, condition_number, algorithm_covariance, and
benchmark variance, which were easy to calculate alongside beta,
since they share the same inputs, but were not passed along to performance.

Remove to trim down the number of risk report members as well as
number of calcluations done.

Can add back in if there is an expressed need for eigen_values etc.,
perhaps in an 'opt-in' type configuration.
2013-09-18 15:47:25 -04:00
Eddie Hebert 4f6de61e77 MAINT: Remove unused member from cumulative risk metrics. 2013-09-18 14:17:27 -04:00
Eddie Hebert 35669ce9e2 MAINT: Remove unused created member from risk report.
Risk report doesn't need system time.
2013-09-16 20:59:22 -04:00
Eddie Hebert ddb541b9b3 MAINT: Change shape of supplemental data to match batch data.
Expect the same shape of data for the supplemental data, to make
working and preparing with the supplemental data consistent with
what is passed to the algorithm.
2013-09-16 11:51:22 -04:00
John Ricklefs 7b8769b3e7 BUG: Fix div-by-zero error in cost_basis adjustment. 2013-08-27 13:24:06 -04:00
Richard Frank a86604933e MAINT: Refactored Position.__init__ to accept starting values
Also fixed extra space in __repr__, and some other cleanup
2013-08-27 11:15:18 -04:00
John Ricklefs 191715a148 ENH: Add support for asynchronous commission events. 2013-08-26 14:18:32 -04:00
Richard Frank 57344ee78a MAINT: Call rollover from __init__ instead of duplicating code 2013-08-23 12:41:59 -04:00
Richard Frank ddb3d64526 MAINT: Record a given order only once per bar
even when there are multiple fills during that bar.
2013-08-23 12:41:59 -04:00
Eddie Hebert 9376556e68 BUG: Use dt as a max value in trading get_index.
Instead of sliding to the next trading day because of the behavior
of `searchsorted`, if dt argument is not a trading day use it as a
max value for corresponding date of the index.

Fixes a bug where if the end of the quarter is calculated with
disregard to trading days, get_index would return the first day
of the next quarter, instead of the last trading day of the intended
quarter.
2013-08-23 12:33:09 -04:00
Eddie Hebert 7d5194ec2c ENH: Include TALib output names in ta transform results.
For TALib functions like MACD that have output names, return a
DataFrame that for which the columns are the output names of the
function.

So that when using a TALib function, the algorithm doesn't need
to know the index position of the desired result, in favor of using
the name of the result.

e.g.

```
macd_result['AAPL'][0]
```

becomes,
```
macd_result['AAPL']['macd']
```

and
```
macd_result['AAPL'][1]
```

becomes,
```
macd_result['AAPL']['macdsignal']
```

Also, change return type of functions that return floats from a
dictionary to a Series, so that the function is always returning a
pandas type.
2013-08-19 16:46:11 -04:00
Eddie Hebert ee8baa2a70 MAINT: Add default import of trading of module.
So that zipline.finance.trading can be accessed after importing
zipline.
2013-08-19 15:21:48 -04:00
Eddie Hebert 16fe23b18f REL: Add license to module init file. 2013-08-19 15:19:15 -04:00
Eddie Hebert 11f9178fd3 TST: Correct annualization of Sharpe in answer key.
Correct the annualization factor from being 1/sqrt(252), since
the annualization was applied to the volatility, by including
252 in the Sharpe's numerator.
2013-08-16 14:26:59 -04:00
Eddie Hebert b9dfda01d2 DOC: Add annotations file for answer key.
Currently, just provide a way to render to some of the data extracted.
Intended to have more thorough documentation of the spreadsheet,
explaining derivation/calculations in each sheet and column.
2013-08-15 15:09:46 -04:00
Eddie Hebert b94d10cfb6 TST: Add answer key indexes for cumulative risk metrics.
Add indexes for Sharpe, returns and other values needed for
reading answers for cumulative risk metrics.

Prepare for unit test and matching change of implementation.
2013-08-15 15:09:44 -04:00
Eddie Hebert f3fd9d598a TST: Add parser for date values from answer key.
Refactor the reading of values from the Excel spreadsheet so that
parsers are configurable by index.

Needed so that we can parse columns that have dates, in addition
to floats as previously.
2013-08-15 15:08:42 -04:00
Eddie Hebert 3732c105b8 TST: Improve answer key interface.
Instead of using the indexes defined in the answer key class
to index back into the answer key object, populate the answers
so that they are available as members of the answer key object.

Update period risk test to use new answer key structure.

Also, remove the rounding behavior from the answer sheet, leaving
the rounding to the consumer of the answer key values, so that
the values can be retrieved from the spreadsheet during answer
key __init__ without knowledge of the decimal point that the calling
code expects.
Correspondingly, change period risk tests to use
np.testing.assert_almost_equal when doing floating point comparison.
2013-08-14 22:41:52 -04:00
Eddie Hebert de4671213b TST: Reduce cumulative risk test to stub.
Remove tests that were a copy of period risk behavior, to prepare
for adding cumulative risk specific tests.
2013-08-14 22:35:57 -04:00
Eddie Hebert ddcddc9351 MAINT: Create separate test risk modules.
As these modules diverge, the tests for each module should
distinguish those changes.
2013-08-14 15:09:01 -04:00
Eddie Hebert 1501e659ce TST: Rename notebook with link to answer key.
Move to a new notebook, the AnswerKeyLink will be for a permalink
to the current version of the answer key, of which the output
won't be too noisy in git.

The annotation notebook will also be kept in source control, but
without output, since the table html output is large.
2013-08-14 14:47:19 -04:00
Eddie Hebert 6f73f68d24 TST: Add output of answer key annotations to notebook.
For more improved viewing experience via nbviewer.ipyhton.org,
include the output of the notebook.

When saving/updating this file, a fresh kernel and evaluation of
the entire notebook should be used so that the cell numbers stay
in order.
2013-08-14 13:12:50 -04:00
Eddie Hebert ead9fc953f TST: Begin annotation notebook for risk answer key.
Read tests.risk.answer_key module into an IPython notebook, to start
a base to which answer key values and explanations can be added and
display without access to Excel.

For now, the notebook just provides the latest download link for
the spreadsheet.
2013-08-14 12:36:47 -04:00
Eddie Hebert bb8a734ae2 TST: Improve cumulative risk metrics sheet in answer key.
Update answer key for cumulative risk:
- Annualization of Sharpe
- Use 10 year period
- Use of daily returns vectors instead of compounded return scalar.

No tests or risk module code are currently reading off of this sheet,
but developing it ahead of work in risk module so that the sheet can
be examined and vetted.
2013-08-14 11:34:48 -04:00
Eddie Hebert cbac1bd6cb TST: Update answer key checksums on upload.
Automate the updating of the answer key when a new key is uploaded
to S3, so that keeping the latest value in sync is more likely.
2013-08-14 11:30:15 -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
John Ricklefs 36fe790624 BUG: Update market_open value for performance when updating market_close. 2013-08-13 09:23:28 -04:00
Eddie Hebert faee91876f MAINT: Add formatting for printing of answer key DataIndex.
Output format of the range compatible with Excel, so that it
can be copy and pasted back into the spread sheet for easier
corroboration.
2013-08-09 17:32:17 -04:00
Thomas Wiecki b89886297f STY: autopep8 codebase. 2013-08-08 16:46:44 -04:00
Thomas Wiecki a43a122829 TST: Forgot to add order method test algos. 2013-08-08 16:37:31 -04:00
Thomas Wiecki e590da75fb BUG: Typo in test_batchtransfom. 2013-08-08 16:01:22 -04:00
Thomas Wiecki 7a65f4579e Pulled in PR 137 to add new order methods. 2013-08-08 15:57:24 -04:00
Thomas Wiecki b1fdebfb7c TST: Added tests for new order methods. 2013-08-08 15:55:08 -04:00
Jeremiah Lowin 48486c9814 ENH: New order methods. 2013-08-08 15:54:59 -04:00
Richard Frank c64a585e54 BUG: TransactionVolumeExceedsOrder was referenced but not defined 2013-08-08 13:21:16 -04:00
Ben McCann eae5803910 BUG: Calculate benchmark returns for first day
Before we were setting benchmark returns on the first day
to 0. This commit changes this by calculating the benchmark
return from open to close.

According to @eherbert this is also what the answer key does.
2013-08-08 12:20:04 -04:00
Thomas Wiecki 9694dfbbfe DOC: Removed mathjax from docs. Closes #73. 2013-08-08 11:22:31 -04:00
Thomas Wiecki 43889f4a16 BUG: version tag should be a string. 2013-08-08 11:22:03 -04:00
Thomas Wiecki 2026937dc9 BLD: Add version to zipline, bump to 0.5.11.dev
zipline.__version__ is now present. Closes #94.

Moreover, git master should have a .dev version string according
to convention. Releases then get the .dev label removed.
2013-08-08 11:12:10 -04:00
Thomas Wiecki 433c138edf DOC: Updated example in readme and added python-dateutils dependency. Closes #139. 2013-08-08 11:08:48 -04:00
Thomas Wiecki f75d781b02 DOC: Fix talib sphinx warnings. Closes #171. 2013-08-08 10:50:00 -04:00
Eddie Hebert c31bbee424 MAINT: Create separate page in risk answer key for period returns.
Copy the `Sim` sheet to `Sim Cumulative` as well as rename it to
`Sim Period`.

Update the answer key module accordingly.
2013-08-07 17:16:01 -04:00
Eddie Hebert 5b2a23ddd0 MAINT: Break period and cumulative risk metrics into submodules.
In anticipation of changing the sharpe, beta, et al. calculations
dependent on whether the period returns or the overall returns
are being calculated.
2013-08-06 17:49:19 -04:00