指数分类的标准有很多,比如说按市场分、按投资标的分、按指数代表性分。从代表性来分类的话,一般可以分为有三类:综合指数、宽基指数、窄基指数。

综合指数是指成分股包含所有上市的股票,以反映全市场的状况,最典型的就是我们所熟知的上证指数、深证指数,其是观察市场整体走势的一个重要指标。我们国内的中证指数公司,就是专门构建各类指数,为投资者提供新的分析工具和投资标的。

今天的文章就集中在对于沪深 300、中证 500、中证 1000指数的量化解读方面,既然是量化,那么可视化必须是其中很重要一个组成部分,我们的文章会提供数据调取和可视化代码,供各位更好理解指数构成以及特性。

一、综合走势与波动率

>>> 沪深300指数

它以规模流动性作为选样的两个根本标准,并赋予流动性更大的权重,符合该指数定位于交易指数的特点。300 指数反映的是流动性强和规模大的代表性股票的股价的综合变动,可以给投资者提供权威的投资方向,也便于投资者进行跟踪和进行投资组合,保证了指数的稳定性、代表性和可操作性。

>>> 中证500指数

该指数又称中证小盘 500 指数(CSI Smallcap 500 index),简称中证 500(CSI 500),上海行情代码为 000905,深圳行情代码为 399905。中证 500 指数有 3 个构建步骤。

步骤1. 样本空间内股票扣除沪深300指数样本股即最近一年日均总市值排名前300名的股票;

步骤2. 将步骤1中剩余股票按照最近一年(新股为上市以来)的日均成交金额由高到低排名,剔除排名后20%的股票;

步骤3. 将步骤2中剩余股票按照日均总市值由高到低进行排名,选取排名在前500名的股票作为中证500指数样本股。

>>> 中证1000指数

根据金融界网站提供的资料,中证 1000 指数编制方法采用较为普遍的自由流通市值加权法,指数成分股从全部A股中剔除沪深 300、中证 500 指数成分股后,结合流动性标准选取过去一年日均总市值最大的 1000 只股票,综合反映中国 A 股市场中小市值公司的股票价格表现,是中证核心市值指数体系的重要组成部分。

我们通过聚宽研究平台,首先构建一个 list 名单“index_list”,然后通过 get_price 函数调取数据,然后将数据处理成净值,绘制出来,得到以下效果:

我们定日期 2019-04-18 为截止日期,向前推 1000 天,发现最近 4 年来,表现最差的其实是中证 1000 指数,说明了在市场长期价值筛选中,小盘股出现了显著的估值下滑和资金流出。而之前大家对于小盘股的印象则是高波动率和高回报率。

上图就是三大指数的波动率情况,还是同一个时间段,我们使用移动窗口标准差,再除以该窗口期内的价格均值,去价格量纲得到这个曲线,通过研究平台文件我们输出波动率具体值为:

000852.XSHG    0.034911
000905.XSHG    0.030969
000300.XSHG    0.023826

这表示 000852.XSHG 中证 1000 指数在全段时间的波动率是最高的,通过蓝线也可以清晰看出。而沪深 300 由于大盘股较多,波动率偏低,中证 500 居中。

这三大指数之间有何种相关关系呢?实际上从走势看,它们毕竟都属于中国股票市场,应该非常相关,我们抱着这个疑问,绘制了全段价格相关性和全段波动率相关性,试图寻找答案。

绘制相关性矩阵需要导入 seaborn 包,其 heatmap 函数就是专门用于热力标色的矩阵图绘制的。分析结果显示,三大指数的走势相关性并不十分高,特别是沪深 300 和中证 1000 差异最大。而波动率相关性分析则体现出更高的结果,说明在出现较大波动时刻,指数的共振还是很明显的,这表现出较高的系统性风险。

二、指数成分股市值特性分析

我们进入所有聚宽的老用户们最熟悉的 get_fundamentals 函数,通过调取 valuation.code、valuation.market_cap 这两项数值,获得股票代码和市值数据,并打印前5行,获得以下效果:

然后我们分别绘制了沪深 300、中证 500、中证 1000 的市值分布,得到以下效果:

我们得到一个直观上很显著的统计特性——中证 1000 的分布最为均匀,首尾差异较小,沪深 300 的市值分布很不均匀,有部分股票市值极大。

通过绘制直方图,可以看到指数成分股(以沪深 300 为例)的市值分布情况:

这里显示出仅有少量样本分布在市值极大的区间,而大部分有统计意义的样本集中在市值 1000 亿元左右的区间。这样的数据分布形态很容易扭曲均值的表达能力,所以针对这类样本,我们应该多用中位数而非均值表达整体特征。

接下来我们使用 4 个简单的统计指标完成对沪深 300 为例的指数的特性描述,分别是:均值、中位数、标准差、极差。

# 均值
market_cap_mean_50 = mean(list(df_50.market_cap))
# 中位数
market_cap_median_50 = median(list(df_50.market_cap))
# 标准差
market_cap_std_50 = std(list(df_50.market_cap))
# 极差
market_cap_ptp_50 = ptp(list(df_50.market_cap))

经过计算得到:沪深300样本的成分股市值

均值:979.8816889999999

中位数:381.9389

标准差:2070.650186717265

极差:18721.7925

依然是围绕市值,我们分引入箱体图Boxplot,它是一种表示数据分布的方法,一个基本的箱体图从上到下分别表示最大值,上四分位,均值,下四分位,最小值。有的箱体图中还会加入异常值等。

箱体图有以下几个优点:

1. 可以直观明了地识别数据中的异常值

2. 利用箱体图可以判断数据的偏态和尾重

3. 利用箱体图可以比较不同批次的数据形状

通过python的pandas包提供的boxplot()函数即可绘制得到效果。

通过分析三大指数的箱体图,我们看到沪深 300 的样本离群情况最为严重,箱体图主体部分(25%分位到75%分位)被离群点严重压缩。中证 500 表现较好,离群点并不很多。中证 1000 也包含了部分市值较大的股票,主要原因是从 100 亿元到 300 亿元的某些股票可能由于市值上升过快,没能及时被编制更新到中证 500 指数中。

了解一个指数的行业构成也非常关键,我们可以看到其成分股是否在行业方面有过度集中。通过聚宽提供的 get_industry 函数可以获得行业数据。

具体代码为:

industry = get_industry(list(df_50.code))
stock_dict={}
for stock in industry.keys():try:# 取到每个股票的【申万一级】行业名称stock_dict[stock] = industry[stock]['sw_l1']['industry_name']except:pass

然后我们导入 import matplotlib.pyplot as plt,通过其 pie 函数,可以实现对饼图的绘制。

代码如下:

tt = DFindustry.groupby(['industry_name']).size()
tt1 = list(tt.index.values)
tt2 = list(tt.values)labels = tt1
fracs = tt2plt.figure(figsize=(10,8))
plt.axes(aspect=1)  # set this , Figure is round, otherwise it is an ellipse
plt.pie(x=fracs, labels=labels, explode=None,autopct='%3.1f %%',shadow=True)
plt.title('成分股行业分布饼图')
plt.show()

上图显示的是中证1000指数的行业分布,我们还辅助计算了分布的均匀性,得到结论:

行业数量:28

平均个股数量:35.714285714285715

个股数量标准差:23.84452189685916

个股分布变异系数:0.6676466131120564

结论显示中证 1000 指数在各行业分布均匀,平均每个行业 35 只个股。如果到了沪深 300 领域,这个分布情况发生了如下变化:

可以看到,银行和非银金融占据了非常大的比重,资产较重的交通运输、化工、有色金属和房地产也有较大提升。说明了沪深 300 指数对于金融行业的风险暴露比较大。这里仅展示了上市公司家数分布,如果按照市值展示,情况会更加显著。

我们还可以深入到指数内部去挖掘一个因子——两两相关系数平均值,并通过 for 循环,实现对于每个日期截面的该因子值计算。

程序设计方面,首先通过 get_trade_days 获得一个日期序列,用于循环。然后通过 get_price 提取 20 日价格 DataFrame,再通过 corr().mean().mean() 实现相关系数计算、每个标的相关系数、均值的均值,获得每个日期截面一个值。我们将指数净值化处理,和这个指标绘制在一起,可以看到如图效果:

指数成分股两两相关性均值是一个风险指标,当该值达到较高区间时,说明成分股同向波动显著,一般是市场极度活跃的区间。统计绘图和计算,我们得到:

中证1000:0.36256388612173046

中证500:0.36003023746871143

沪深300:0.3196961076040989

说明指数内部,随着股票数量的增加特别是高 beta 股票的增加,这种风险更加加剧。本次我们仅展示部分简单的统计指标计算,核心都是通过图形化方式,解读指数内部特征,希望读者们也能补充思路,进一步挖掘指数特性,在深刻熟悉指数构成的基础上,即可熟悉alpha因子的挖掘。


点击【阅读原文】,查看完整代码~

多图解读三大股票指数 沪深300、中证500、中证1000有何细节差异相关推荐

  1. python分析数据走势图_左大营 | python数据分析篇系列1——探索沪深300指数(附代码)(中)...

    探索沪深300指数(HS300)--基于Python(中) [承接上文] 写在前面:本文只做分析,提供观点,不构成投资建议 如需转载请微信联系:eosO_oke 佛系更新,关注不迷路 沪深300指数是 ...

  2. 怎么在pta上搜题_舵手期货图解2.7:沪深300、PTA、鸡蛋

    提示:纯技术分析,仅供参考 1.沪深300三十分钟图主连: 沪深300三十分钟图1月15日杀跌以来,2月4日开启反弹,这是30分钟上涨线段,上涨力度不断衰竭,成交量开始不断走低,形成明显的顶背离. 离 ...

  3. A股常见的宽基指数:沪深300,中证500,和创业板指数

    沪深300指数:是国内最具代表性的指数 指数简介: 沪深300指数是由中证指数公司开发的,从上海证券交易所和深圳证券交易所挑选的规模最大,流动性最好的 300 只股票组成 其实指数的命名规则还是挺有意 ...

  4. fxmarket:9月23日恒指、沪深300、上证行情分析

    开盘前瞻:周五,美股三大股指集体收跌:标指跌14.73点,纳指跌65.2点,道指大跌159.72点.上周,道指累跌1.05%,纳指累跌0.7%,标指累跌0.51%,三大股指均终结三周连涨走势.港股AD ...

  5. Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析

    米筐科技(RiceQuant)策略研究报告:Barra 结构化风险模型实现(1)--沪深300指数的风格因子暴露度分析 江嘉键 1 年前1 概述 Barra 结构化风险模型是全球知名的投资组合表现和风 ...

  6. fxmarket:9月25日黄金、沪深300、恒指策略分析

    一.市场综述 国内股指昨天冲高回落震荡整理,创业板走势类似,截止收盘,上证综指涨0.28%,上证50期指收涨0.22%,中证500期指下跌0.24%,沪深300期指微跌0.01%:北上资金方面,沪股通 ...

  7. python获取股指_用Python读取csv文件中的沪深300指数历史交易数据

    保存路径:D:\python\用Python读取csv文件中的沪深300指数历史交易数据 程序名称:readcsvhs300.py: 数据名称:沪深300指数历史交易数据.csv: 开发环境:Win7 ...

  8. 可视化股票市场结构||沪深300股票聚类可视化

    前半部分是Visulizing the stock maket structure文章翻译,对代码进行逐行解释,并在文后附录所有参考链接.后半部分是基于案例做的沪深300可视化 此案例采用了几种非监督 ...

  9. 沪深300股票聚类可视化案例||tushare完整可运行代码逐行解释

    上篇文章:<可视化股票市场结构||沪深300股票聚类可视化>逐行代码解释了sklearn中的一个案例:可视化股票市场结构.案例中采用的数据是美股.这篇文章将其移植到A股市场,看看我们的沪深 ...

最新文章

  1. html钟无序列表不换行,风格无序列表中奇怪的换行符?
  2. Stust2的拦截器的运行流程及使用方法、注意事项
  3. mySql安装时常见问题处理
  4. 湖南工程学院计算机网络考试,湖南工程学院 计算机网络期末试卷试题
  5. Visual C#中用WMI控制远程计算机
  6. Excel实用技巧辞典 01
  7. tcpdf不支持html,TCPDF:无法从HTML输入生成PDF文件
  8. Fbank特征与MFCC特征解析
  9. 是不是可以赚钱的APP越来越多
  10. 同步上下文(SynchronizationContext)
  11. 虚幻引擎发行版,Laby,jMonkeyEngine和更多开放游戏新闻
  12. gif一键抠图 在线_免费在线抠图工具,不用PS,抠图只用3秒!
  13. 湖北二本计算机大学录取分数线,湖北二本投档分数线
  14. 远离喧嚣,拥抱自然,洗尽铅华
  15. [附源码]JAVA毕业设计高校信息资源共享平台(系统+LW)
  16. map与sync.Map
  17. Error in configuration: context was not found for specified context: kubernetes 原因分析
  18. C语言/gets()函数和scanf()函数关于字符串的输入
  19. 【2019年04月22日】A股最便宜的股票
  20. KNIME服务器安装配置

热门文章

  1. Bit-Z 新年狂欢趴 场外费用全免
  2. C++ 深入浅出工厂模式(进阶篇)
  3. 计算机英语教案模板,小学英语教案万能模板
  4. python --类中的方法
  5. Shell常用命令grep用法详解
  6. docker使用buildx构建不同架构镜像
  7. codeforces732b
  8. PDF文档阅读器-福昕PDF阅读器下载
  9. java ppt 转pdf_使用Java 将PPT转换为PDF、XPS等格式
  10. 实现Aero特效的基础