(supermind)振幅大于1、底部抬高、归属母公司股东的净利润(同比增长率)大于20%

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

问财量化选股策略逻辑

选股逻辑:振幅大于1,底部抬高,归属母公司股东的净利润(同比增长率)大于20%小于等于100%。

选股逻辑分析

该选股策略结合了技术指标和基本面数据,首先通过振幅大小和底部抬高等技术指标筛选出市场上走势稳健的个股,然后再结合归属母公司股东的净利润同比增长率(20%~100%),筛选出多个方面表现优秀的个股。

有何风险?

该选股策略同样存在可能遗漏一些潜在优质股票,因为其筛选条件相对较为简单,而且只考虑单一的基本面数据指标。同时,该策略选出的个股可能也会受到市场整体行情和宏观经济环境的影响,在市场出现较大波动、政策变化等情况时,该策略选出的个股表现可能不如其他策略。

如何优化?

该选股策略可以加入其他技术指标如MACD、KDJ等进一步筛选个股,比如看股票是否处于超卖状态等,也可以加入其他基本面数据指标如市盈率、市净率等以进一步提升选股精度,并且根据当前市场宏观经济环境调整选股条件。

最终的选股逻辑

在分析和优化该选股策略后,我们可以得到最终的选股逻辑:

  1. 振幅大于1;
  2. 底部抬高;
  3. 归属母公司股东的净利润(同比增长率)大于20%小于等于100%;
  4. 剔除ST和*ST股票;
  5. 止损条件:当K线或收盘价跌破布林带中轨时,卖出。

同花顺指标公式代码参考

以下是在同花顺上实现该选股策略的指标公式代码:

C1:AMP()>1;
C2:BOTTOM(HIGH,C1)>BOTTOM(HIGH,C1+1);
C3:FILLNA(ROETTM(),0)>0 AND FILLNA(ROETTM(),0)>20 AND FILLNA(ROETTM(),0)<=100;
C4:PARENTNETPROFIT()>=0 AND PARENTNETPROFIT()<100000000000;
C5:NOT (INSTR('ST', SINFO) OR INSTR('*ST', SINFO));
C6:DEA()>DEA(1) AND DEA()>0;
C7:CLOSE>BOLLMA(CLOSE,20);
C8:CLOSE>REF(BOLLMA(CLOSE,20),1);
C9:(CLOSE<BOLLUPR(CLOSE,20,2)) OR ((CLOSE>=BOLLUPR(CLOSE,20,2)) AND (CLOSE>REF(CLOSE,1)));
SELECTOR:=C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8 AND C9;
RESULT:=SELECTOR;

Python代码参考

以下是Python实现该选股策略的选股逻辑的代码:

from stockstats import StockDataFrame

# 将数据转换为 StockDataFrame
sdf = StockDataFrame.retype(df)

# 选取振幅大于1,底部抬高,归属母公司股东的净利润(同比增长率)大于20%小于等于100%
selected_stocks = (sdf['amp'] > 1) & \
                   (sdf['low'].rolling(window=C1).apply(lambda x: (np.argmax(x[-C1:]) == C1 - 1) and (np.argmax(x[:-C1]) < np.argmax(x[-C1:])), raw=False)) & \
                   (sdf['roe_ttm'] > 0) & \
                   (sdf['roe_ttm'] > 20) & (sdf['roe_ttm'] <= 100) & \
                   (sdf['parent_netprofit'] >= 0) & (sdf['parent_netprofit'] < 100000000000) & \
                   (~sdf['scode'].str.contains('ST')) & \
                   (~sdf['scode'].str.contains('*ST'))

# 加入止损策略:当K线或收盘价跌破布林带中轨时,卖出
sdf['mean'] = sdf['close'].rolling(window=20).mean()
sdf['std'] = sdf['close'].rolling(window=20).std()
sdf['lower'] = sdf['mean'] - 2 * sdf['std']
sdf['close_1'] = sdf['close'].shift(1)

sdf['sell_signal'] = (sdf['kdjk'] < sdf['kdjd']) & (sdf['kdjk'] < sdf['kdjj']) & \
                     ((sdf['close'] < sdf['mean']) | (sdf['close_1'] < sdf['mean'])) 
selected_stocks = selected_stocks & (~sdf['sell_signal'])

# 返回选中个股的代码
return selected_stocks['scode'].tolist()

通过在Python中实现该选股逻辑,可以更加灵活地结合各种技术指标和基本面数据进行调整和智能化筛选,同时可以利用机器学习等技术进一步优化算法,以获得更好的选股效果。

    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论