fixes and tests for result streaming.

This commit is contained in:
fawce
2012-04-03 22:42:53 -04:00
parent 9073d19780
commit 78cceaa649
5 changed files with 42 additions and 6 deletions
+3 -2
View File
@@ -144,8 +144,9 @@ class PerformanceTracker():
self.market_open = self.period_start
self.market_close = self.market_open + self.trading_day
self.progress = 0.0
self.total_days = (self.period_end - self.period_start).days
self.day_count = 0
self.total_days = self.trading_environment.days_in_period
# one indexed so that we reach 100%
self.day_count = 0.0
self.cumulative_capital_used = 0.0
self.max_capital_used = 0.0
self.capital_base = self.trading_environment.capital_base
+19
View File
@@ -366,6 +366,7 @@ class TradingEnvironment(object):
self.period_start = period_start
self.period_end = period_end
self.capital_base = capital_base
self.period_trading_days = None
for bm in benchmark_returns:
self.trading_days.append(bm.date)
@@ -378,6 +379,24 @@ class TradingEnvironment(object):
day=test_date.day,
tzinfo=pytz.utc
)
@property
def days_in_period(self):
"""return the number of trading days within the period [start, end)"""
assert(self.period_start != None)
assert(self.period_end != None)
if self.period_trading_days == None:
self.period_trading_days = []
for date in self.trading_days:
if date > self.period_end:
break
if date >= self.period_start:
self.period_trading_days.append(date)
return len(self.period_trading_days)
def is_trading_day(self, test_date):
dt = self.normalize_date(test_date)
+4 -2
View File
@@ -676,8 +676,10 @@ def PERF_UNFRAME(msg):
# -----------------------
def EPOCH(some_date):
return time.mktime(some_date.timetuple())
seconds = time.mktime(some_date.timetuple())
ms = seconds * 1000
return ms
def PACK_DATE(event):
"""
Packs the datetime property of event into msgpack'able longs.
+2 -2
View File
@@ -39,7 +39,7 @@ class RandomEquityTrades(TradeDataSource):
self.incr = 0
self.sid = sid
self.trade_start = datetime.datetime.now().replace(tzinfo=pytz.utc)
self.minute = datetime.timedelta(minutes=1)
self.day = datetime.timedelta(days=1)
self.price = random.uniform(5.0, 50.0)
@@ -59,7 +59,7 @@ class RandomEquityTrades(TradeDataSource):
"sid" : self.sid,
"price" : self.price,
"volume" : volume,
"dt" : self.trade_start + (self.minute * self.incr),
"dt" : self.trade_start + (self.day * self.incr),
})
self.send(event)
self.incr += 1
+14
View File
@@ -37,6 +37,20 @@ class FinanceTestCase(TestCase):
'sid':133
}
@timed(DEFAULT_TIMEOUT)
def test_factory(self):
trading_environment = factory.create_trading_environment()
trade_source = factory.create_daily_trade_source(
[133],
200,
trading_environment
)
prev = None
for trade in trade_source.event_list:
if prev:
self.assertTrue(trade.dt > prev.dt)
prev = trade
@timed(DEFAULT_TIMEOUT)
def test_orders(self):