Skip to content

基于微软 Qlib开源量化库,预测 CSI300

> 点击左侧查看预测数据,顶部导航查看使用方法和各种数据解释

当前预测倾向:稳健性

  1. 不要波动太大的股票
  • 最近5天看(STD5)
  • 最近20天看(STD20)
  • 最近60天看(STD60)

价格波动都不能太大,都要在10%以内。

  1. 要更加稳定的股票

在刚才的基础上,更严格:

最近60天的波动率要小于5%(长期很稳)

最近5天的波动率要小于6%(短期也稳)

  1. 不要突然"发疯"的股票

最近5天的波动,不能超过最近60天平均波动的2倍。

就是说:

  • 如果这个股票平时很稳(60天波动小)
  • 但最近5天突然波动很大
  • 那就不要!

这是在防止"突发异常"。

  1. 不要跌太多的股票

ROC = 价格变化率(涨跌幅)

要求:

  • 最近10天跌幅不能超过20%(ROC10 > 0.80)
  • 最近20天跌幅不能超过20%(ROC20 > 0.80)
  • 最近60天跌幅不能超过20%(ROC60 > 0.80)

0.80 是什么意思?

1.00 表示不涨不跌

0.80 表示跌了20%

所以 > 0.80 表示"跌幅不能超过20%"

  1. 不要涨太多的股票

最近20天涨幅不能超过30%

< 1.30 是什么意思?

1.30 表示涨了30%

所以 < 1.30 表示"涨幅不能超过30%"

这是在排除"暴涨股"。

整体规则

  • ✅ 价格稳定(波动率小于10%)
  • ✅ 长期稳定(60天波动率小于5%)
  • ✅ 没有异常波动(最近没发疯)
  • ✅ 没有暴跌(跌幅不超过20%)
  • ✅ 没有暴涨(涨幅不超过30%)

策略类型:防守型 / 稳健型

风险等级:低

收益预期:稳定小幅增长

python
def filter_ret_df(self, df):
    # 过滤高风险股票
    
    # 波动率过滤(标准差 < 10%)
    df = df[(df['STD5'] < 0.10) & (df['STD20'] < 0.10) & (df['STD60'] < 0.10)]
    
    # 极低波动率(< 5%)
    df = df[(df['STD60'] < 0.05) & (df['STD5'] < 0.06)]
    
    # 波动率异常检测
    df = df[df['STD5'] < (df['STD60'] * 2)]
    
    # 涨跌幅过滤(ROC: Rate of Change)
    df = df[(df['ROC10'] > 0.80) & (df['ROC20'] > 0.80) & (df['ROC60'] > 0.80)]
    df = df[df['ROC20'] < 1.30]
    
    return df

子目录列表