mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-28 13:17:43 +08:00
101 lines
2.9 KiB
Python
101 lines
2.9 KiB
Python
import pytz
|
|
import time
|
|
|
|
from time import sleep
|
|
from pprint import pprint as pp
|
|
from datetime import datetime, timedelta
|
|
from itertools import izip
|
|
|
|
from zipline.utils.factory import create_trading_environment
|
|
from zipline.test_algorithms import TestAlgorithm
|
|
|
|
from zipline.gens.composites import SourceBundle, TransformBundle, \
|
|
date_sorted_sources, merged_transforms, sequential_transforms
|
|
from zipline.gens.tradegens import SpecificEquityTrades
|
|
from zipline.gens.transform import MovingAverage, Passthrough, StatefulTransform
|
|
from zipline.gens.tradesimulation import TradeSimulationClient as tsc
|
|
|
|
import zipline.protocol as zp
|
|
|
|
if __name__ == "__main__":
|
|
|
|
filter = [2,3]
|
|
#Set up source a. Six minutes between events.
|
|
args_a = tuple()
|
|
kwargs_a = {
|
|
'count' : 1000,
|
|
'sids' : [1,2,3],
|
|
'start' : datetime(2012,1,3,15, tzinfo = pytz.utc),
|
|
'delta' : timedelta(minutes = 6),
|
|
'filter' : filter
|
|
}
|
|
source_a = SpecificEquityTrades(*args_a, **kwargs_a)
|
|
source_a_prime = SpecificEquityTrades(*args_a, **kwargs_a)
|
|
|
|
#Set up source b. Five minutes between events.
|
|
args_b = tuple()
|
|
kwargs_b = {
|
|
'count' : 1000,
|
|
'sids' : [2,3,4],
|
|
'start' : datetime(2012,1,3,14, tzinfo = pytz.utc),
|
|
'delta' : timedelta(minutes = 5),
|
|
'filter' : filter
|
|
}
|
|
source_b = SpecificEquityTrades(*args_b, **kwargs_b)
|
|
source_b_prime = SpecificEquityTrades(*args_b, **kwargs_b)
|
|
|
|
sorted = date_sorted_sources(source_a, source_b)
|
|
sorted_prime = date_sorted_sources(
|
|
source_a_prime,
|
|
source_b_prime
|
|
)
|
|
|
|
passthrough = StatefulTransform(Passthrough)
|
|
mavg_price = StatefulTransform(
|
|
MovingAverage,
|
|
timedelta(minutes = 20),
|
|
['price']
|
|
)
|
|
|
|
passthrough_prime = StatefulTransform(Passthrough)
|
|
mavg_price_prime = StatefulTransform(
|
|
MovingAverage,
|
|
timedelta(minutes = 20),
|
|
['price']
|
|
)
|
|
|
|
merged = merged_transforms(sorted, passthrough, mavg_price)
|
|
start = time.time()
|
|
for message in merged:
|
|
assert 1 + 1 == 2
|
|
stop = time.time()
|
|
merge_time = stop - start
|
|
print "Merge time: %s" % str(merge_time)
|
|
|
|
sequential = sequential_transforms(
|
|
sorted_prime,
|
|
passthrough_prime,
|
|
mavg_price_prime
|
|
)
|
|
|
|
start = time.time()
|
|
for message in sequential:
|
|
assert 1 + 1 == 2
|
|
stop = time.time()
|
|
seq_time = stop - start
|
|
print "Sequential time: %s" % str(seq_time)
|
|
print "Merge/Seq: %s" % (str(merge_time/seq_time))
|
|
|
|
|
|
# merged = merged_transforms(sorted, passthrough, mavg_price)
|
|
|
|
# algo = TestAlgorithm(2, 10, 100, sid_filter = [2,3])
|
|
# environment = create_trading_environment(year = 2012)
|
|
# style = zp.SIMULATION_STYLE.FIXED_SLIPPAGE
|
|
|
|
# trading_client = tsc(algo, environment, style)
|
|
|
|
# for message in trading_client.simulate(merged):
|
|
# pp(message)
|
|
|