diff --git a/tests/test_finance.py b/tests/test_finance.py index 0aa14bba..fe4f2a4a 100644 --- a/tests/test_finance.py +++ b/tests/test_finance.py @@ -17,7 +17,7 @@ from zipline.finance.trading import TradingEnvironment from zipline.simulator import AddressAllocator from zipline.lines import SimulatedTrading from zipline.finance.performance import PerformanceTracker -from zipline.utils.protocol_utils import namedict +from zipline.utils.protocol_utils import ndict from zipline.finance.trading import TransactionSimulator, SIMULATION_STYLE DEFAULT_TIMEOUT = 15 # seconds @@ -434,7 +434,7 @@ class FinanceTestCase(TestCase): order_date = start_date for i in xrange(order_count): - order = namedict( + order = ndict( { 'sid' : sid, 'amount' : order_amount * alternator**i, diff --git a/tests/test_ndict.py b/tests/test_ndict.py index 2fac4f56..6568e008 100644 --- a/tests/test_ndict.py +++ b/tests/test_ndict.py @@ -1,4 +1,4 @@ -from zipline.utils.protocol_utils import ndict, namedict +from zipline.utils.protocol_utils import ndict def test_ndict(): nd = ndict({}) diff --git a/tests/test_perf_tracking.py b/tests/test_perf_tracking.py index 6e958014..e9f5b4d2 100644 --- a/tests/test_perf_tracking.py +++ b/tests/test_perf_tracking.py @@ -547,7 +547,7 @@ shares in position" #create a transaction for all but #first trade in each sid, to simulate None transaction if(event.dt != self.trading_environment.period_start): - txn = zp.namedict({ + txn = zp.ndict({ 'sid' : event.sid, 'amount' : -25, 'dt' : event.dt, diff --git a/tests/test_protocol.py b/tests/test_protocol.py index 2250c4c0..d26c2feb 100644 --- a/tests/test_protocol.py +++ b/tests/test_protocol.py @@ -45,7 +45,7 @@ class ProtocolTestCase(TestCase): for trade in trades: #simulate data source sending frame - msg = zp.DATASOURCE_FRAME(zp.namedict(trade)) + msg = zp.DATASOURCE_FRAME(zp.ndict(trade)) #feed unpacking frame recovered_trade = zp.DATASOURCE_UNFRAME(msg) #feed sending frame @@ -74,13 +74,13 @@ class ProtocolTestCase(TestCase): self.assertTrue(event.helloworld == 2345.6) event.delete('helloworld') - self.assertEqual(zp.namedict(trade), event) + self.assertEqual(zp.ndict(trade), event) @timed(DEFAULT_TIMEOUT) def test_order_protocol(self): #client places an order now = datetime.utcnow().replace(tzinfo=pytz.utc) - order = zp.namedict({ + order = zp.ndict({ 'dt':now, 'sid':133, 'amount':100 @@ -94,7 +94,7 @@ class ProtocolTestCase(TestCase): self.assertEqual(order.dt, now) #order datasource datasource frames the order - order_event = zp.namedict({ + order_event = zp.ndict({ "sid" : order.sid, "amount" : order.amount, "dt" : order.dt, @@ -111,7 +111,7 @@ class ProtocolTestCase(TestCase): self.assertEqual(now, recovered_order.dt) #create a transaction from the order - txn = zp.namedict({ + txn = zp.ndict({ 'sid' : recovered_order.sid, 'amount' : recovered_order.amount, 'dt' : recovered_order.dt, diff --git a/zipline/__init__.py b/zipline/__init__.py index 4a30d7cc..23bcca40 100644 --- a/zipline/__init__.py +++ b/zipline/__init__.py @@ -9,13 +9,12 @@ import protocol # namespace from core.monitor import Controller from lines import SimulatedTrading from core.host import ComponentHost -from utils.protocol_utils import namedict, ndict +from utils.protocol_utils import ndict __all__ = [ SimulatedTrading, Controller, ComponentHost, protocol, - namedict, ndict ] diff --git a/zipline/components/datasource.py b/zipline/components/datasource.py index 27539b3e..8c14022b 100644 --- a/zipline/components/datasource.py +++ b/zipline/components/datasource.py @@ -50,7 +50,7 @@ class DataSource(Component): """ Emit data. """ - assert isinstance(event, zp.namedict) + assert isinstance(event, zp.ndict) event['source_id'] = self.get_id event['type'] = self.get_type diff --git a/zipline/components/merge.py b/zipline/components/merge.py index 65f4c431..83694311 100644 --- a/zipline/components/merge.py +++ b/zipline/components/merge.py @@ -57,7 +57,7 @@ class Merge(Feed): def append(self, event): """ - :param event: a namedict with one entry. key is the name of the + :param event: a ndict with one entry. key is the name of the transform, value is the transformed value. Add an event to the buffer for the source specified by source_id. diff --git a/zipline/finance/performance.py b/zipline/finance/performance.py index 78f9708a..bab37e7c 100644 --- a/zipline/finance/performance.py +++ b/zipline/finance/performance.py @@ -40,8 +40,8 @@ Performance Tracking | | through all the events delivered to this tracker. | | | For details look at the comments for | | | :py:meth:`zipline.finance.risk.RiskMetrics.to_dict`| - +-----------------+----------------------------------------------------+ - | exceeded_max_ | True if the simulation was stopped because single | + +-----------------+----------------------------------------------------+ + | exceeded_max_ | True if the simulation was stopped because single | | loss | day losses exceeded the max_drawdown stipulated in | | | trading_environment. | +-----------------+----------------------------------------------------+ @@ -191,7 +191,7 @@ class PerformanceTracker(): ) def get_portfolio(self): - return self.cumulative_performance.to_namedict() + return self.cumulative_performance.to_ndict() def publish_to(self, zmq_socket, context=None): """ @@ -231,7 +231,7 @@ class PerformanceTracker(): if self.exceeded_max_loss: return - assert isinstance(event, zp.namedict) + assert isinstance(event, zp.ndict) self.event_count += 1 if(event.dt >= self.market_close): @@ -521,18 +521,18 @@ class PerformancePeriod(): return rval - def to_namedict(self): + def to_ndict(self): """ - Creates a namedict representing the state of this perfomance period. + Creates a ndict representing the state of this perfomance period. Properties are the same as the results of to_dict. See header comments for a detailed description. """ - positions = self.get_positions(namedicted=True) + positions = self.get_positions(ndicted=True) - positions = zp.namedict(positions) + positions = zp.ndict(positions) - return zp.namedict({ + return zp.ndict({ 'ending_value' : self.ending_value, 'capital_used' : self.period_capital_used, 'starting_value' : self.starting_value, @@ -545,12 +545,12 @@ class PerformancePeriod(): 'transactions' : self.processed_transactions }) - def get_positions(self, namedicted=False): + def get_positions(self, ndicted=False): positions = {} for sid, pos in self.positions.iteritems(): cur = pos.to_dict() - if namedicted: - positions[sid] = zp.namedict(cur) + if ndicted: + positions[sid] = zp.ndicted(cur) else: positions[sid] = cur diff --git a/zipline/finance/sources.py b/zipline/finance/sources.py index bd6ea035..3cbc2676 100644 --- a/zipline/finance/sources.py +++ b/zipline/finance/sources.py @@ -6,7 +6,7 @@ import random import pytz from zipline.components import DataSource -from zipline.utils import ndict, namedict +from zipline.utils import ndict import zipline.protocol as zp @@ -24,7 +24,7 @@ class TradeDataSource(DataSource): if event.sid in self.filter['SID']: message = zp.DATASOURCE_FRAME(event) else: - blank = namedict({ + blank = ndict({ "type" : zp.DATASOURCE_TYPE.TRADE, "source_id" : self.get_id }) @@ -59,7 +59,7 @@ class RandomEquityTrades(TradeDataSource): self.price = self.price + random.uniform(-0.05, 0.05) volume = random.randrange(100,10000,100) - event = zp.namedict({ + event = zp.ndict({ "type" : zp.DATASOURCE_TYPE.TRADE, "sid" : self.sid, "price" : self.price, @@ -100,5 +100,5 @@ class SpecificEquityTrades(TradeDataSource): return event = self.event_list.pop(0) - self.send(zp.namedict(event)) + self.send(zp.ndict(event)) self.count +=1 diff --git a/zipline/finance/trading.py b/zipline/finance/trading.py index 8f8f7380..39785a1c 100644 --- a/zipline/finance/trading.py +++ b/zipline/finance/trading.py @@ -13,7 +13,7 @@ from zipline.core import Component import zipline.protocol as zp import zipline.finance.performance as perf -from zipline.utils.protocol_utils import Enum, namedict +from zipline.utils.protocol_utils import Enum, ndict # the simulation style enumerates the available transaction simulation # strategies. @@ -164,7 +164,7 @@ class TradeSimulationClient(Component): return self.connect_push_socket(self.addresses['order_address']) def order(self, sid, amount): - order = zp.namedict({ + order = zp.ndict({ 'dt':self.current_dt, 'sid':sid, 'amount':amount @@ -357,7 +357,7 @@ for orders: 'commission' : self.commission * amount * direction, 'source_id' : zp.FINANCE_COMPONENT.TRANSACTION_SIM } - return zp.namedict(txn) + return zp.ndict(txn) class TradingEnvironment(object): diff --git a/zipline/protocol.py b/zipline/protocol.py index 89a35230..89822725 100644 --- a/zipline/protocol.py +++ b/zipline/protocol.py @@ -65,7 +65,7 @@ Namedict Namedicts are dict like objects that have fields accessible by attribute lookup as well as being indexable and iterable:: - HEARTBEAT_PROTOCOL = namedict({ + HEARTBEAT_PROTOCOL = ndict({ 'REQ' : b'\x01', 'REP' : b'\x02', }) @@ -123,7 +123,7 @@ import time import copy from collections import namedtuple -from utils.protocol_utils import Enum, FrameExceptionFactory, namedict +from utils.protocol_utils import Enum, FrameExceptionFactory, ndict from utils.date_utils import EPOCH, UN_EPOCH # ----------------------- @@ -221,7 +221,7 @@ def DATASOURCE_FRAME(event): Wraps any datasource payload with id and type, so that unpacking may choose the write UNFRAME for the payload. - :param event: namedict with following properties + :param event: ndict with following properties - *ds_id* an identifier that is unique to the datasource in the context of a component host (e.g. Simulator) - *ds_type* a string denoting the datasource type. Must be on of: @@ -283,9 +283,9 @@ datasource type passed along. try: ds_type, source_id, payload = msgpack.loads(msg) assert isinstance(ds_type, int) - rval = namedict({'source_id':source_id}) + rval = ndict({'source_id':source_id}) if payload == DATASOURCE_TYPE.EMPTY: - child_value = namedict({'dt':None}) + child_value = ndict({'dt':None}) elif(ds_type == DATASOURCE_TYPE.TRADE): child_value = TRADE_UNFRAME(payload) elif(ds_type == DATASOURCE_TYPE.ORDER): @@ -314,7 +314,7 @@ def FEED_FRAME(event): - source_id - type """ - assert isinstance(event, namedict) + assert isinstance(event, ndict) source_id = event.source_id ds_type = event.type PACK_DATE(event) @@ -326,7 +326,7 @@ def FEED_UNFRAME(msg): payload = msgpack.loads(msg) #TODO: anything we can do to assert more about the content of the dict? assert isinstance(payload, dict) - rval = namedict(payload) + rval = ndict(payload) UNPACK_DATE(rval) return rval except TypeError: @@ -350,13 +350,13 @@ def TRANSFORM_FRAME(name, value): def TRANSFORM_UNFRAME(msg): """ - :rtype: namedict with : + :rtype: ndict with : """ try: name, value = msgpack.loads(msg) if(value == TRANSFORM_TYPE.EMPTY): - return namedict({name : None}) + return ndict({name : None}) #TODO: anything we can do to assert more about the content of the dict? assert isinstance(name, basestring) if(name == TRANSFORM_TYPE.PASSTHROUGH): @@ -364,7 +364,7 @@ def TRANSFORM_UNFRAME(msg): elif(name == TRANSFORM_TYPE.TRANSACTION): value = TRANSACTION_UNFRAME(value) - return namedict({name : value}) + return ndict({name : value}) except TypeError: raise INVALID_TRANSFORM_FRAME(msg) except ValueError: @@ -382,7 +382,7 @@ def MERGE_FRAME(event): - source_id - type """ - assert isinstance(event, namedict) + assert isinstance(event, ndict) PACK_DATE(event) if(event.has_attr(TRANSFORM_TYPE.TRANSACTION)): if(event.TRANSACTION == None): @@ -397,7 +397,7 @@ def MERGE_UNFRAME(msg): payload = msgpack.loads(msg) #TODO: anything we can do to assert more about the content of the dict? assert isinstance(payload, dict) - payload = namedict(payload) + payload = ndict(payload) if(payload.has_attr(TRANSFORM_TYPE.TRANSACTION)): if(payload.TRANSACTION == TRANSFORM_TYPE.EMPTY): payload.TRANSACTION = None @@ -425,7 +425,7 @@ INVALID_TRADE_FRAME = FrameExceptionFactory('TRADE') def TRADE_FRAME(event): """ - :param event: should be a namedict with: + :param event: should be a ndict with: - ds_id -- the datasource id sending this trade out - sid -- the security id @@ -434,7 +434,7 @@ def TRADE_FRAME(event): - dt -- datetime for the trade """ - assert isinstance(event, namedict) + assert isinstance(event, ndict) assert event.type == DATASOURCE_TYPE.TRADE assert isinstance(event.sid, int) assert isinstance(event.price, numbers.Real) @@ -456,7 +456,7 @@ def TRADE_UNFRAME(msg): assert isinstance(sid, int) assert isinstance(price, numbers.Real) assert isinstance(volume, numbers.Integral) - rval = namedict({ + rval = ndict({ 'sid' : sid, 'price' : price, 'volume' : volume, @@ -491,7 +491,7 @@ def ORDER_UNFRAME(msg): sid, amount, dt = msgpack.loads(msg) assert isinstance(sid, int) assert isinstance(amount, int) - rval = namedict({ + rval = ndict({ 'sid':sid, 'amount':amount, 'dt':dt @@ -513,7 +513,7 @@ def ORDER_UNFRAME(msg): def TRANSACTION_FRAME(event): - assert isinstance(event, namedict) + assert isinstance(event, ndict) assert isinstance(event.sid, int) assert isinstance(event.price, numbers.Real) assert isinstance(event.commission, numbers.Real) @@ -535,7 +535,7 @@ def TRANSACTION_UNFRAME(msg): assert isinstance(price, numbers.Real) assert isinstance(commission, numbers.Real) assert isinstance(amount, int) - rval = namedict({ + rval = ndict({ 'sid' : sid, 'price' : price, 'amount' : amount, @@ -577,7 +577,7 @@ def ORDER_SOURCE_FRAME(event): def ORDER_SOURCE_UNFRAME(msg): try: sid, amount, dt, source_id, source_type = msgpack.loads(msg) - event = namedict({ + event = ndict({ "sid" : sid, "amount" : amount, "dt" : dt, @@ -688,7 +688,7 @@ def PACK_DATE(event): PACK_DATE and UNPACK_DATE are inverse operations. - :param event: event must a namedict with a property named 'dt' that is a datetime. + :param event: event must a ndict with a property named 'dt' that is a datetime. :rtype: None """ assert isinstance(event.dt, datetime.datetime) @@ -710,7 +710,7 @@ def UNPACK_DATE(event): UNPACK_DATE and PACK_DATE are inverse operations. - :param tuple event: event must a namedict with: + :param tuple event: event must a ndict with: - a property named 'dt_tuple' that is a tuple of integers \ representing the date and time in UTC. @@ -742,15 +742,15 @@ ORDER_PROTOCOL = Enum( ) -#Transform type needs to be a namedict to facilitate merging. -TRANSFORM_TYPE = namedict({ +#Transform type needs to be a ndict to facilitate merging. +TRANSFORM_TYPE = ndict({ 'TRANSACTION' : 'TRANSACTION', #needed? 'PASSTHROUGH' : 'PASSTHROUGH', 'EMPTY' : '' }) -FINANCE_COMPONENT = namedict({ +FINANCE_COMPONENT = ndict({ 'TRADING_CLIENT' : 'TRADING_CLIENT', 'PORTFOLIO_CLIENT' : 'PORTFOLIO_CLIENT', 'ORDER_SOURCE' : 'ORDER_SOURCE', diff --git a/zipline/utils/__init__.py b/zipline/utils/__init__.py index b8670bc9..8a1b7b26 100644 --- a/zipline/utils/__init__.py +++ b/zipline/utils/__init__.py @@ -1,6 +1,5 @@ -from protocol_utils import namedict, ndict +from protocol_utils import ndict __all__ = [ - namedict, ndict, ] diff --git a/zipline/utils/factory.py b/zipline/utils/factory.py index 250ca670..b26f8a6b 100644 --- a/zipline/utils/factory.py +++ b/zipline/utils/factory.py @@ -55,7 +55,7 @@ def create_trading_environment(year=2006): return trading_environment def create_trade(sid, price, amount, datetime): - row = zp.namedict({ + row = zp.ndict({ 'source_id' : "test_factory", 'type' : zp.DATASOURCE_TYPE.TRADE, 'sid' : sid, @@ -88,7 +88,7 @@ def create_trade_history(sid, prices, amounts, interval, trading_calendar): return trades def create_txn(sid, price, amount, datetime, btrid=None): - txn = zp.namedict({ + txn = zp.ndict({ 'sid' : sid, 'amount' : amount, 'dt' : datetime,