板块/行业轮动模型

Posted by:

|

On:

|

板块/行业轮动模型是量化投资很经典的一种 中低频择时策略。我可以给你一份 “行业轮动模型” 的框架,并根据你要的风格调整,比如偏趋势反转打分因子动量宏观因子之类。


🚀 板块/行业轮动模型设计框架(动量为例)

我们用 申万一级行业 或者 中证行业指数 作为标的池,构建一个“根据过去表现,切换持仓”的模型。


📦 1. 行业选择池

使用 AkShare 获取行业指数:

pythonCopyEditimport akshare as ak
industry_df = ak.index_board_industry_name_ths()  # 获取所有行业指数(中证)

每个指数有代码,如 884001.WI 是农林牧渔。


📈 2. 计算收益率(动量因子)

pythonCopyEditfrom datetime import datetime, timedelta
import pandas as pd

today = datetime.today()
start_date = (today - timedelta(days=60)).strftime("%Y%m%d")
end_date = today.strftime("%Y%m%d")

industry_list = industry_df['指数代码'].tolist()
momentum_result = []

for code in industry_list:
    try:
        df = ak.index_zh_a_hist(symbol=code, period="daily", start_date=start_date, end_date=end_date)
        df['收益率'] = df['收盘'].pct_change()
        ret = df['收盘'].iloc[-1] / df['收盘'].iloc[0] - 1
        momentum_result.append({
            '行业代码': code,
            '行业名称': industry_df[industry_df['指数代码'] == code]['指数名称'].values[0],
            '近60日收益率': round(ret * 100, 2)
        })
    except:
        pass

momentum_df = pd.DataFrame(momentum_result)
top_industries = momentum_df.sort_values('近60日收益率', ascending=False).head(5)
print(top_industries)

🧠 3. 策略逻辑(示意)

  • 每月/每周跑一次上面的轮动打分
  • 选择动量最强的前 N 个行业(如前 3)
  • 每个行业对应一个 ETF 或成分股,等权买入
  • 持有一段时间(如20个交易日),再更新轮动

📊 4. 可选扩展点

类型举例
多因子动量 + 波动率过滤 + 换手率
宏观过滤利率、PMI、货币宽松等信号筛选行业
反转逻辑选近期跌幅大的行业博反弹
ETF执行用中证/申万对应的行业ETF代替指数买入

🧰 5. 工具补充

  • AkShare:行业指数数据
  • Tushare(高级版):更丰富的财务和宏观数据
  • Backtrader/BT:策略回测
  • matplotlib/seaborn:可视化轮动路径

✅ 示例结果(某次运行)

行业名称收益率(60日)
有色金属+12.3%
计算机+10.8%
新能源车+9.6%

👉 策略买入这 3 个板块的 ETF 或者成分股。

Leave a Reply

Your email address will not be published. Required fields are marked *