美文网首页简书面面观
量化交易入门笔记-银行股轮动策略

量化交易入门笔记-银行股轮动策略

作者: 东南有大树 | 来源:发表于2018-10-19 20:59 被阅读53次
    '''
    始终持有沪深300银行指数成分股中市净率最低的股价制银行
    每周检查一次,如果发现有新的股份制银行市净率低于原有的股票,则予以换仓
    '''
    
    import jqdata
    
    def initialize(context):
        """初始化函数,设定要操作的股票、基准等"""
        # 设定沪深300银行指数作为基准
        set_benchmark('399951.XSHE')
        # 使用真实价格交易
        set_option('use_real_price', True)
        # 设定成效比例
        set_option('order_volume_ratio', 1)
        # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
        set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
        # 运行函数,每周第一天运行
        run_weekly(check_stocks, weekday=1, time='before_open')  # 选股
        run_weekly(trade, weekday=1, time='open')  # 交易
        
        
    def check_stocks(context):
        """选出沪深300银行指数成分股中市净率最低的股份制银行"""
        # 得到沪深300银行指数成分股
        g.stocks = get_index_stocks('399951.XSHE')
        # 查询股票的市净率,并按照市净率升序排序
        if len(g.stocks) > 0:
            g.df = get_fundamentals(
                query(
                    valuation.code,
                    valuation.pb_ratio
                    ).filter(
                        valuation.code.in_(g.stocks)
                        ).order_by(
                            valuation.pb_ratio.asc()
                            ))
            # 找出市净率最低的一只股票
            g.code = g.df['code'][0]
            
            
    def trade(context):
        """交易函数"""
        if len(g.stocks) > 0:
            code = g.code
            # 如持仓股票不是最低市净率的股票,则卖出
            for stock in context.portfolio.positions.keys():
                if stock != code:
                    order_target(stock, 0)
            # 持仓该股票
            if len(context.portfolio.positions) > 0:
                return
            else:
                order_value(code, context.portfolio.cash)
        
    

    回测结果:

    注:本文章为个人学习笔记,参考了一些书籍与官方教程,不作任何商业用途!

    相关文章

      网友评论

        本文标题:量化交易入门笔记-银行股轮动策略

        本文链接:https://www.haomeiwen.com/subject/imiuzftx.html