问财量化选股策略逻辑
选股逻辑:振幅大于1,反包,连续5年ROE>15%。
选股逻辑分析
该选股逻辑综合运用了股票的技术指标和基本面分析指标进行筛选。通过考虑振幅、反包和公司ROE等因素,筛选出具有较大波动性、良好趋势性和盈利能力的股票,具有一定的逻辑合理性。
有何风险?
该选股策略虽然综合考虑了股票的技术指标和基本面情况,但是也可能存在一些风险。例如,该策略比较注重公司的ROE,而ROE的计算方法和公司的会计政策有关,如果会计政策发生改变,ROE的计算方法可能也会随之改变;此外,该策略未考虑公司的估值情况,具有较高的ROE并不一定代表该股票的估值合理。
如何优化?
可以考虑在筛选股票时,加入其他基本面指标,如市盈率、市净率、股息率等,从多个角度综合考虑股票的基本面情况。此外,在考虑公司ROE时,还可以注重分析ROE的变化趋势,以及相应的原因,以便更好地理解公司的盈利能力。同时综合考虑公司的财务风险、行业和市场情况等因素,制定更全面、可靠的选股策略。
最终的选股逻辑
在以上分析基础上,提出完善后的选股逻辑:
- 振幅大于1;
- 近3个交易日内出现反包形态;
- 最近5个财年ROE均大于15%;
- 市盈率不得高于行业平均值。
同花顺指标公式代码参考
以下是该选股策略在通达信中的指标公式代码:
F01: (HIGH/LOW - 1) > 0.01; // 振幅大于1
F02: NOT(SIGN(CLOSE - REF(CLOSE, 1)) == SIGN(REF(CLOSE, 1) - REF(CLOSE, 2))); // 近3个交易日内出现反包形态。
F03: ROE > 0.15;
F04: PE <= INDUSTRY_AVG_PE;
FILTER: F01 AND F02 AND F03 AND F04;
SELECT(IF(1, 1, 0), "选股"); // 输出选中的股票
python代码参考
以下是 Python 实现该策略的选股逻辑:
# 数据预处理部分
close = dv.get_ts('close', symbol=symbols)
high = dv.get_ts('high', symbol=symbols)
low = dv.get_ts('low', symbol=symbols)
df_pct_chg = close.pct_change()
df_pct_chg_abs = df_pct_chg.abs()
df_pct_chg_abs[df_pct_chg_abs.isna()] = 0
ta_func_renko = Ta('CDLTRISTAR', 0, dv.get_ts('open', symbol=symbols), high, low, close)
rt_filter = (ta_func_renko == 100)
rt_filter = rt_filter.iloc[:, :-1].sum(axis=1) > 0
roe = get_fundamentals(query(fundamentals.financial_indicator.roe).filter(
fundamentals.financial_indicator.stockcode.in_(symbols)), date='2019-12-31', expect_df=True)
cond_roe = roe > 0.15
pe = get_fundamentals(query(fundamentals.financial_indicator.pe_ratio).filter(
fundamentals.financial_indicator.stockcode.in_(symbols)), date='2019-12-31', expect_df=True)
industry_pe = get_industry_PE(pe)
cond_pe = pe <= industry_pe
selected_stocks = ((amp & rt_filter) & cond_roe & cond_pe).sort_values(ascending=False)
return selected_stocks.index.tolist()
通过综合考虑振幅、反包、ROE和市盈率等因素来进行筛选,以筛选出高质量股票。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
