Py学习  »  Python

python量化入门(二)——如何确定基金的市值属性和风格属性

西瓜财经资讯 • 3 年前 • 649 次点击  

NO.199

2020.08.30

工欲善其事,必先利其器


//


  - 前言 -  


◆ ◆ ◆ ◆



今天,小咖再来讲讲如何利用Python确定基金的市值和风格属性。


在不同的市场环境下,不同市值属性和风格属性的基金将表现出不同的收益特征。因此,我们在对基金的评价中,常能看到对上述两种投资风格的划分,以便于基金研究、资产配置和市场监测。


以晨星公司1992年推出的晨星风格箱为例。依据基金所持有股票的市值为基础,把基金投资股票的规模风格定义为大盘、中盘和小盘;以基金持有的股票价值-成长特性为基础,把基金投资股票的价值-成长风格定义为价值型、平衡(混合)型和成长型。当前,wind中对基金市值属性和风格属性的划分也是以晨星公司的风格箱为基础思想。

资料来源:晨星公司


  - Python确定基金风格 -  


◆ ◆ ◆ ◆



第一步:安装各种包

资料来源:西瓜财经资讯


第二步:调用日期函数

资料来源:西瓜财经资讯


(1)通过today1=datetime.today() 得到当前日期,然后用如下语句,得到表现形式为yyyymmdd的日期数据。


(2)利用today1-timedelta(days=365) ,得到当日向前365日的日期。


(3)其他语句同以上用法近似。分别得到当前日期的年度数据“2020”,以及过去三年年末的日期“20191231”、“20181231”、“20171231”。


第三步:数据获取

资料来源:西瓜财经资讯


(1)根据wset函数获取全部A股成分,不用生成dateframe可以直接提取:


code=w.wset("sectorconstituent","date=2020-08-28;sectorid=a001010100000000").Data[:][1]


(2)根据wind的wss得到除基本每股收益历史增长率以外的所有数据。


对于价值得分,我们主要选取了如下指标:

资料来源:晨星公司


对于成长得分,我们主要选取了如下指标,由于基本每股收益历史增长率无法直接得到,因而需单独获取:

资料来源:晨星公司


(3)根据wind的wss分别得到基本每股收益历史三年的增长率数据。


(4)利用join合并以上三年的基本每股收益历史增长率数据,并得到平均值。

资料来源:西瓜财经资讯


(5)用join合并所有数据;用astype(float)将所有数据转变为浮点形式;得到以亿元为单位的市值列;通过sort_values将市值降序排列;通过cumsum计算累计市值,然后除以所有行的市值合计sum(data['市值']),得到累计市值占市值比重。如一共有三行数据,第一行市值为1,第二行为2,第三行为3,则累计市值占市值比重分别为1/6、3/6、6/6。

资料来源:CSDN


第四步:按照晨星风格箱对股票市值规模进行划分


(1)找到门限值,即累计市值比重距离0.7/0.9最近的累计市值。门限值的确定依据以下原则:将股票总市值进行降序排列,累计总市值 70%点对应的股票市值为大中盘门限值,90%点对应的股票市值为中小盘门限值。


(2)计算市值得分。Cap表示股票的累计市值;LMT、MST分别表示大中盘、中小盘的门限值。

(3)定义一个function,之后将应用到市值得分这一指标中。即当市值得分大于200时表现为“大盘”,大于100且小于200时表现为“中盘”,小于100时表现为“小盘”。


def function(x):

    if x >= 200:

        return '大盘'

    else:

        if x >=100:

            return '中盘'

        return '小盘'


(4)创建新列“规模”,利用lambda结合function对于['市值得分']的判断来设定该列的数值。


data['规模'] = data.apply(lambda x: function(x['市值得分']), axis = 1)


第五步:按照晨星风格箱对股票风格进行划分

资料来源:西瓜财经资讯


(1)对五个价值指标分别除以收盘价。


(2)根据不同的规模划分为三个dateframe,分别为“df大盘”、“df中盘”、“df小盘”。


size=data['规模'].unique()

for i in size:

    aa=data[data['规模'].isin([i])]

    aa['规模']=i

    exec("df%s=aa"%i)


(3)将上述三个dateframe放入一个list中。


(4)在不同规模下,利用循环对所有9个关键指标排序并标明序号。这里主要用的是rank语句,其可以对某列数据进行排序并生成排序数字列。如某个dateframe中某列为(3,0,9,10),则通过rank可以得到新列(2,1,3,4)。关于rank的用法小咖在这里展示一个rank下不同method的表,大家如果感兴趣可以自行学习。

资料来源:CSDN


(5)得到成长价值得分。按照第三步中对指标的计算方法分别得到成长得分和价值得分,成长-价值为成长价值得分。


(6)在每一规模下,按成长-价值得分降序,再次计算累计市值比重,当累计市值/市值等于1/3时的成长-价值得分为成长混合门限,等于2/3时为价值混合门限。然后计算出风格得分,VCG表示成长价值得分;VT(Flag) 、GT(Flag) 分别表示某一规模分类中股票的价值-混合门限值与混合-成长门限值,具体公式如下。

若风格得分大于200,则为成长型;大于100小于200,为混合型;小于100,为价值型。

资料来源:西瓜财经资讯


第五步:concat纵向拼接


(1)利用concat 纵向拼接不同规模的表。


final=pd.concat(allframe)


第六步:对基金风格进行判断


上述方法仅仅得到了股票的市值属性和风格属性,而为了得到基金的属性,我们需要进一步对股票的市值和风格进行量化,主要使用的是对基金持仓股票得分和风格得分进行加权。下篇,小咖将继续展示基金风格的计算。



  - 后言 -  


◆ ◆ ◆ ◆


下篇,小咖将继续展示基金风格的python计算方法,敬请期待。


往期回顾:

一文看懂《积极型资产配置指南》的资产配置逻辑(全)

从《我在高盛的经济预测法》来看如何根据经济指标进行投资

2020半年度大类资产及基金表现盘点

全面解读债券收益率曲线(全)

多周期资产配置法及大类资产配置应用

中债估值/YY估值的分析与对比

如何从护城河角度识别伟大的公司?(更)

最全!黄金行情与金价决定因素分析

美林时钟深度理解及在国内市场的应用(全)

一文看懂股债跷跷板效应

从本轮人民币对美贬值看汇率历史走势和影响因素(全)

中美股指历史走势对比及未来展望

Python金融应用之爬虫(一)

Python金融应用之提取交易日+合并截面数据

python量化入门(一)——利用特定指标筛选股票并回测

Python金融应用之基金业绩评价体系构建

Python金融应用之利用Pyecharts做动态图——柱状图/折线图

Python金融应用之利用Pyecharts做动态图(二)——饼图/散点图

Python金融应用之利用Pyecharts做动态图(三)——地图

Python金融应用之利用Pyecharts做动态图(四)——玫瑰图

Python金融应用之利用Pyecharts做动态图(五)——词云图

Python金融应用之雷达图制作

Python金融应用之制作热力图

Python金融应用之制作词云

Python金融应用之图表制作(八)——三维图

Python金融应用之图表制作(七)——蜡烛图

Python金融应用之图表制作(六)——色阶图

Python金融应用之图表制作(五)——合并图

Python金融应用之图表制作(四)——饼图

Python金融应用之图表制作(三)——散点图

Python金融应用之图表制作(二)——折线图

Python金融应用之图表制作(一)——柱状图

利用工具自动撰写报告(Python)——进阶版(一)

利用工具自动撰写报告(Python/Excel)——入门版












end



公众号:西瓜财经资讯

撰稿人:安静的金融美女子


记得点个在看哦

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/73030
 
649 次点击