目录
- 数据来源
- 绘制上证指数走势图
- 绘制上证指数单日损益图
- 回报率
- 自相关与平方自相关
- 后续部分
数据来源
来源于wind,获取1990-12-19到2022-10-12的上证指数日收盘价数据,共有7773条数据。
“上证日K.mat”文件中有两个数据,分别是7773x1 datetime的date_series和7773x1 double的price。
绘制上证指数走势图
load 上证日K.mat
index = 1;
figure(index)
index = index + 1;
plot(date_series, price)
datetick('x','yyyy','keeplimits')
ylim([0,max(price)*1.1])
xlabel('日期')
ylabel('上证指数')
title('上证指数走势图')
set(gcf,'color','white')
可见,从2007年开始,上证就突破了3000。到了现在(2022年),上证指数再一次跌破3000点。
这怎么行?所以2022年10月11日,中国证券报头版再度发文《我国经济基本面稳定向好,A股估值已被低估》。
绘制上证指数单日损益图
PnL = diff(price);
PnL = [NaN; PnL];
figure(index)
index = index + 1;
plot(date_series, PnL,'.'); hold on
plot(date_series,0*PnL,'LineWidth',2)
datetick('x','yyyy','keeplimits')
ylim([min(PnL)*1.1,max(PnL)*1.1])
xlabel('日期')
ylabel('上证指数单日损益')
title('上证指数单日损益图')
set(gcf,'color','white')
07-08年,和15年股灾的时候,单日损益绝对值比较大。而2020年疫情的冲击没有那么大。相比来说,标普500在疫情的时候波动更大。
figure (index)
index = index + 1;
subplot (1,2,1)
histogram(PnL,50);
xlabel('Daily P&L')
ylabel('Number of occurrences')
subplot(1,2,2)
histfit(PnL,50);
xlabel('Daily P&L')
ylabel('Number of occurrences')
set(gcf,'color','white')
很明显,P&L存在厚尾的特征。计算一些统计指标:
PnL(isnan(PnL)) = [];
disp(['Mean value of PnL: ', num2str(mean(PnL))])
disp(['Variance of PnL: ', num2str(var(PnL))])
disp(['Standard deviation of PnL: ', num2str(std(PnL))])
disp(['Skewness of PnL: ', num2str(skewness(PnL))])
disp(['Kurtosis of PnL: ', num2str(kurtosis(PnL))])
输出:
Mean value of PnL: 0.37651
Variance of PnL: 1646.9315
Standard deviation of PnL: 40.5824
Skewness of PnL: -0.44546
Kurtosis of PnL: 23.2634
回报率
[daily_log_return,interval] = tick2ret (price, date_series,...
'Continuous');
[daily_simple_return,interval] = tick2ret (price, ...
date_series,'Simple');
figure (index)
index = index + 1;
subplot(1,2,1)
plot(date_series(2:end), daily_log_return*100,'.'); hold on
% yline(0) % 2018b, new function to draw a reference line
x = date_series(2:end);
y = 0;
plot(x,y*ones(size(x)),'LineWidth',2)
datetick('x','yyyy','keeplimits')
ylim([min(daily_log_return)*110,max(daily_log_return)*110])
xlabel('日期')
ylabel('对数日收益率')
set(gcf,'color','white')
subplot(1,2,2)
plot(date_series(2:end), daily_simple_return*100,'.'); hold on
plot(x,y*ones(size(x)),'LineWidth',2)
datetick('x','yyyy','keeplimits')
ylim([min(daily_log_return)*110,max(daily_log_return)*110])
xlabel('日期')
ylabel('普通日收益率')
set(gcf,'color','white')
1992年5月21日,上海股票交易市场股价全部放开。当天的普通日收益率超105%,对数收益率也超70%,算是一大奇迹。
其他时候来看,在市场很不健全的90年代,日收益率超过10%的并不少见。但是到进入新世纪,这种现象基本上销声匿迹。
figure (index)
index = index + 1;
subplot (1,2,1)
histogram(daily_log_return*100,50);
xlabel('对数日收益率')
ylabel('频次')
xlim([-20,20])
subplot(1,2,2)
histfit(daily_log_return*100,50);
xlabel('对数日收益率')
ylabel('频次')
xlim([-20,20])
set(gcf,'color','white')
统计指标:
daily_log_return(isnan(daily_log_return)) = [];
disp(['Mean value of log_r: ', num2str(mean(daily_log_return))])
disp(['Variance of log_r: ', num2str(var(daily_log_return))])
disp(['Standard deviation of PnL: ', num2str(std(daily_log_return))])
disp(['Skew of log_r: ', num2str(skewness(daily_log_return))])
disp(['Kurt of log_r: ', num2str(kurtosis(daily_log_return))])
daily_log_return(isnan(daily_log_return)) = [];
disp(['Mean value of log_r: ', num2str(mean(daily_log_return))])
disp(['Variance of log_r: ', num2str(var(daily_log_return))])
disp(['Standard deviation of PnL: ', num2str(std(daily_log_return))])
disp(['Skew of log_r: ', num2str(skewness(daily_log_return))])
disp(['Kurt of log_r: ', num2str(kurtosis(daily_log_return))])
自相关与平方自相关
figure (index)
index = index + 1;
subplot (1,2,1)
autocorr(daily_log_return)
subplot (1,2,2)
autocorr(daily_log_return.^2)
可见,中国的数据并不是很支持“回报率无自相关”(左图),而“回报率平方有自相关”(右图)的特性。基于此,GARCH模型对于1990-2022上证指数的适用性值得探讨(获取去掉1990年代的样本之后,又符合GARCH的适用性了)。
后续部分
第一章后续部分,为简单波动率的估计。这一部分之前有些许了解,这里不再探讨。