问财量化选股策略逻辑
选股逻辑为:在换手率3%-12%,剔除北京A股,并筛选出流通盘小于等于55亿股的股票。
选股逻辑分析
该选股策略仍然考虑了资金面因素,但增加了流通盘的筛选条件。流通盘较小的股票通常具有较小的市值,同样具有更高的风险和更大的波动性。通过筛选出流通盘符合一定范围的股票,期望可以减少风险,增加选股准确性。
有何风险?
该选股逻辑仅考虑了部分资金面因素,未考虑其他重要的基本面指标和市场因素,例如公司业绩、PE、市值等等。同时,选取的55亿股流通盘并不一定是最优的,可能会忽略部分具有潜力的股票。
如何优化?
建议综合考虑其他的基本面、行业因素以及技术面指标等内容,例如板块热度、市盈率、均线突破等指标。可以针对流通盘进行细分,根据个股市值和流通盘占比等指标,细化筛选标准,选择具有一定长期投资价值的股票。
最终的选股逻辑
在换手率3%-12%,剔除北京A股,并筛选出流通盘小于等于55亿股的股票,综合考虑其他的基本面、行业因素以及技术面指标等内容,选择具有一定长期投资价值的股票。
同花顺指标公式代码参考
// 定义变量
HSL:=VOL/FLOAT_SHARE/10000; //计算换手率,需要先计算流通股本,FLOAT_SHARE为上市公司流通股本总数(万股)
CAP:=AMOUNT/HSL/10000; //计算市值,市场总交易金额(元)/换手率
FILTER:CAP>=50 AND CAP<=550 AND HSL>=3 AND HSL<=12 AND AVERAGE[北京股份]==0,0,1; //筛选
Python代码参考
import tushare as ts
import numpy as np
import pandas as pd
def select_good_stocks():
ts.set_token('your_token')
pro = ts.pro_api()
# 筛选出换手率3%-12%,剔除北京A股,并筛选出流通盘小于等于55亿股的股票
df1 = pro.stock_basic(exchange='SZSE', list_status='L', fields='ts_code,name,industry,pe,pb,turnover_rate,amount,total_mv,float_mv')
df1 = df1[(df1['turnover_rate'] >= 3) & (df1['turnover_rate'] <= 12)]
df1 = df1[(df1['name'].str.contains('ST') == False)]
df1 = df1[(df1['ts_code'].str.startswith('002') == True) | (df1['ts_code'].str.startswith('000') == True)]
df1 = df1[df1['float_mv'] <= 5500000000]
df1 = df1[df1['float_mv'] >= 5000000000]
df2 = pro.daily_basic(ts_code='', trade_date='20210118', fields='ts_code,float_share')
df2 = df2.set_index('ts_code')
df2 = df2.loc[df1['ts_code'].tolist()]
df3 = pd.concat([df1, df2], axis=1)
# 其他指标筛选和排序
df3 = df3[(df3['pe'] >= 0) & (df3['pb'] >= 0) & (df3['pb'] <= 3)]
df3 = df3.sort_values(by=['turnover_rate'], ascending=False)
df3 = df3.head(20)
return df3
good_stocks = select_good_stocks()
print(good_stocks)
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
