R实证研究:沪指月度收益率差异性研究
R实证研究:沪指月度收益率差异性研究
wuliubingbing
2023-09-25
引言
因经济活动、宏观政策存在周期性,造成股市的波动也可能存在周期性。本文通过对沪指历史数据的分析,分析不同月份之间波动性的差异。
思路
统计沪指上市以来不同年份、特定月份的收益率差异。
分析过程
#所需R包
library(quantmod)
library(pedquant)
library(tidyverse)
library(patchwork)
数据预览
hz <- md_stock('000001.ss',from = '1990-01-01')[[1]]
## 1/1 000001.ss
#修改上述股指编码,可以分析任何指数和个股
hz1 <- hz %>% select(open,high,low,close,volume) %>%
as.zoo(order.by=hz$date) %>%
chartSeries(.,theme = 'white',type = "candlesticks",
up.col = 'red',dn.col = 'green')

沪指上市于1990-12-19,初始值为100点,最近交易日的收盘价在图左上角标注。
计算月度收益率
r0 <- hz %>% select(3:7) %>% as.xts() %>%
monthlyReturn( )
r0
## monthly.returns
## 1990-12-31 0.3285788652
## 1991-01-31 0.0184938484
## 1991-02-28 0.0233900131
## 1991-03-29 -0.0963837305
## 1991-04-30 -0.0520009984
## 1991-05-31 0.0078111287
## 1991-06-28 0.1979447879
## 1991-07-31 0.0453620238
## 1991-08-30 0.2408205841
## 1991-09-30 0.0139550524
## ...
## 2022-12-30 -0.0196995564
## 2023-01-31 0.0538672692
## 2023-02-28 0.0073533251
## 2023-03-31 -0.0020581716
## 2023-04-28 0.0154024309
## 2023-05-31 -0.0357208412
## 2023-06-30 -0.0007801383
## 2023-07-31 0.0277883612
## 2023-08-31 -0.0520078759
## 2023-09-25 0.0001153891
monthly.returns为月度收益率=(月最后交易日收盘价-上月最后交易日收盘价)/上月最后交易日收盘价

沪指上市初期,波动剧烈。2008年、2015年前后,波动也有所加剧。
探索性分析

用小提琴图表达各个月份收益率的概率分布情况:
图中红色的线为X轴,小提琴落在X轴之上的面积越大,说明那个月份收益率为正数的概率越大。
小提琴矮胖的月份,说明分布的集中,这些月份的统计规律明显,波动性小,涨跌平稳。
小提琴瘦高的月份,经常大涨大跌。
2月、9月波动比较小,且2月明显落在X轴上方。
5月、8月波动比较大,历史上出现过极端行情。
统计分析
特征统计量分析
## # A tibble: 12 × 7
## month mean sd n_up n_dn pro_up pro_dn
## <fct> <dbl> <dbl> <int> <int> <dbl> <dbl>
## 1 1 0.0129 0.123 18 15 0.545 0.455
## 2 2 0.0284 0.0531 24 9 0.727 0.273
## 3 3 0.00656 0.101 17 16 0.515 0.485
## 4 4 0.0353 0.117 18 15 0.545 0.455
## 5 5 0.0517 0.322 17 16 0.515 0.485
## 6 6 0.00339 0.111 17 16 0.515 0.485
## 7 7 -0.00851 0.0908 16 17 0.485 0.515
## 8 8 0.0302 0.254 17 16 0.515 0.485
## 9 9 -0.00686 0.0527 16 17 0.485 0.515
## 10 10 -0.00727 0.0985 15 17 0.469 0.531
## 11 11 0.0354 0.106 21 11 0.656 0.344
## 12 12 0.0179 0.107 16 17 0.485 0.515
month 月份;mean 平均值;sd 标准差 ;
n_up 该月份上涨的次数。例如1月 n_up 为18,说明从沪指1990年至今的33年里,有18个年份1月份是上涨的,另外15个年份的1月份是下跌的。
n_dn 该月份下跌的次数;
pro_up 该月份上涨的频率,1月份上涨的频率为18/33=0.5454
pro_dn 该月份下跌的频率



图1中,7、9、10三个月份均值为负数,含义是,过去的33年里,所有7、9、10月份的收益率的平均数是负数。
方差分析
单因素方差分析
r10 <- data.frame(month=as_factor(month(index(as.zoo(r0)))),yield=r0$monthly.returns)
summary(aov(monthly.returns ~ month, data=r10))
## Df Sum Sq Mean Sq F value Pr(>F)
## month 11 0.141 0.01282 0.578 0.847
## Residuals 382 8.470 0.02217
P值大于0.05,各组之间显著不差异。
方差齐性检验
bartlett.test(monthly.returns ~ month, data = r10)
##
## Bartlett test of homogeneity of variances
##
## data: monthly.returns by month
## Bartlett's K-squared = 217.35, df = 11, p-value < 2.2e-16
P值小于0.05,各月份的方差显著不相等,说明上述aov方法的基本假设不适用,aov方法分析均值的差异并不恰当。
结论
各个月份的方差存在显著差异,各月波动性明显不一样。因此,后面的结论从统计意义看,不够确切。
历史数据显示,2月份上涨的频率最高且方差最小。
5月份收益率均值和方差都是最大的。
7、9、10三个月份历史上收益率表现较差。
本文是R统计实验,不构成投资建议。本文由Rmarkdown自动编译生成。