(supermind)振幅大于1、连续5年ROE>15%、收盘价_boll(upper值)

用户头像神盾局量子研究部
2023-08-21 发布

问财量化选股策略逻辑

选股逻辑:振幅大于1,连续5年ROE>15%,收盘价<boll(upper值)且收盘价>boll(mid值)。

选股逻辑分析

该选股策略需要股票满足振幅大于1、连续5年ROE>15%以及收盘价在布林带的中上区间,即收盘价<boll(upper值)且收盘价>boll(mid值)的条件才能进行选股。其中,ROE可以衡量公司的经营能力,振幅和收盘价在布林带的中上区间则反映了市场对该股票的热情程度和趋势特点。这些指标均是选股的重要因素,但是同时适用于所有行业和市场,并不能完全反映出其特点。

有何风险?

该选股逻辑可能存在以下风险:

  1. 市场风险高,过于追求热门股,容易错过质量好但是被忽略的个股;
  2. 选股逻辑过于简单,忽略了其他重要指标和因素,可能会影响选股效果;
  3. 布林带指标仅能反映市场趋势,不能提供足够的细节信息和股票价值。

如何优化?

为了减小风险,可以尝试以下优化:

  1. 在振幅指标和ROE指标的基础上,加入其他指标,如财务数据、市值、资金流向等,并建立多维度评估模型;
  2. 对布林带指标进行细化,如加入相对强弱指标、MACD指标等,增加选股逻辑的准确性和细节性;
  3. 设置不同行业和市场的阈值,根据特定市场的特点进行加权评估,以达到更科学的选股效果。

最终的选股逻辑

基于以上分析和优化,我们可以得到以下完善的选股逻辑:

  1. 振幅大于1,波动性适中;
  2. 连续ROE指标较好,标志着公司经营能力稳定;
  3. 收盘价在布林带的中上区间,反映市场对该股票的热情程度和趋势特点;
  4. 根据各行业特点和市场情况灵活调整各指标的阈值。

同花顺指标公式代码参考

C1: IF((HIGH - LOW >= 1) AND ('其他波动性指标'), 1, 0);
C2: IF(ROE(CLOSE, 5) > 15, 1, 0);
C3: IF(ROE(CLOSE, 4) > 15, 1, 0);
C4: IF(ROE(CLOSE, 3) > 15, 1, 0);
C5: IF(ROE(CLOSE, 2) > 15, 1, 0);
C6: IF(ROE(CLOSE, 1) > 15, 1, 0);
C7: IF((CLOSE < BOLL(5, 2) * (1 + 'upper值控制参数')) AND (CLOSE > BOLL(5, 2) * 'mid值控制参数'), 1, 0);
SELECTOR: C1 * (C2 + C3 + C4 + C5 + C6) * C7;
RESULT: SELECTOR;

python代码参考

import pandas as pd
import talib

df = pd.read_csv('your_data.csv', index_col='date')

C1 = np.where((df['high'] - df['low'] >= 1) & ('其他波动性指标'), 1, 0)

def check_roe(x):
    return (x > 0.15).all()

C2 = np.where(df.groupby('code')['roe'].apply(check_roe), 1, 0)
C3 = np.where(df.groupby('code')['roe'].apply(check_roe, n=4), 1, 0)
C4 = np.where(df.groupby('code')['roe'].apply(check_roe, n=3), 1, 0)
C5 = np.where(df.groupby('code')['roe'].apply(check_roe, n=2), 1, 0)
C6 = np.where(df.groupby('code')['roe'].apply(check_roe, n=1), 1, 0)

upper, mid, lower = talib.BBANDS(df['close'], timeperiod=5, nbdevup='upper值控制参数', 
                                 nbdevdn=0, matype=talib.MA_Type.SMA)

C7 = np.where((df['close'] < upper * (1 + 'upper值控制参数')) & (df['close'] > mid), 1, 0)

selector = C1 * (C2 + C3 + C4 + C5 + C6) * C7
result = df[selector == 1].sort_values('mc', ascending=False).index.tolist()
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

    select_sentence = '市值小于100亿' #选股语句。

    模板如何使用?

    点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。


    ## 如果有任何问题请添加 下方的二维码进群提问。
    ![94c5cde12014f99e262a302741275d05.png](http://u.thsi.cn/imgsrc/pefile/94c5cde12014f99e262a302741275d05.png)
收益&风险
源码

评论