15日前买,15日后卖的交易策略

joinquant平台上别人分享的一个策略,非常简单,纯粹用来学习代码。

回测结果吓死人:策略年化收益 -52.96%

# 用户必须要实现的2个函数之一:初始化函数 initialize(context)
def initialize(context):  
    # 定义一个全局变量, 保存要操作的股票
    # 002673 西部证券
    g.security = '002673.XSHE'
    # 设置参照指数,用于判断策略好坏和一系列风险值计算的基准
    # 更多参照指数详见 https://www.joinquant.com/indexData
    set_benchmark('000300.XSHG')

# 用户必须要实现的2个函数之二:仓位调整函数 handle_data(context, data)
# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context, data):  
    security = g.security
    # 取得上一单位时间收盘价格
    current_price = data[security].close
    # 取得当前的现金
    cash = context.portfolio.available_cash
# 如果当天是15号之前,全仓买入
    if context.current_dt.day < 15 :
        # 计算可以买多少只股票
        number_of_shares = int(cash/current_price)
        # 购买量大于0时,下单
        if number_of_shares > 100:
            # 买入股票
            order(security, number_of_shares)
            # 记录这次买入
            log.info("Buying %s" % (security))
    # 如果当天是15号之后, 则空仓卖出
    elif context.current_dt.day > 15 and context.portfolio.positions[g.security].closeable_amount > 0:
        # 卖出所有股票,使这只股票的最终持有量为0
        order_target(security, 0)
        # 记录这次卖出
        log.info("Selling %s" % (security))
    # 画出上一单位时间收盘价格
    record(stock_price=data[security].close)