问财量化选股策略逻辑
选股逻辑:振幅大于1,底部抬高,100亿市值以内的无亏损企业。
选股逻辑分析
除了原有技术面指标外,该选股逻辑加入了基本面指标——企业的净利润与总市值,筛选出100亿市值以内且没有亏损的企业,可以考虑到企业的盈利能力和市值因素。而且,100亿市值以内的企业相对规模较小,具有较高的成长性,也是市场上的潜力股,符合了投资者的选股需求。
有何风险?
该选股逻辑过于依赖基本面指标,可能会遗漏一些具有良好技术面但还没有实现盈利的潜力股,而且基本面指标可能会受到市场、行业和宏观环境等因素的影响。此外,选股条件较为严格,可能导致筛选出的股票数量过少,或者找不到符合条件的股票。
如何优化?
为了提高该选股逻辑的准确性,可以兼顾技术面和基本面的指标,如增加一些成交量指标和MACD(Moving Average Convergence Divergence)等技术面指标和营收增长率等基本面指标,全面考虑股票市场估值和公司业绩增长性等方面因素。此外,可以增加一些灵活性,如允许净利润为负但ROE高于行业平均水平等方式,以寻找更多的优质股票。
最终的选股逻辑
基于以上分析,完善的选股逻辑如下:
1.振幅大于1;
2.底部抬高;
3.100亿市值以内;
4.无亏损;
5.加入其他技术面和基本面指标。
同花顺指标公式代码参考
以下是同花顺实现该选股策略的指标公式代码:
C1 = AMP() > 1;
C2 = BOTTOM(HIGH, C1) > BOTTOM(HIGH, C1 + 1) AND BOTTOM(HIGH, C1) > BOTTOM(HIGH, C1 + 2);
C3 = CAPITALIZATION() < 1e10;
C4 = NETPROFIT() > 0;
SELECTOR = C1 AND C2 AND C3 AND C4;
RESULT = SELECTOR;
python代码参考
以下是Python实现该选股策略的部分代码:
# 筛选符合条件的股票
def select_stocks(start_date, end_date):
selected_stocks = []
for stock in stocks:
# 获取该股票在指定时间内的历史K线数据
df_kline = get_price(stock, start_date=start_date, end_date=end_date, frequency='daily', fields=['open', 'high', 'low', 'close', 'volume'], skip_paused=True, fq='pre')
# 计算底部抬高指标和振幅,判断是否符合选股逻辑
c1 = df_kline['high'].std() > 1
c2 = BOTTOM(df_kline['high'], 2) > BOTTOM(df_kline['high'], 3) > BOTTOM(df_kline['high'], 4)
# 判断股票市值和净利润,判断是否符合选股逻辑
c3 = get_fundamentals(query(valuation.market_cap).filter(valuation.code == stock))[0]['market_cap'] < 1e10
c4 = get_fundamentals(query(indicator.net_profit).filter(indicator.code == stock))[0]['net_profit'] > 0
# 加入其他技术面和基本面指标的判断
# 选取符合条件的股票,加入结果列表中
if c1 and c2 and c3 and c4:
selected_stocks.append(stock)
return selected_stocks
result = select_stocks('2021-01-01', '2021-12-31')
print(result)
以上代码仅供参考,具体实现还需要根据自身需求进行调整。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
