MIN: Override annualizer if set. New handling of granularity (no default arg anymore). Renamed minutely to minute.

This commit is contained in:
Thomas Wiecki
2012-12-24 12:55:52 -05:00
parent 3ca8029766
commit 8346155f0e
2 changed files with 15 additions and 15 deletions
+4 -4
View File
@@ -95,11 +95,11 @@ class TestTransformAlgorithm(TestCase):
self.assertEqual(algo.granularity, 'daily')
self.assertEqual(algo.annualizer, 250)
algo = TestRegisterTransformAlgorithm(granularity='minutely')
self.assertEqual(algo.granularity, 'minutely')
algo = TestRegisterTransformAlgorithm(granularity='minute')
self.assertEqual(algo.granularity, 'minute')
self.assertEqual(algo.annualizer, 250 * 6 * 60)
algo = TestRegisterTransformAlgorithm(granularity='minutely',
algo = TestRegisterTransformAlgorithm(granularity='minute',
annualizer=10)
self.assertEqual(algo.granularity, 'minutely')
self.assertEqual(algo.granularity, 'minute')
self.assertEqual(algo.annualizer, 10)
+11 -11
View File
@@ -45,7 +45,7 @@ DEFAULT_CAPITAL_BASE = float("1.0e5")
ANNUALIZER = {'daily': 250,
'hourly': 250 * 6,
'minutely': 250 * 6 * 60}
'minute': 250 * 6 * 60}
class TradingAlgorithm(object):
@@ -96,9 +96,14 @@ class TradingAlgorithm(object):
self.slippage = VolumeShareSlippage()
self.commission = PerShare()
self.granularity = kwargs.get('granularity', 'daily')
# annualizer is used for e.g. risk calculations
self.annualizer = kwargs.get('annualizer', None)
if 'granularity' in kwargs:
self.set_granularity(kwargs.pop('granularity'))
else:
self.granularity = None
# Override annualizer if set
if 'annualizer' in kwargs:
self.annualizer = kwargs['annualizer']
# set the capital base
self.capital_base = kwargs.get('capital_base', DEFAULT_CAPITAL_BASE)
@@ -110,12 +115,6 @@ class TradingAlgorithm(object):
# call to user-defined constructor method
self.initialize(*args, **kwargs)
# set annualizer according to granularity
# this is happening after initialize because granularity
# could be set in there.
if self.annualizer is None:
self.annualizer = ANNUALIZER[self.granularity]
def _create_generator(self, environment):
"""
Create a basic generator setup using the sources and
@@ -318,6 +317,7 @@ class TradingAlgorithm(object):
assert isinstance(transforms, list)
self.transforms = transforms
def set_granuliarity(self, granularity):
def set_granularity(self, granularity):
assert granularity in ('daily', 'minute')
self.granularity = granularity
self.annualizer = ANNUALIZER[self.granularity]