From 7a7833a540e0efb79f4f2b9d5da3d46a558454d9 Mon Sep 17 00:00:00 2001 From: fawce Date: Fri, 30 Mar 2012 17:48:05 -0400 Subject: [PATCH] fixed missing fields, added a new random source option to test zipline (still buggy). --- zipline/finance/risk.py | 2 ++ zipline/lines.py | 21 ++++++++++++++++----- zipline/test/factory.py | 15 ++++++++++++++- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/zipline/finance/risk.py b/zipline/finance/risk.py index 4a335990..06a683b4 100644 --- a/zipline/finance/risk.py +++ b/zipline/finance/risk.py @@ -128,6 +128,8 @@ class RiskMetrics(): 'benchmark_volatility' : self.benchmark_volatility, 'algo_volatility' : self.algorithm_volatility, 'treasury_period_return': self.treasury_period_return, + 'algorithm_period_return' : self.algorithm_period_returns, + 'benchmark_period_return' : self.benchmark_period_returns, 'sharpe' : self.sharpe, 'beta' : self.beta, 'alpha' : self.alpha, diff --git a/zipline/lines.py b/zipline/lines.py index 50f3b787..824f00eb 100644 --- a/zipline/lines.py +++ b/zipline/lines.py @@ -191,6 +191,10 @@ class SimulatedTrading(object): :py:class:`zipline.simulator.Simulator` - algorithm - optional parameter providing an algorithm. defaults to :py:class:`zipline.test.algorithms.TestAlgorithm` + - random - optional parameter to request random trades. if present + :py:class:`zipline.sources.RandomEquityTrades` is the source. If + not :py:class:`ziplien.sources.SpecificEquityTrades` is the + source """ assert isinstance(config, dict) @@ -225,11 +229,18 @@ class SimulatedTrading(object): #------------------- sids = [sid] #------------------- - trade_source = factory.create_daily_trade_source( - sids, - trade_count, - trading_environment - ) + if config.has_key('random'): + trade_source = factory.create_random_trade_source( + sids, + trade_count, + trading_environment + ) + else: + trade_source = factory.create_daily_trade_source( + sids, + trade_count, + trading_environment + ) #------------------- # Create the Algo #------------------- diff --git a/zipline/test/factory.py b/zipline/test/factory.py index 1bfddc07..406ae74b 100644 --- a/zipline/test/factory.py +++ b/zipline/test/factory.py @@ -9,7 +9,7 @@ from datetime import datetime, timedelta import zipline.util as qutil import zipline.finance.risk as risk import zipline.protocol as zp -from zipline.sources import SpecificEquityTrades +from zipline.sources import SpecificEquityTrades, RandomEquityTrades from zipline.finance.trading import TradingEnvironment def load_market_data(): @@ -152,6 +152,19 @@ def create_returns_from_list(returns, start, trading_calendar): return test_range +def create_random_trade_source(sid, trade_count, trading_environment): + # create the source + source = RandomEquityTrades(sid, "rand-"+str(sid), trade_count) + + # make the period_end of trading_environment match + cur = trading_environment.period_start + one_day = timedelta(days = 1) + for i in range(trade_count + 2): + cur = get_next_trading_dt(cur, one_day, trading_environment) + trading_environment.period_end = cur + + return source + def create_daily_trade_source(sids, trade_count, trading_environment): """ creates trade_count trades for each sid in sids list.