问财量化选股策略逻辑
选股逻辑:振幅大于1,今日控盘>21,下午大单净流入。
选股逻辑分析
该选股逻辑主要依据了三个指标,振幅的大涨或大跌表明了市场资金的波动,控盘的变化情况反映了盘面情绪的变化,下午大单净流入则说明多空力量的对比情况。通过以上指标的联合判断,能够筛选出价格波动性高、市场人气高、趋势较为明朗的优质股票。
有何风险?
该选股逻辑可能存在以下风险:
- 下午大单净流入判断不准确:仅通过下午市场的大单交易情况,可能无法准确反映市场情况,从而使选股策略缺乏一定的可靠性;
- 过度关注短期行情:该选股逻辑强调大资金的交易行为,过度关注短期行情容易让投资者忽视公司基本面等重要因素的影响;
- 选择判断指标有限:只依赖市场社会人气、资金流向等指标选股,可能存在选股依据单一的情况,导致选股结果偏差较大。
如何优化?
为了降低风险和提高策略的精度,我们可以通过以下措施进行优化:
- 引入更多的指标:在选股指标上引入更多的基本面、技术面的指标,比如市净率、股息率、板块走势等;
- 考虑其他市场因素:除了大单净流入之外,还应该关注市场场外资金的流入情况、公司业绩等其他指标对于选股的影响,更加全面地考虑市场情况和公司的实际情况;
- 四分位数排名:在策略优化之后,采用四分位数排名进行筛选,避免盲目跟从市场大趋势。
最终的选股逻辑
综上所述,我们最终选择以下选股逻辑:
- 振幅大于1;
- 今日控盘大于21;
- 下午大单净流入;
- 股票的市净率位于市场第一四分位数以下,股息率处于市场第一四分位数以上。
同花顺指标公式代码参考
SET dib='a';
SET t=10;
C1 = AMP()>1;
C2 = CONTROLLING_SHARES_DAY_CHG()>21 AND dib>=(-0.15);
C3 = DAILY_BIG_NET_FLOW_VOL()>0;
C4 = PB()<first_quartile(PB()) AND DIVIDEND_YIELD()>first_quartile(DIVIDEND_YIELD());
SELECTOR = C1 AND C2 AND C3 AND C4;
RESULT = SORT(RANK(SELECTOR), 1)==1;
python代码参考
def select_stocks():
selected_stocks = []
all_trading_days = get_all_trade_days()
all_trading_days = sorted(all_trading_days, reverse=True)
for stock in get_all_stocks():
c1 = get_price(stock, end_date=datetime.now(), frequency='1d', fields='amplitude')[-1] > 0.01
c2 = abs(get_controlling_shareholders(stock, end_date=datetime.now(), frequency='1d')['controlling_shareholders_day_pct_change'][-1]) > 0.21
c3 = get_money_flow(stock, end_date=datetime.now(), frequency='1d')['big_inflow'][-1] > 0
data = get_fundamentals(query(valuation, valuation, income).filter(valuation.code == stock), date=datetime.now())
if not data.empty:
c4 = data['valuation_pb'][0] < np.percentile(get_fundamentals(query(valuation).filter(valuation.code == stock), date=datetime.now(), count=120)['valuation_pb'], 25) and \
data['valuation_dividend_yield'][0] > np.percentile(get_fundamentals(query(valuation).filter(valuation.code == stock), date=datetime.now(), count=120)['valuation_dividend_yield'], 75)
if c1 and c2 and c3 and c4:
selected_stocks.append(stock)
selected_stocks = sorted(selected_stocks, key=lambda x: get_price_change(x, 1, datetime.now(), frequency='1d'), reverse=True)
return selected_stocks[:5]
result = select_stocks()
print(result)
以上Python代码仅供参考,具体实现还需要根据自己的需求进行调整。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
