Quantopian直播算法--怎么做?

问题描述 投票:0回答:1

最大的问题是。

我怎样才能把我的quantopian算法和我设置的所有策略与alphas组合一起直播?

我没有找到任何答案。

我发现Alpaca可以和zipeline一起使用,但是我不能用amningstar或者Q1500US和Alpaca一起使用,或者我没有找到方法。

我花了很多时间来设置这个机器人,找到好的因素有低的阿尔法和良好的回报,我真的很失望,我真的不想回去从头开始,做另一个机器人。

请帮助找到一个解决方案,如果它不可能在所有使用这个机器人,告诉我哪个库作为完整的quantopian,我可以用同样的风格做另一个机器人。

谢谢大家,我的机器人就在下面!!。

这是我的机器人 。

import quantopian.algorithm as algo
from quantopian.pipeline import Pipeline
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.filters import QTradableStocksUS
from quantopian.pipeline.filters.morningstar import Q1500US
from quantopian.pipeline.data.sentdex import sentiment
from quantopian.pipeline.data.morningstar import operation_ratios


def initialize(context):
    """
    Called once at the start of the algorithm.
    """
    # Rebalance every day, 1 hour after market open.
    algo.schedule_function(
        rebalance,
        algo.date_rules.every_day(),
        algo.time_rules.market_open(hours=1),
    )

    # Record tracking variables at the end of each day.
    algo.schedule_function(
        record_vars,
        algo.date_rules.every_day(),
        algo.time_rules.market_close(),
    )

    # Create our dynamic stock selector.
    algo.attach_pipeline(make_pipeline(), 'pipeline')

    #set_commission(commission.PerTrade(cost=0.001))


def make_pipeline():
    # Yes : operation_ratios.revenue_growth.latest
    # Yes : operation_ratios.operation_margin.latest
    # Yes : sentiment

    testing_factor1=operation_ratios.operation_margin.latest
    testing_factor2=operation_ratios.revenue_growth.latest
    testing_factor3=sentiment.sentiment_signal.latest

    universe =(Q1500US() & 
              testing_factor1.notnull() &
              testing_factor2.notnull() &
              testing_factor3.notnull())

    testing_factor1=testing_factor1.rank(mask=universe, method='average')
    testing_factor2=testing_factor2.rank(mask=universe, method='average')
    testing_factor3=testing_factor3.rank(mask=universe, method='average')

    testing_factor= testing_factor1 + testing_factor2 + testing_factor3

    testing_quantiles = testing_factor.quantiles(2)

    pipe = Pipeline(columns={'testing_factor':testing_factor,'shorts':testing_quantiles.eq(0),'longs':testing_quantiles.eq(1)},screen=universe)
    return pipe    

def before_trading_start(context, data):
    """
    Called every day before market open.
    """
    context.output = algo.pipeline_output('pipeline')

    # These are the securities that we are interested in trading each day.
    context.security_list = context.output.index


def rebalance(context, data):

    long_secs=context.output[context.output['longs']].index
    long_weight=0.5/len(long_secs)

    short_secs=context.output[context.output['shorts']].index
    short_weight=-0.5/len(short_secs)

    for security in long_secs:
        if data.can_trade(security):
                          order_target_percent(security, long_weight)
    for security in short_secs:
        if data.can_trade(security):
                          order_target_percent(security, short_weight)

    for security in context.portfolio.positions:
        if data.can_trade(security) and security not in long_secs and security not in short_secs:
            order_target_percent(security, 0)

def record_vars(context, data):
    long_count=0

    short_count=0

    for position in context.portfolio.positions.values():
        if position.amount>0:
            long_count+=1
        elif position.amount<0:
            short_count+=1
    record(num_longs=long_count, num_shorts=short_count, leverage=context.account.leverage)
python bots algorithmic-trading trading quantopian
1个回答
0
投票

要在Quantopian之外交易Quantopian策略,你需要两样东西:backtester和数据。

Zipline 是为Quantopian backtester提供动力的开源回测库。最大的问题是,开箱即用,它不支持实时交易。有一些 基于社区的尝试 以适应实时交易,但他们从来没有获得多少牵引力,似乎已经失败了。

第二件事是你需要从某个地方获得数据,并编写自定义代码将其加载到Zipline中。QuantopianZipline需要以名为bcolz的列式存储格式存储1分钟数据。如果你在Pipeline中使用基本数据,加载这些数据是一个单独的步骤,需要编写自定义代码。

底线是,将Zipline适配于实盘交易并不是一项琐碎的工作。

如果你喜欢一个现成的选择。QuantRocket 支持 Zipline策略的回溯测试和实时交易。 并提供内置的1分钟美国股票数据。基本面数据可在Pipeline中使用。Q1500US是Quantopian特有的,不是开源库的一部分,但您可以通过过滤美元交易量或市值来近似。

声明:我与QuantRocket有关联。

© www.soinside.com 2019 - 2024. All rights reserved.