问财量化选股策略逻辑
选股逻辑为:振幅大于1,换手率>2%且<9%,2021年营收/2018年营收大于1.1。该选股策略主要考虑市场波动和活跃度因素,以及公司基本面因素,以寻找具有成长性的股票。
选股逻辑分析
该选股逻辑主要包括市场波动和活跃度因素,以及货币资金的运用、机会评估的实施和货币资金间的转移等基本面因素,以寻找具有成长性的股票。其中,振幅和换手率主要衡量市场活跃度和波动性,是度量股票流动性强弱的指标;2021年营收/2018年营收大于1.1可反映公司业绩增长性,是度量成长性的重要指标。
有何风险?
该选股策略忽略了公司的长期价值潜力和治理结构情况,仅以短期业绩为依据进行选股,过度强调了成长性而忽略了价值因素,忽略了公司财务状况、行业竞争等其他重要因素,容易造成过于集中投资和缺乏分散化的风险。
如何优化?
为了提高选股策略的稳定性和精度,可以加入其他技术指标和基本面指标如市盈率、市净率、ROE、股息率等因素,综合考虑公司的基本面和业绩增长率,以选择优质股票。同时加入风险控制和仓位管理策略,避免过度集中投资和频繁交易。加强对公司治理结构的分析和评估,以降低风险和提高收益。
最终的选股逻辑
选股条件为:振幅大于1,换手率>2%且<9%,2021年营收/2018年营收大于1.1,市盈率<50,市净率<10,ROE>15%,股息率>2%。同时加入风险控制和仓位管理策略,避免过度集中投资和频繁交易。加强对公司治理结构的分析和评估,以降低风险和提高收益。
同花顺指标公式代码参考
选股条件为:振幅大于1,换手率>2%且<9%,2021年营收/2018年营收大于1.1,市盈率<50,市净率<10,ROE>15%,股息率>2%。
/** 常规指标 **/
C1:(HIGH-LOW)/LOW*100>1;
C2:VOL/SUM(VOL,2)>=0.02 AND VOL/SUM(VOL,2)<=0.09;
/** 扩展指标 **/
C3: (selectb(year, date)<2019 AND selectb(year, date)>=2016;
sum(n_income)/max(sum(n_income))>1.1);
C4: PE_TTM < 50 and PB < 10;
C5: ROE_WA >= 15;
C6: DIV_YIELD >= 0.02;
SORT(C6 AND C5 AND C4 AND C3 AND C2 AND C1, DES); //从大到小排序
TYP1: C1 AND C2 AND C3 AND C4 AND C5 AND C6; //全部条件
CONDITION = TYP1;
Python代码参考
import pandas as pd
import tushare as ts
def select_stocks(length):
ts.set_token('your token')
pro = ts.pro_api()
# 获取股票数据
stock_data = pro.stock_basic(list_status='L', exchange='SSE', fields='ts_code,symbol,name,industry,list_date')
current_date = '20220308'
# 筛选符合条件的股票
selected_stocks = []
for index, row in stock_data.iterrows():
code = row['ts_code']
info = {}
info['code'] = code
info['name'] = row['name']
# 排除科创板股票
industry = row['industry']
if industry.startswith('688'):
continue
# 获取技术指标数据
tech_data = pro.query('daily', ts_code=code, start_date='20220208', end_date=current_date, fields='high,low,close,vol')
finance_data = pro.fina_indicator(ts_code=code, start_date='20160101', end_date='20211231', fields='n_income,pe_ttm,pb,roe_wa,div_yield')
turnover_rate = tech_data.iloc[-1]['vol'] / pro.stock_basic(ts_code=code).iloc[0]['total_share']
if len(tech_data) > 0 and len(finance_data) > 0:
# 计算技术指标
high = tech_data.iloc[-1]['high']
low = tech_data.iloc[-1]['low']
volatility = high - low
cond1 = turnover_rate > 2 and turnover_rate < 9
cond2 = volatility > 1
cond3 = finance_data.iloc[-1]['n_income'] / finance_data['n_income'][finance_data['end_date'].apply(lambda x: int(str(x)[:4]))==2018].values[0] > 1.1
cond4 = finance_data.iloc[-1]['pe_ttm'] < 50 and finance_data.iloc[-1]['pb'] < 10
cond5 = finance_data.iloc[-1]['roe_wa'] > 15
cond6 = finance_data.iloc[-1]['div_yield'] > 0.02
# 判断是否符合条件
if cond1 and cond2 and cond3 and cond4 and cond5 and cond6:
selected_stocks.append(info)
if len(selected_stocks) >= length:
break
return selected_stocks
致辞
本次问答为问财量化选股策略逻辑的第五十三篇,该选股策略主要考虑市场波动和活跃度因素,并结合公司业绩增长率和基本面指标,以寻找具有成长性的股票,需要注意风险及多因素考虑。未来的选股策略应该更加注重长期价值和财务状况等更加全面和细致的指标,同时应该采用并强化风险控制和仓位管理等策略,以提高选股的精度和稳定性。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
