(supermind)振幅大于1、今日控盘>21、500日内至少2次涨停_

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

问财量化选股策略逻辑

选股逻辑:振幅大于1,今日控盘>21,500日内至少2次涨停。

选股逻辑分析

该选股逻辑主要依据了三个指标,市场资金的波动、市场情绪和股票表现指标。通过该选股逻辑,我们可以筛选出价格波动性较高、市场人气较高、股票近期表现较强的优质股票。

有何风险?

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

  1. 个股涨停次数的判断标准过于苛刻:500日内至少2次涨停的标准较为苛刻,可能使得一些优质股票被排除在筛选范围之外;
  2. 对股票质量的要求不够严格:在选股中没有引入股票的基本面因素,该选股逻辑可能会挑选出一些股票的质量不够高、基本面不太稳定的个股;
  3. 过度关注短期表现:该选股策略依据的主要是股票的短期表现(涨停次数),而忽略了股票的长期表现和市场长期趋势。

如何优化?

为了降低风险和提高策略的精度,我们可以通过以下措施进行优化:

  1. 合理调整涨停次数标准:根据市场情况和行业特性,适当放宽涨停次数的标准,以纳入更多的低估值、高成长的优质股票;
  2. 引入基本面因素:在选股中引入更多的基本面和行业趋势等变量,优化选股标准,从而挑选出基本面更加稳健、质量更高的优质股票;
  3. 适量关注长期表现:在确定投资标的时,要不断关注股票的长期表现和市场长期趋势,从而自我约束,避免过度集中于短期表现。

最终的选股逻辑

综上所述,我们最终选择以下选股逻辑:

  1. 振幅大于1;
  2. 今日控盘大于21;
  3. 500日内涨停次数不少于2次;
  4. 股票市净率位于市场第一四分位数以下,市盈率(TTM)位于市场第一四分位数以下。

同花顺指标公式代码参考

C1 = AMP() > 1;
C2 = CONTROLLING_SHARES_DAY_CHG() > 21;
REF_LIMIT = 500;
C3 = (HHV(MAX(CLOSE,REF(HIGH,1)),REF_LIMIT) == HHV(MAX(CLOSE,REF(HIGH,1)),REF_LIMIT-1)) AND \
     (COUNT(HHV(MAX(CLOSE,REF(HIGH,1)),REF_LIMIT-1) == REF(HIGH,1),REF_LIMIT-1) >= 2);
C4 = PB() < first_quartile(PB()) AND PE_TTM() < first_quartile(PE_TTM());
SELECTOR = C1 AND C2 AND C3 AND C4;
RESULT = SORT(RANK(SELECTOR), 1)==1;

python代码参考

def select_stocks():
    selected_stocks = []
    all_trading_days = get_all_trade_days()
    all_trading_days = sorted(all_trading_days, reverse=True)
    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
        ref_limit = 500
        high_array = get_high(stock, end_date=datetime.now(), count=ref_limit+1)
        close_array = get_close(stock, end_date=datetime.now(), count=ref_limit+1)
        c3 = (max(close_array[-ref_limit:]) == max(high_array[-ref_limit:-1])) and (sum([1 if max(close_array[-i-1:-1]) == high_array[-i-2] else 0 for i in range(ref_limit-1)]) >= 2)
        data = get_fundamentals(query(valuation).filter(valuation.code == stock), date=datetime.now())
        if not data.empty:
            c4 = data['valuation_pb'][0] < np.percentile(get_fundamentals(query(valuation).filter(valuation.timestamp >= (datetime.now() - timedelta(days=120))), date=datetime.now(), count=120)['valuation_pb'], 25) and \
            data['valuation_pe_ratio'][0] < np.percentile(get_fundamentals(query(valuation).filter(valuation.timestamp >= (datetime.now() - timedelta(days=120))), date=datetime.now(), count=120)['valuation_pe_ratio'], 25)
        if c1 and c2 and c3 and c4:
            selected_stocks.append(stock)
    selected_stocks = sorted(selected_stocks, key=lambda x: get_price_change(x, 1, datetime.now(), frequency='1d'), 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)
收益&风险
源码

评论