问财量化选股策略逻辑
选股逻辑为:振幅大于1、价格低于12元、集中度(前20大股东持股比例)介于70%到20%之间的股票。
选股逻辑分析
该选股逻辑在选择价格低廉、波动性较大的股票的同时,也考虑了股票权益集中度的因素,即选择股权分散但不过分分散的股票,以平衡风险和收益。
有何风险?
该选股逻辑存在以下风险:
- 只考虑了股权集中度的因素,而未考虑股票的业绩、估值、行业性质等因素,容易选出一些基本面较差的股票;
- 集中度指标可能会出现较大的披露滞后性和统计不准确性,容易造成偏差;
- 选股结果过度依赖股票价格和波动性,对市场形势变化不敏感,容易带来较大的市场风险。
如何优化?
为了降低风险,可考虑以下方面进行优化:
- 在选股逻辑中加入股票的市盈率、市净率、ROE、净利润增长率等财务指标以及行业指标等因素;
- 考虑股票的流动性、风险水平等因素综合选股,降低单一指标过度依赖的风险;
- 股权集中度指标可以结合其他指标如股东人数、机构持股比例等进行综合判断。
最终的选股逻辑
最终的选股逻辑如下:
- 振幅大于1;
- 价格<12元;
- 前20大股东持股比例介于20%到70%之间。
同花顺指标公式代码参考
使用通达信实现该选股逻辑:
SELECT:LOW < 12 AND HOLDPRICE >= 20 AND HOLDPRICE <= 70 ORDER BY VOLATILITY DESC;
其中,HOLDPRICE为股东持股比例指标,VOLATILITY为股票波动率指标。
python代码参考
使用tushare库实现该选股逻辑:
import tushare as ts
def is_selected(code):
# 获取K线数据和股权数据
kline = ts.get_k_data(code, end='2021-06-30', ktype='D', autype='qfq')
holders = ts.get_top10_holders(code)
# 判断选股条件是否满足
if len(kline) < 1 or len(holders) < 20:
return False
hold_ratio = holders.iloc[:20]['hold_ratio'].mean()
if kline.iloc[-1]['low'] < 12 and 20 <= hold_ratio <= 70:
return True
return False
# 获取股票列表,遍历股票进行选股
stocks = ts.get_stock_basics()
selected_stocks = []
for code, row in stocks.iterrows():
if is_selected(code):
selected_stocks.append(code)
# 利用选股结果进行股票交易
for code in selected_stocks:
pass # 参考其他策略
同样需要注意导入必要的包,并且需要进行验证和过滤机制以降低风险。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
