mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-07 11:20:19 +08:00
TradingEnvironment allows the specification of a benchmark index and a local timezone for the exchange. This commit adds tests to verify the TradingEnvironment properly handles London Stock Exchange index, FTSE.
- added LSE reference rrules calendar (thanks to Edward Johns)
- added tests to verify LSE environment matches rrule calendar
- added a test to verify global environment behavior can be set.
- moved DailyReturn class to trading to eliminate circularity from
risk <-> trading.
- updated TradingEnvironment to be a context manager. This allows users
to run algorithms in individually isolated environments in one python
process. This is useful for managing multiple algorithms in a single
ipython notebook.
- added comments to explain behavior and useage of the global environment
This commit is contained in:
@@ -18,8 +18,9 @@ from unittest import TestCase
|
||||
from nose.tools import timed
|
||||
|
||||
from datetime import datetime
|
||||
import pytz
|
||||
|
||||
import pytz
|
||||
import zipline.finance.trading as trading
|
||||
from zipline.algorithm import TradingAlgorithm
|
||||
from zipline.finance import slippage
|
||||
from zipline.utils import factory
|
||||
@@ -78,6 +79,35 @@ class AlgorithmGeneratorTestCase(TestCase):
|
||||
def tearDown(self):
|
||||
teardown_logger(self)
|
||||
|
||||
def test_lse_algorithm(self):
|
||||
|
||||
lse = trading.TradingEnvironment(
|
||||
bm_symbol='^FTSE',
|
||||
exchange_tz='Europe/London'
|
||||
)
|
||||
|
||||
with lse:
|
||||
|
||||
sim_params = factory.create_simulation_parameters(
|
||||
start=datetime(2012, 5, 1, tzinfo=pytz.utc),
|
||||
end=datetime(2012, 6, 30, tzinfo=pytz.utc)
|
||||
)
|
||||
algo = TestAlgo(self, sim_params=sim_params)
|
||||
trade_source = factory.create_daily_trade_source(
|
||||
[8229],
|
||||
200,
|
||||
sim_params
|
||||
)
|
||||
algo.set_sources([trade_source])
|
||||
|
||||
gen = algo.get_generator()
|
||||
results = list(gen)
|
||||
self.assertEqual(len(results), 42)
|
||||
# May 7, 2012 was an LSE holiday, confirm the 4th trading
|
||||
# day was May 8.
|
||||
self.assertEqual(results[4]['daily_perf']['period_open'],
|
||||
datetime(2012, 5, 8, 8, 30, tzinfo=pytz.utc))
|
||||
|
||||
@timed(DEFAULT_TIMEOUT)
|
||||
def test_generator_dates(self):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user