问财量化选股策略逻辑
选股逻辑:选择RSI小于65,规模在2亿以上,2021年有业绩增长的股票。
选股逻辑分析
该选股逻辑主要通过技术指标来判断股票的短期上涨趋势,并考虑基本面中的市值因素,同时加入了业绩增长因素,强调股票的增长性,更符合市场投资趋势,具有一定的实用性。
有何风险?
该选股逻辑存在以下几个风险:
- 过度关注业绩增长因素,有可能忽略了一些股票的估值等其他因素,有可能在牛市中获利,但在熊市中容易产生亏损;
- 选取的RSI指标可能过于单一,应该结合其他指标进行综合考虑;
- 过度依赖历史数据,适应性不够强,有可能在市场大幅变化时失效。
如何优化?
可以采用一些多因子模型对股票进行评价,综合各项指标,同时结合市场和行业趋势等宏观因素,进行更全面的选股分析,提高选股的精准性和合理性。
最终的选股逻辑
筛选出RSI小于65,规模在2亿以上,2021年有业绩增长的股票。
同花顺指标公式代码参考
RSI(CLOSE,14) < 65 AND MKT_CAP >= 200000000 AND YEARLY(YOY(NP_PARENT_COMPANY_SHAREHOLDER)>=0.1, 1)
python代码参考
from jqdata import *
import talib
# 获取选股结果
def select_stocks(context):
# 获取市场和行业趋势
market_trend = market.get_trend(context.current_dt)
industry_trend = get_industry_trend(context, ['电信运营', '互联网']) # 以电信运营和互联网行业为例
# 获取所有股票的技术形态、基本面信息和2019年至今的财务数据
all_tech = history_bars(context.universe, 26, '1d', ['high','low','close'])
all_info = get_fundamentals(query(valuation, indicator, stockcode).filter(
valuation.circulating_market_cap <= 5.5e9,
valuation.circulating_market_cap >= 2e8
)).drop(columns=['id', 'day', 'pub_date'])
all_financials = get_fundamentals(query(indicator, income, balance, cash_flow, stockcode).filter(
indicator.pub_date >= (datetime.datetime.now()-datetime.timedelta(365*2)).strftime('%Y%m%d')
)).drop(columns=['id', 'day', 'pub_date'])
# 筛选RSI小于65
selected_stocks = all_info.loc[all_info['stockcode'].isin(all_tech.columns)]
selected_stocks = selected_stocks.loc[talib.RSI(all_tech['close'], timeperiod=14).iloc[-1] < 65]
# 筛选市值2亿以上
selected_stocks = selected_stocks.loc[selected_stocks['circulating_market_cap'] >= 2e8]
# 筛选2021年有业绩增长的股票
year_2021 = all_financials['day'] >= '2021-01-01'
year_2019 = (all_financials['day'] >= '2019-01-01') & (all_financials['day'] <= '2019-12-31')
selected_stocks = selected_stocks.loc[((all_financials.loc[year_2021]['np_parent_company_owners'] - all_financials.loc[year_2019]['np_parent_company_owners']) / all_financials.loc[year_2019]['np_parent_company_owners']) >= 0.1]
# 筛选符合市场趋势的股票
selected_stocks = selected_stocks.loc[selected_stocks['stockcode'].isin(market_trend['up'] + market_trend['strong_up'] + industry_trend['电信运营']['up'] + industry_trend['互联网']['up'])]
return selected_stocks
# 注册选股函数
m = M.instruments(v['margin'])
m.add_strategy(select_stocks, force=True)
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


