问财量化选股策略逻辑
选股逻辑:振幅大于1%, 北京A股除外, 换手率3%-12%。
选股逻辑分析
该选股策略结合了股票波动和流动性的因素,通过限制振幅和地域以及选取合适的换手率区间来筛选股票。适用于中至长期投资策略。该策略主要通过振幅排除过于波动的股票,通过区间排除流动性过强或者过弱的股票,从而筛选出基本面和估值均衡的股票。
有何风险?
该选股逻辑可能存在以下风险:
- 忽略了公司的基本面和未来增长性,可能会导致股票的风险增加;
- 对于换手率,仅仅限制在区间范围内,可能忽略了个别股票的交易性质,存在筛选出流动性并不足够的股票的风险;
- 振幅大小并不是稳定的指标,可能会产生过分依赖的情况;
- 忽略了其他技术指标的预判,更加侧重于股票的流动性和风险,存在一定的主观判断。
如何优化?
为了改进该选股策略,可以考虑以下方面:
- 添加其他技术指标作为辅助,结合流动性和估值因素来提高选股策略的准确性和稳定性;
- 增加对公司的财务指标、行业景气度、管理水平、未来前景的评估,可得到额外的权值;
- 考虑加入基于市场需求的指标,以确认选定股票实际的买卖能力和风险;
- 制定规则来确保选股策略的长期稳健,避免出现过度风险的情况。
最终的选股逻辑
经过改进后的选股逻辑如下:
- 振幅大于1%, 北京A股除外;
- 选取换手率在3%-12%之间的股票,通过买盘和卖盘的规律来选股;
- 选取相对于股票当前市价的偏移程度小于±2%的股票;
- 增加对公司的财务指标、行业景气度、管理水平、未来前景的评估可得到额外的权值。
- 添加基于市场需求的指标,即选取市盈率在相似行业股票的均值上下波动5%左右的股票。
同花顺指标公式代码参考
选股逻辑的同花顺指标公式如下:
NVI:M199,MA(4),MA(26);
选股公式:MAX(MA(5)/MA(60),NVI/MV)+MA(5)/MA(60)>=2 AND ABS((CLOSE-MA(CLOSE,20))/MA(CLOSE,20))<0.05 AND (CAMRANK(CLOSE,21)+5)*0.5>=80 AND CAPITALIZATION<=10000000000;
python代码参考
选股逻辑的python代码如下:
def liquidity_picker(context):
# 振幅大于1%, 北京A股除外
narrow_stocks = context.narrow_stocks[((context.narrow_stocks.high / context.narrow_stocks.low) - 1) > 0.01]
exclude_bj_stocks = narrow_stocks[narrow_stocks.area != '北京']
# 选取换手率在3%-12%之间的股票,通过买卖盘的规律来选股
liquidity_stock = exclude_bj_stocks[context.stock_api.quote(context.stock_api.get_trade_days(end_date=context.current_date, count=10))['turnover_rate'] > 3]
liquidity_stock = liquidity_stock[context.stock_api.quote(context.stock_api.get_trade_days(end_date=context.current_date, count=10))['turnover_rate'] < 12]
# 选取相对于股票当前市价的偏移程度小于±2%的股票
selected = liquidity_stock[((liquidity_stock.price - ta.MA(liquidity_stock.price, timeperiod=60)) / ta.MA(liquidity_stock.price, timeperiod=60)).abs() < 0.02]
# 增加对公司的财务指标、行业景气度、管理水平、未来前景的评估
selected = selected.sort_values('score', ascending=False).reset_index()
selected.loc[:, 'score'] += 10 * (selected['PB'] - ta.MA(selected['PB'], timeperiod=5))
selected.loc[:, 'score'] += 10 * (selected['PE'] - ta.MA(selected['PE'], timeperiod=5))
# 添加基于市场需求的指标
selected.loc[:, 'score'] += 5 * (selected['PE'] - selected.groupby('industry')['PE'].transform('mean')).abs() / selected.groupby('industry')['PE'].transform('mean')
selected = selected.sort_values('score', ascending=False)
return selected.index.tolist()
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
![94c5cde12014f99e262a302741275d05.png](http://u.thsi.cn/imgsrc/pefile/94c5cde12014f99e262a302741275d05.png)