自己做量化交易软件(17)通过基本面建立自己的股票池

自己做量化交易软件(17)通过基本面建立自己的股票池

自动交易不能随便选股进行买卖,因此需要预先建立自己的股票池。
一般我们通过基本面来建立股票池,至少避免购买业绩非常差的股票。

我们主要关注的基本面参数主要有3个,市盈率,市净率,流通盘。
股票的内在价值核心由2部分组成:每股资产净值,每股收益率。

市净率=股价/每股净资产
市盈率=股价/每股收益。

选股流程如下:
(1)获取沪深上市公司的实时数据,其中包含股票代码,市盈率,市净率。
其中,删除业绩较差的ST股票,删除业绩亏算的股票, 删除净资产为负的股票。
(2)选取市盈率前100名股票。
(3)选取市净率前100名股票。
(4)对所选取的股票代码进行运算,选取同时满足的股票代码,建立股票池.

实盘中只在股票池中寻找买卖时机.
下面直接给出源代码,大家可以参考来进行改进为自己的选股策略.使用了tushare 数据。

# -*- coding: utf-8 -*-
#通过基本面选股,建立股票池
import tushare as ts

#获取最新股票数据
df=ts.get_today_all()

df1=df.copy()  #建立一个备份
n=100  #选择前n个数据

#删除业绩较差的ST股票
df1['a']=[('ST' in x )for x in df1.name.astype(str)]  #先给ST股票做标记a
df1=df1.set_index('a')  #将a设置为索引 
df1=df1.drop(index=[True]) #删除ST股票
df1=df1.reset_index(drop=True) #重建默认索引

#删除业绩亏损的股票
df1=df1[df1.per >0]

#删除净资产为负的股票
df1=df1[df1.pb >0]

#选取市盈率前100名股票
df2=df1.sort_values(by=['per'],ascending=True).head(n)

#选取市净率100名股票
df3=df1.sort_values(by=['pb'],ascending=True).head(n)

#生成股票代码集合,进行集合运算
g2=set(df2.code) #低市盈率股票代码
g3=set(df3.code) #低市净率股票代码
g=g2&g3 #集合交运算
zxg1=list(g)  #把集合转为列表
print()
print('基本面选股结果:',zxg1)

参照上面例子,根据经验作自己的选股程序。

你可能感兴趣的:(软件开发,量化软件,源代码,python)