选股策略:
1、以中证500为股票池;
2、按照权重从大到小排列获取后三百只股票;
3、过滤掉创业板及科创板的股票
4、过滤掉当天停牌的股票
5、 基础科目及衍生类:获取每只股票的finaexp_of_gr(财务费用/营业总收入)、current_exint(无息流动负债)、netdebt(净债务)。以上数据偏向小值。
6、 每股指标因子 undist_profit_ps(每股未分配利润)、q_eps(每股收益)、surplus_rese_ps(每股盈余公积)。以上数据取大值。
7、 价值因子:ar_turn(应收账款周转率)、cogs_of_sales(销售成本率)、debt_to_eqt(产权比率),其上数据取小值。
8、获取每只股票以上九个数据,3倍中位数去极值。
9、(5)中三个都利用1分位数分类,分位内的获得1分。(6)中三个都以四分位数进行区分,4分位内的获得1分。(7)中三个都利用1分位数分类,分位内的获得1分。
10、利用得分降序排列取前十只。
import tushare as ts
import pandas as pd
import numpy as np
import datetime
from dateutil.relativedelta import relativedelta
from time import sleep
# 日期处理
today = datetime.datetime.today().strftime('%Y%m%d') #获取今天的年月日
lastday = datetime.datetime.today() - datetime.timedelta(days=1) #获取前一天日期
lastday = lastday.strftime('%Y%m%d')
last_year = datetime.datetime.today() - relativedelta(months=12) #获取前一年的日期
last_year = last_year.strftime('%Y%m%d') # 转换成STR
Lastweek = datetime.datetime.today() - datetime.timedelta(days=7) #获取前一周的日期
Lastweek = Lastweek.strftime('%Y%m%d') # 转换成STR
last_mon = datetime.datetime.today() - relativedelta(months=1) #获取前一月的日期
last_mon = last_mon.strftime('%Y%m%d') # 转换成STR
ts.set_token('you token')
pro=ts.pro_api()
# 1 以中证500位股票池
df = pro.index_weight(index_code = '000905.SH', start_date = last_mon, end_date = today)
#按照权重降序排序
df = df.sort_values(by = 'weight',ascending = False).reset_index()
# 2 获取权重最轻的后300只股票
df = df.tail(300)
# 3、过滤掉创业板及科创板的股票
cy = df[df.con_code.str.contains('^30')] # 利用正则表达式匹配以30开头的所有股票
cy_list = cy['con_code'].values.tolist() # 将30开头的股票代码导出成一个列表
for i in cy_list:
df = df.drop(index=(df.loc[(df['con_code'] == i)].index

本文介绍了一种基于中证500指数成分股的量化选股策略,通过排除特定板块、停牌股票,并综合考虑财务指标来筛选出潜力股。
最低0.47元/天 解锁文章
1742





