python ZIPLINE PIPELINE策略与捆绑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python ZIPLINE PIPELINE策略与捆绑相关的知识,希望对你有一定的参考价值。

from zipline.pipeline import CustomFactor, Pipeline, CustomFilter
from zipline import TradingAlgorithm
from zipline.api import symbols, attach_pipeline, schedule_function, date_rules, time_rules, pipeline_output
from zipline.pipeline.factors import Returns
import numpy as np
import pandas as pd
from datetime import datetime
from zipline import run_algorithm
from zipline.api import order, record, symbol
import pytz

class SecurityInList(CustomFactor):  
    inputs = []  
    window_length = 1  
    securities = []
    def compute(self, today, assets, out):  
        out[:] = np.in1d(assets, self.securities)  
 
def initialize(context):
    
#     do NOT import symbols in RESEARCH and use following to define symbol list
#     sec_list = [symbols('SPY'),symbols('VEU'), symbols('SHY'), symbols('TLT'), symbols('AGG')]
    sec_list = symbols ('MDY', 'EFA')
    attach_pipeline(make_pipeline(sec_list, context), 'my_pipeline')
    
    schedule_function(func=rebalance,
                      date_rule=date_rules.every_day(),
                      time_rule=time_rules.market_open(minutes=30))
         
def make_pipeline(sec_list, context):

    # Return Factors
    mask = SecurityInList()
    mask.securities = sec_list
    mask = mask.eq(1)
    yr_returns = Returns(window_length=252, mask=mask)
     
    pipe = Pipeline(
        screen = mask,
        columns = {
            'yr_returns': yr_returns
        }
    )
    return pipe
 
def before_trading_start(context, data):
    """
    Called every day before market open.
    """
    context.output = pipeline_output('my_pipeline')
    print (context.output)
    
def rebalance (context, data) :
    #     print (dir(context))
    print (pipeline_output('my_pipeline'))
    pass
  
capital_base = 10000
start = datetime(2015, 1, 1, 0, 0, 0, 0, pytz.utc)
end = datetime(2016, 1, 1, 0, 0, 0, 0, pytz.utc)

    
result = run_algorithm(start = start, end = end, initialize=initialize,\
                capital_base=capital_base,\
                before_trading_start = before_trading_start, 
                bundle = 'etfs_bundle')

以上是关于python ZIPLINE PIPELINE策略与捆绑的主要内容,如果未能解决你的问题,请参考以下文章

python ZIPLINE RUN PIPELINE

python 运行ZIPLINE PIPELINE(包括模拟输入)

python 用捆绑运行ZIPLINE PIPELINE

python ZIPLINE PIPELINE战略,没有大的因素

python ZIPLINE简单策略与管道因素

CtaAlgo vs PyAlgoTrade