问财量化选股策略逻辑
选股逻辑:选取RSI小于65、换手率在3%-12%之间、过去5年ROE连续大于15%的股票作为投资标的。
选股逻辑分析
该选股逻辑主要是通过技术指标和基本面等因素来筛选优质的投资标的。通过ROE的要求可以排除低质量公司,再通过控制换手率和技术指标,筛选出市场流动性较好、技术面较稳定的优质股票。
有何风险?
该选股策略可能存在的风险:
- 过度关注财务指标,而忽略基本面和市场情况的变化;
- 过于看重历史的ROE,忽略了公司的经营环境和未来的盈利情况;
- RSI指标的使用需要谨慎,可能会出现超卖、超买的情况造成错误判断;
- 过分追求稳定性,可能会忽视新经济、新产业的机会,错失高成长的股票。
如何优化?
- 将ROE指标与其他财务指标结合使用,更加全面地评估公司的价值;
- 适当降低ROE的门槛,针对不同行业设置不同的标准,更好地反映不同行业间的差异;
- 对于技术指标的使用需要谨慎处理,需要根据具体情况进行调整,比如对于不同股票可以设置不同的RSI阈值;
- 合理控制投资比例,将风险分散,避免过分依赖单一股票。
最终的选股逻辑
选取RSI小于65、换手率在3%-12%之间、过去5年ROE连续大于15%的股票作为投资标的。
同花顺指标公式代码参考
选股策略中使用的通达信公式代码如下:
/* 自定义板块测试 */
INCONCEPT('自选股')
/* 关键指标 */
AND(RSI(C,14)<65,VOLUME/L>=0.03,VOLUME/L<=0.12,
LB(TRUNC(ROE[ZXG],0),5)>=15)
python代码参考
以下是Python代码示例,仅供参考。
import tushare as ts
import pandas as pd
import numpy as np
import talib
def select_stocks():
res = []
# 自选股
stk_concepts = ['600519','300750']
# 除去停牌、ST、科创板、次新股
stk_basics = ts.get_stock_basics()
stk_basics = stk_basics[stk_basics.index.isin(stk_concepts)]
stk_basics = stk_basics[~stk_basics.index.str.match('^ST')]
stk_basics = stk_basics[~stk_basics.index.str.match('^688')]
stk_basics = stk_basics[stk_basics['launch_date'] <= '2019-09-01']
stk_basics = stk_basics[~stk_basics.index.str.match('^00224')]
stk_basics = stk_basics[~stk_basics.index.str.match('^0025[678]')]
stk_basics = stk_basics[~stk_basics.index.str.match('^30[01]')]
for idx, row in stk_basics.iterrows():
if row['outstanding'] <= 0 or row['totals'] <= 0:
continue
if row['esp'] < 0:
continue
try:
# 行情数据
hist_data = ts.get_hist_data(idx)
if hist_data is None:
continue
close_data = hist_data['close'].values
high_data = hist_data['high'].values
low_data = hist_data['low'].values
if len(close_data) < 30:
continue
# RSI
rsi_threshold = 65
rsi = talib.RSI(close_data)[-1]
if rsi >= rsi_threshold:
continue
# 连续5年ROE大于15%
roe_threshold = 0.15
roe_history = ts.get_profit_data(idx)
if roe_history is None or len(roe_history) < 5 or \
len(roe_history[roe_history['roe'] >= roe_threshold]) < 5:
continue
# 换手率
vol_threshold = (0.03, 0.12)
turnover_rate = hist_data['volume'][-1] / hist_data['volume'][0]
if turnover_rate < vol_threshold[0] or turnover_rate > vol_threshold[1]:
continue
res.append(idx)
except Exception as e:
continue
return res
# 选取符合要求的股票
res = select_stocks()
print(res)
注:在使用该代码时,请遵守国家法律法规和相关规定,严禁私自开展证券投资活动,自行承担相应风险。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


