多板块轮动策略编写技巧----策略编写学习教材

一.本章内容主要介绍了如何在MINDGO平台上快速学会编写多板块轮动策略,希望能给有需要的小伙伴带来一定帮助。¶

本文建立于双板块轮动策略编写技巧之上,因此需要完整地学习的同学可以先看教材(六)
二.多板块策略逻辑

一、轮动策略介绍

在【系列六】中已经详细的讲到了板块轮动效应,当时整个策略的不完善之处在于板块太少,无法完全解释大盘 的涨跌逻辑,因为本人在【系列七】中特意创建了一个多指数轮动策略,目的就是通过对大量指数的强弱判断,从而 来解析整个大盘的上涨逻辑。
  通俗的讲,每段时期的大盘涨跌逻辑都是有所不同的,比如:前段时间蓝筹股的上涨,这段时间周期股暴涨等等, 说白了,每个时期的大盘在上涨过程中,总有一个板块或者是指数、行业是推动大盘上涨的,除非是在大牛市,每个 行业、板块都在涨,但是都在涨的同时,必定有一个板块或者行业是涨幅最喜人的。从以上的逻辑,我们可以得出: 多指数(行业)轮动策略可以最大程度上解释大盘的涨跌逻辑!
轮动策略的优势非常明显,在任何一段时间内,买入最强势的指数,而这个指数正是带动整个大盘上涨的核心力 量。当然,策略中还会判断指数强弱,如果没有一个指数达到强势标准,则直接空仓。这也就是说,轮动策略本身就 具备良好的风控措施,而且因为买入的是指数,其不需要考虑非系统性风险。
  多指数轮动策略的重点在于以下四点:
  一:必须具备足够多的指数,也就是这些指数包含很多行业、指数,这样可以在任何一个时期来解释大盘内在涨 跌逻辑。
  二:必须有一个严格的强弱判断逻辑,一个指数的表现如何量化成强弱关系并与其它指数进行对比。
  三:确定调仓周期,策略应该是一个月调仓一次,还是一周调仓一次,或者其它,这个调仓逻辑与你选择指数的 类型、数量有关。
  四:确定持仓指数数量,当策略判断出各个指数的强弱并排序后,策略持仓最强表现的一个指数,还是前几个指 数,这会直接影响到策略的最终结果。

二、构建多指数轮动策略

本章为了达到编写教学效果和策略逻辑完善,本人选取了9个指数ETF基金来解释大盘涨跌逻辑:159901 深100ETF, 510050 50ETF,159915创业板ETF,510300 沪深300ETF,510500 500ETF,510180 180ETF,159902 中小板ETF,159905 深红利ETF,150019银华锐进。
  其次定义板块强弱,采用当日收盘价与20日前的收盘价进行涨跌幅计算,如果当日收盘价相对于20日前的收盘价是 上涨的,则表明该板块较为强势,由于一共9个指数,选取其中最强的一个作为交易标的。如果出现9个指数都下跌,那 么我们则空仓避险。
  板块强弱的调仓周期为一月。
三.策略框架

I.初始化函数,设置账户条件
II.交易函数,用于买卖个股

#=====================================================================================================
#=====================================================================================================
#导包操作
import pandas as pd
#=====================================================================================================
#=====================================================================================================
#初始化函数,用于初始条件,其中爱吃醋 context.security中确定策略判断的几大板块
def init(context):   
    run_monthly(trade,date_rule=3)
    context.security=['150019.SZ','159901.OF','510050.OF',
                      '159915.OF','510300.OF',
                      '510500.OF','510180.OF',
                      '159902.OF','159905.OF']
                      #注意:格式可以一行,也可以多行,不影响代码运行,4行还只是context.security里的。
#=====================================================================================================
#=====================================================================================================
#板块强弱衡量函数
def bankuai(context,bar_dict):  
    df={'security':[],'qd':[]}
    stocks=context.security
    for i in stocks:
        df['security'].append(i)
        price = history(i, ['close'], 25, '1d')
        p20=price['close'].iloc[-20]
        p1=price['close'].iloc[-1]
        m=(p1-p20)/p20
        df['qd'].append(m)
    df = pd.DataFrame(df).sort_values(by ='qd', ascending=False)
    x=df['qd'].iloc[0]
    y=['123']
    if x >0 :
        return df['security'].iloc[0]
    else:
        return y
    #直接输出最强的板块,如果所有板块都是负数,那么输出固定值y=['123']
#=====================================================================================================
#=====================================================================================================
#交易函数
def trade(context,bar_dict):
    n=bankuai(context,bar_dict)
    d=len(n)
    #首先判断所有板块是否变弱,变弱则清仓
    if d==1:
        if len(list(context.portfolio.stock_account.positions.keys())) > 0:
            for stock in list(context.portfolio.stock_account.positions.keys()):
                order_target(stock, 0)
    #其次判断最强板块是否是我们持仓的板块,不是则先卖持仓,后买最强板块。
    else:
        if n not in list(list(context.portfolio.stock_account.positions.keys())):
            for stock in list(context.portfolio.stock_account.positions.keys()):
                order_target(stock, 0)
            if len(list(context.portfolio.stock_account.positions.keys())) < 1:
                order_target_value(n, context.portfolio.stock_account.available_cash)
#=====================================================================================================
#=====================================================================================================
#设置止损止盈
def handle_bar(context,bar_dict):
    n=bankuai(context,bar_dict)
    d=len(n)
    #判断函数,用于判断板块,如果所有板块都弱了,那么n是1,执行清仓。
    if d==1:
        if len(list(context.portfolio.stock_account.positions.keys())) > 0:
            for stock in list(list(context.portfolio.stock_account.positions.keys())):
                order_target(stock, 0)
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
经济周期因子轮策略是一种利用经济周期变化来调整投资组合的策略。这种策略将经济周期因子作为一个因素,结合多因子模型,通过预测各个行业的周期收益率来进行调整。具体来说,根据经济周期的不同阶段,选择适合投资的资产类别和股票板块进行买入和卖出操作。例如,在经济衰退下降期,可以选择债券和防御型股票板块进行投资;而在经济复苏上升期,可以选择成长型股票和商品等进行投资。这样的策略可以根据经济周期的变化,灵活调整投资组合,以追求更好的收益。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [行业轮(股票)——Python量化](https://blog.csdn.net/m0_56134806/article/details/126698456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [行业轮策略-股票](https://blog.csdn.net/zk168_net/article/details/110925785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_1985159637

感谢你的支持!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值