mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-09 08:13:33 +08:00
MAINT: Adjust for comparison changes in Python 3.
Use date sorted sources instead, instead of sorting with second argument of Event, etc. since the `heapq.merge` behavior is using the second part of the tuple, thus requiring a richer set of comparison methods, which would only be used in the test context. Use `date_sorted_sources` instead, so that sorting is done on algo time and source id.
This commit is contained in:
+10
-10
@@ -49,7 +49,9 @@ tradingday = datetime.timedelta(hours=6, minutes=30)
|
||||
|
||||
def create_txn(event, price, amount):
|
||||
mock_order = Order(None, None, event.sid, id=None)
|
||||
return create_transaction(event, mock_order, price, amount)
|
||||
txn = create_transaction(event, mock_order, price, amount)
|
||||
txn.source_id = 'MockTransactionSource'
|
||||
return txn
|
||||
|
||||
|
||||
def benchmark_events_in_range(sim_params):
|
||||
@@ -69,12 +71,10 @@ def calculate_results(host, events):
|
||||
|
||||
perf_tracker = perf.PerformanceTracker(host.sim_params)
|
||||
|
||||
all_events = heapq.merge(
|
||||
((event.dt, event) for event in events),
|
||||
((event.dt, event) for event in host.benchmark_events))
|
||||
all_events = date_sorted_sources(events, host.benchmark_events)
|
||||
|
||||
filtered_events = [(date, filt_event) for (date, filt_event)
|
||||
in all_events if date <= events[-1].dt]
|
||||
filtered_events = [(filt_event.dt, filt_event) for filt_event
|
||||
in all_events if filt_event.dt <= events[-1].dt]
|
||||
filtered_events.sort(key=lambda x: x[0])
|
||||
grouped_events = itertools.groupby(filtered_events, lambda x: x[0])
|
||||
results = []
|
||||
@@ -1135,12 +1135,10 @@ class TestPerformanceTracker(unittest.TestCase):
|
||||
orders = [event for event in
|
||||
events if event.type == DATASOURCE_TYPE.ORDER]
|
||||
|
||||
all_events = (msg[1] for msg in heapq.merge(
|
||||
((event.dt, event) for event in events),
|
||||
((event.dt, event) for event in benchmark_events)))
|
||||
all_events = date_sorted_sources(events, benchmark_events)
|
||||
|
||||
filtered_events = [filt_event for filt_event
|
||||
in all_events if event.dt <= end_dt]
|
||||
in all_events if filt_event.dt <= end_dt]
|
||||
filtered_events.sort(key=lambda x: x.dt)
|
||||
grouped_events = itertools.groupby(filtered_events, lambda x: x.dt)
|
||||
perf_messages = []
|
||||
@@ -1172,6 +1170,7 @@ class TestPerformanceTracker(unittest.TestCase):
|
||||
amount=-25,
|
||||
dt=event.dt
|
||||
)
|
||||
order.source_id = 'MockOrderSource'
|
||||
yield order
|
||||
yield event
|
||||
txn = Transaction(
|
||||
@@ -1182,6 +1181,7 @@ class TestPerformanceTracker(unittest.TestCase):
|
||||
commission=0.50,
|
||||
order_id=order.id
|
||||
)
|
||||
txn.source_id = 'MockTransactionSource'
|
||||
yield txn
|
||||
else:
|
||||
yield event
|
||||
|
||||
@@ -141,7 +141,8 @@ def create_dividend(sid, payment, declared_date, ex_date, pay_date):
|
||||
'ex_date': ex_date.replace(hour=0, minute=0, second=0, microsecond=0),
|
||||
'pay_date': pay_date.replace(hour=0, minute=0, second=0,
|
||||
microsecond=0),
|
||||
'type': DATASOURCE_TYPE.DIVIDEND
|
||||
'type': DATASOURCE_TYPE.DIVIDEND,
|
||||
'source_id': 'MockDividendSource'
|
||||
})
|
||||
|
||||
return div
|
||||
@@ -152,7 +153,8 @@ def create_split(sid, ratio, date):
|
||||
'sid': sid,
|
||||
'ratio': ratio,
|
||||
'dt': date.replace(hour=0, minute=0, second=0, microsecond=0),
|
||||
'type': DATASOURCE_TYPE.SPLIT
|
||||
'type': DATASOURCE_TYPE.SPLIT,
|
||||
'source_id': 'MockSplitSource'
|
||||
})
|
||||
|
||||
|
||||
@@ -162,7 +164,8 @@ def create_txn(sid, price, amount, datetime):
|
||||
'amount': amount,
|
||||
'dt': datetime,
|
||||
'price': price,
|
||||
'type': DATASOURCE_TYPE.TRANSACTION
|
||||
'type': DATASOURCE_TYPE.TRANSACTION,
|
||||
'source_id': 'MockTransactionSource'
|
||||
})
|
||||
return txn
|
||||
|
||||
@@ -172,7 +175,8 @@ def create_commission(sid, value, datetime):
|
||||
'dt': datetime,
|
||||
'type': DATASOURCE_TYPE.COMMISSION,
|
||||
'cost': value,
|
||||
'sid': sid
|
||||
'sid': sid,
|
||||
'source_id': 'MockCommissionSource'
|
||||
})
|
||||
return txn
|
||||
|
||||
|
||||
Reference in New Issue
Block a user