问财量化选股策略逻辑
选股逻辑:振幅大于1, 今日控盘>21, 10天内涨停天数大于2。
选股逻辑分析
该选股逻辑依然是基于短期市场趋势的策略,但是不同于之前考虑股票均线等技术面指标,加入了涨停指标来进行筛选,着重考虑近期市场热度。该逻辑的优点是对市场的非常敏感,能较好地追随市场波动,加入涨停天数可以强化其短期应对市场波动的能力。但是该逻辑也有相应的风险。
有何风险?
该选股逻辑可能存在以下风险:
- 盲目跟从涨停带来的风险:过度关注短期股价波动,极易被“短期内资金进场”所迷惑而进行操作而带来风险;
- 股票价格波动的随机性风险:股价涨停的现象往往与其他不可预知因素有关,例如政策变动、财报披露等,因此选择涨停作为指标也有其限制性;
- 浮动盈利难以定性分析:除去考虑市场趋势选择股票的评价标准,涨停与否这样的二元指标带来的判断结果,给选股的精确度带来一定限制。
如何优化?
为了提高精度和应对可能的风险,可以采取以下优化措施:
- 加强涨停指标评估的方法:可以通过深入研究具体股票样本加强判断分类方法,例如不同板块等涨停指标的波动状况等,增加预测能力;
- 引入基本面分析: 可以通过筛选一些具有较高的增长性和盈利性的股票(例如:市盈率、市净率、净利润增长率、经营现金净流量等)提高类股票池中优质股票的比例;
- 不同时间段的天数进行相对打分:针对涨停天数指标,可以考虑对当天的涨停情况,以及过去数天的同类数据进行比较打分,而不是单纯数量过少就裁汰该股。
最终的选股逻辑
经过优化后,我们最终选择以下选股逻辑:
- 振幅大于1;
- 今日控盘大于21;
- 过去10天的涨停天数大于2;
- 市盈率小于50;
- 获得高于市场平均以上利润或具有明显增长性的股票;
同花顺指标公式代码参考
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亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
