(supermind)振幅大于1、今日控盘>21、10天内涨停天数大于2_

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

问财量化选股策略逻辑

选股逻辑:振幅大于1, 今日控盘>21, 10天内涨停天数大于2。

选股逻辑分析

该选股逻辑依然是基于短期市场趋势的策略,但是不同于之前考虑股票均线等技术面指标,加入了涨停指标来进行筛选,着重考虑近期市场热度。该逻辑的优点是对市场的非常敏感,能较好地追随市场波动,加入涨停天数可以强化其短期应对市场波动的能力。但是该逻辑也有相应的风险。

有何风险?

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

  1. 盲目跟从涨停带来的风险:过度关注短期股价波动,极易被“短期内资金进场”所迷惑而进行操作而带来风险;
  2. 股票价格波动的随机性风险:股价涨停的现象往往与其他不可预知因素有关,例如政策变动、财报披露等,因此选择涨停作为指标也有其限制性;
  3. 浮动盈利难以定性分析:除去考虑市场趋势选择股票的评价标准,涨停与否这样的二元指标带来的判断结果,给选股的精确度带来一定限制。

如何优化?

为了提高精度和应对可能的风险,可以采取以下优化措施:

  1. 加强涨停指标评估的方法:可以通过深入研究具体股票样本加强判断分类方法,例如不同板块等涨停指标的波动状况等,增加预测能力;
  2. 引入基本面分析: 可以通过筛选一些具有较高的增长性和盈利性的股票(例如:市盈率、市净率、净利润增长率、经营现金净流量等)提高类股票池中优质股票的比例;
  3. 不同时间段的天数进行相对打分:针对涨停天数指标,可以考虑对当天的涨停情况,以及过去数天的同类数据进行比较打分,而不是单纯数量过少就裁汰该股。

最终的选股逻辑

经过优化后,我们最终选择以下选股逻辑:

  1. 振幅大于1;
  2. 今日控盘大于21;
  3. 过去10天的涨停天数大于2;
  4. 市盈率小于50;
  5. 获得高于市场平均以上利润或具有明显增长性的股票;

同花顺指标公式代码参考

C1 = AMP() > 1;
C2 = CONTROLLING_SHARES_CHANGE() > 0.21;
C3 = COUNT(DAY_POINT(1, HIGH==REF(HIGH,1))) > 2;
C4 = PE_RANK() <= LEN(ALL_SHARES("A", 0)) * 0.5;
C5 = FUNDAMENTAL_DATA("EPS_BASIC") > ALL_SHARES('000001.XSHE', 0, end_date=datetime.now()-timedelta(days=1)).iloc[-1]['eps_basic'];
C6 = FUNDAMENTAL_DATA("ROE_TTM") > ALL_SHARES('000001.XSHE', 0, end_date=datetime.now()-timedelta(days=1)).iloc[-1]['roe_ttm'];
SELECTOR = C1 AND C2 AND C3 AND C4 AND C5 AND C6;
RESULT = SORT_RANK(SELECTOR, ASCEND(SEARCH_RANK()))

python代码参考

def select_stocks():
    selected_stocks = []
    for stock in get_all_stocks():
        c1 = get_price(stock, end_date=datetime.now(), frequency='1d', fields='amplitude')[-1] > 0.01
        c2 = abs(get_controlling_shareholders(stock, end_date=datetime.now(), frequency='1d')['controlling_shareholders_day_pct_change'][-1]) > 0.21
        price_data = get_price(stock, end_date=datetime.now(), frequency='1d', fields=['high'])
        c3 = len([i for i in range(1, 11) if price_data[-i]['high'] == price_data[-i-1]['high']]) > 2
        fundamental_data = get_fundamental_data(stock, end_date=datetime.now(), fields=['pe_ratio', 'eps_basic', 'roe_ttm'])
        c4 = fundamental_data['pe_ratio'][0] < 50
        benchmark_data = get_fundamental_data('000001.XSHE', end_date=datetime.now()-timedelta(days=1), fields=['eps_basic', 'roe_ttm'])
        c5 = fundamental_data['eps_basic'][0] > benchmark_data['eps_basic'][0]
        c6 = fundamental_data['roe_ttm'][0] > benchmark_data['roe_ttm'][0]
        if c1 and c2 and c3 and c4 and c5 and c6:
            selected_stocks.append(stock)
    selected_stocks = sorted(selected_stocks, key=lambda x: get_stock_heat_index(x), reverse=True)
    return selected_stocks[:5]

result = select_stocks()
print(result)

以上Python代码仅供参考,具体实现还需要根据自己的需求进行调整。

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

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

    模板如何使用?

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


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

评论