问财量化选股策略逻辑
选股逻辑:选取RSI小于65、PE大于0、换手率在3%~12%之间的股票。
选股逻辑分析
该选股策略在基本面的基础上,加入了换手率因素。换手率是评价一只股票交易活跃度的指标,3%~12%之间的换手率可以认为是股票交易活跃且市场认可度较高的表现。而RSI和PE是基本面分析中常用的指标,可以帮助筛选出估值较合理的股票。
有何风险?
该选股策略可能在市场环境变化时导致选股效果下降。换手率因素反映的是市场对该股票的交易活跃程度,但是交易活跃度随市场情况不定。当市场上行时,合理范围的换手率可能会上升,因此标准过于死板可能会忽略这种情况。同样,如果市场环境发生变化,筛选出的股票可能难以在新的市场环境下继续保持优异表现。
如何优化?
为了在不同市场环境下仍能保持选股的效果,可以将筛选条件设置为相对灵活的指标范围,例如换手率限制可以适当扩大至2%~15%。此外,可以结合行业、财务数据等进行综合分析,更好地了解选出股票在不同市场情况下的表现。
最终的选股逻辑
选取RSI小于65、PE大于0、换手率在2%~15%之间的股票,加入行业、财务数据的综合考虑。
同花顺指标公式代码参考
- RSI: RSI(14)
- PE:pe_ttm
- 换手率:turnover_ratio
Python代码参考
import pandas as pd
import tushare as ts
import talib
def get_stock_list(rsi_threshold=65, pe_threshold=0, turnover_min=0.03, turnover_max=0.12, universe_threshold=0, top_n=5):
stock_list = pd.DataFrame(columns=['股票代码', '名称', '流通股本'])
for _, row in ts.get_today_all().iterrows():
symbol = row['code']
if symbol.startswith('60') or symbol.startswith('300'):
if row['code'][0] == '6':
symbol = 'sh' + symbol
else:
symbol = 'sz' + symbol
try:
rsi = talib.RSI(ts.get_k_data(symbol, start=datetime.date.today()-datetime.timedelta(days=1), end=datetime.date.today())['close'], timeperiod=14)[-1]
if rsi > rsi_threshold:
continue
hist_data = ts.get_k_data(symbol)
if float(row['pe_ttm']) < pe_threshold:
continue
turnover = row['turnoverratio']
if turnover < turnover_min or turnover > turnover_max:
continue
stock_list = stock_list.append({'股票代码': symbol[:6], '名称': row['name'], '流通股本': row['totals'] * 10000}, ignore_index=True)
except:
continue
return stock_list[:top_n]
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


