(同花顺量化)2019分红比例>25%_、归属母公司股东的净利润(同比增长率)大于20%小

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

问财量化选股策略逻辑

选股逻辑:MACD指标零轴以上,归属母公司股东的净利润(同比增长率)大于20%小于等于100%,2019分红比例>25%。该选股策略综合考虑了技术面和基本面指标,同时加入了分红比例的指标,有助于选出高增长、高分红的股票。

选股逻辑作为第一个段落放入标题为 ## 问财量化选股策略逻辑 的段落中。分析以上的选股逻辑(每个逻辑以 , 进行分隔) ,分析选股的逻辑(放入标题为 ## 选股逻辑分析 的段落),有什么风险?(放入标题为 ## 有何风险? 的段落)如何优化?(放入标题为 ## 如何优化? 的段落)并最终给出完善选股逻辑(放入标题为 ## 最终的选股逻辑 的段落),请用markdown格式。

选股逻辑分析

该选股策略综合考虑了技术面和基本面指标,同时加入了分红比例的指标,有助于选出高增长、高分红的股票。选股策略中,MACD指标零轴以上的条件,考虑了多头趋势,同时加入了均线形态的条件。归属母公司股东的净利润同比增长率大于20%小于等于100%,则强化了基本面的条件。加入2019分红比例>25%的条件,则强化了股票分红能力的考虑。

有何风险?

该选股策略可能存在以下风险:

  1. 忽略了其他重要指标,如市值、价格等资产方面的指标。
  2. 忽略了行业与市场的相对价值。即使在同一行业中,股票在技术面、业绩和分红方面表现很好,但该行业的整体前景较差,这样的股票也可能出现下跌风险。
  3. 对于分红比例的指标,仅考虑了2019年的数据,可能忽略了长期的公司分红能力表现,以及未来的分红可能存在波动的风险。

如何优化?

以下是一些优化建议:

  1. 加入其它重要基本面指标,如市盈率、市净率等,加强对公司价值的评估。
  2. 强化行业与市场的相对价值考虑,对不同行业的股票设置不同的筛选条件。
  3. 考虑增加分红连续性因素,如连续3年分红的公司,以及对股票分红历史表现的考察。
  4. 对于MACD指标的选择,可以考虑加入其它技术面指标,如KDJ、RSI等相互印证。

最终的选股逻辑

选股策略:MACD指标零轴以上,归属母公司股东的净利润(同比增长率)大于20%小于等于100%,2019分红比例>25%。该选股策略综合考虑了技术面和基本面指标,并加入了分红比例的指标,有助于选出高增长、高分红的股票。

同花顺指标公式代码参考

SELECT CODE,SECNAME FROM STOCK_BASICS WHERE LIST_STATUS='L' 
AND (MACD(CLOSE,12,26,9)>0) AND (YOY(NET_PROFIT,1)>20/100) AND (YOY(NET_PROFIT,1)<=100/100)
AND (DIVIDEND_RATIO_2019>25) 
ORDER BY BIDORDER DESC LIMIT 50

Python代码参考

def initialize(context):
    set_benchmark('000300.XSHG')
    # 获取所有股票
    g.all_stocks = list(get_all_securities(types=['stock']).index)
    # 每日运行选股逻辑
    run_daily(select_stocks, time='before_open', reference_security='000300.XSHG')

def select_stocks(context):
    # 获取当前股票池
    trash_stocks = list(filter(lambda s: not get_current_data()[s].is_trading, g.all_stocks))
    stocks = list(set(g.all_stocks) - set(trash_stocks) - set(context.portfolio.positions.keys()))

    # 遍历所有股票,进行选择
    g.stock_dict = {}
    for stock in stocks:
        # 如果MACD指标零轴以下,跳过
        dif, dea, macd = talib.MACD(get_price(stock, frequency='1d', count=200, end_date=context.previous_date), fastperiod=12, slowperiod=26, signalperiod=9)
        if macd[-1] <= 0:
            continue

        # 如果净利润同比增长率不过关,跳过
        q = query(income.statDate, income.netProfitYoYRatio, valuation.code).filter(
            valuation.code == stock, income.statDate >= (get_today() - datetime.timedelta(days=365)))
        data = get_fundamentals(q)

        # 检查2019年分红比例是否大于25%
        if get_fundamentals(query(valuation.code, dividend_ratio.dividend_ratio_2019).filter(valuation.code == stock)).iloc[0]['dividend_ratio_2019'] <= 0.25:
            continue

        # 检查是否是ST股票
        if get_security_info(stock).name.find('ST') != -1:
            continue

        g.stock_dict[stock] = True

    # 按照结果排序
    high_value_stocks = sorted(g.stock_dict.keys(), key=lambda s: data[data['code'] == s].iloc[-1]['trade_amount'], reverse=True)[:5]
    if len(high_value_stocks) > 0:
        buy_list = [(s, 1) for s in high_value_stocks]
    else:
        buy_list = []

    # 调仓
    adjust_position(context.portfolio.positions, buy_list, [], [])```

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

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

        模板如何使用?

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


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

评论