导航
波动率的特征
波动率无法直接观测,但是可以从资产收益率中观测到一些特征:
- 波动率聚集(volatility cluster), 在某个特定时间段上波动率高,但是在其他时间段上波动率小
- 波动率以连续时间方式变化,几乎不存在跳跃的现象
- 波动率不会发散到无穷,在一个固定范围内变化
- 波动率对价格大幅上升和大幅下降的反应是不同的,即存在杠杆效应(
leverage effect
),如EGARCH
和TGARCH
模型就是为了刻画波动率正负资产收益率的不对称性而提出的
基本模型
令
r
t
r_t
rt表示资产在时刻
t
t
t的对数收益率,研究结果表明,对数收益率序列是前后不相关的,但不是独立的,考虑在给定
F
t
−
1
F_{t-1}
Ft−1(filteration
)时的条件均值和条件方差
{
μ
t
=
E
[
r
t
∣
F
t
−
1
]
σ
t
2
=
V
a
r
(
r
t
∣
F
t
−
1
)
=
E
[
(
r
t
−
μ
t
)
2
∣
F
t
−
1
]
\begin{cases} \mu_t=E[r_t\mid F_{t-1}]\\ \sigma_t^2=Var(r_t\mid F_{t-1})=E[(r_t-\mu_t)^2\mid F_{t-1}] \end{cases}
{μt=E[rt∣Ft−1]σt2=Var(rt∣Ft−1)=E[(rt−μt)2∣Ft−1]
设置
r
t
r_t
rt服从一个简单的ARMA(p, q)模型,
r
t
=
μ
t
+
a
t
r_t=\mu_t+a_t
rt=μt+at,其中
μ
t
\mu_t
μt由以下方程给出
μ
t
=
ϕ
0
+
∑
i
=
1
p
ϕ
i
r
t
−
i
−
∑
j
=
1
q
θ
j
a
t
−
j
\mu_t=\phi_0+\sum_{i=1}^p\phi_ir_{t-i}-\sum_{j=1}^q\theta_ja_{t-j}
μt=ϕ0+i=1∑pϕirt−i−j=1∑qθjat−j
可以得到条件异方差模型为
σ
t
2
=
V
a
r
(
r
t
∣
F
t
−
1
)
=
V
a
r
(
a
t
∣
F
t
−
1
)
\sigma_t^2=Var(r_t\mid F_{t-1})=Var(a_t\mid F_{t-1})
σt2=Var(rt∣Ft−1)=Var(at∣Ft−1)
条件异方差模型可以分为两类:第一类用确定的函数表示 σ t 2 \sigma_t^2 σt2,即GARCH模型;第二类用随机方程描述 σ t 2 \sigma_t^2 σt2,即SV模型
使用Ljung-Box
检验序列是否存在异方差
da = read.table('data/m-intcsp7309.txt', header=T)
head(da)
intc = log(da$intc+1)
rtn = ts(intc, frequency = 12, start=c(1973, 1))
plot(rtn, type='l', xlab='year', ylab='ln-rtn') # 绘制时间序列
# 对序列均值进行t检验
t.test(intc)
# 进行Ljung-Box检验
Box.test(intc, lag=12, type='Ljung') # Ljung-Box检验
# plot
par(mfcol=c(2, 1))
acf(intc, lag=24)
acf(abs(intc), lag=24)
Box.test(abs(intc), lag=12, type='Ljung') # 更显著
ARCH
Engle(1982)提出了ARCH模型,模型的基本思想就是:
资产收益率的扰动序列
a t a_t at是前后不相关的,但不是独立的-
a
t
a_t
at的不独立性可以使用其滞后值得简单二次函数描述,即ARCH(m)模型设定
a t = σ t ε t σ t 2 = α 0 + α 1 a t − 1 2 + ⋯ + α m a t − m 2 a_t=\sigma_t\varepsilon_t\\ \sigma_t^2=\alpha_0+\alpha_1a_{t-1}^2+\dots+\alpha_ma_{t-m}^2 at=σtεtσt2=α0+α1at−12+⋯+αmat−m2
其中 { ε t } \{\varepsilon_t\} {εt}是均值为0方差为1的独立同分布(i.i.d)的随机变量序列,其中 a 0 > 0 , a i ≥ 0 a_0>0, a_i\geq 0 a0>0,ai≥0,系数 α i \alpha_i αi必须满足标准正态分布或者学生 t t t分布或者广义误差分布(GED),从模型结构上来看,较大的过去的平方扰动 a t − i 2 a_{t-i}^2 at−i2会导致较大的条件方差 σ t 2 \sigma_t^2 σt2,从而使得 a t a_t at倾向于取绝对值较大的系数,这种结构与波动率聚集
的现象一致.
ARCH模型的性质
ARCH(1)模型如下
a
t
=
σ
t
ε
t
σ
t
2
=
α
0
+
α
1
a
t
−
1
2
a_t=\sigma_t\varepsilon_t\\ \sigma_t^2=\alpha_0+\alpha_1a_{t-1}^2
at=σtεtσt2=α0+α1at−12
计算出
a
t
a_t
at的无条件均值为
E
[
a
t
]
=
E
[
a
t
∣
F
t
−
1
]
=
E
[
σ
t
E
[
ε
t
]
]
=
0
E[a_t]=E[a_t\mid F_{t-1}]=E[\sigma_tE[\varepsilon_t]]=0
E[at]=E[at∣Ft−1]=E[σtE[εt]]=0.
计算无条件方差为
V
a
r
(
a
t
)
=
E
(
a
t
2
)
=
E
[
E
(
a
t
2
∣
F
t
−
1
)
]
=
α
0
+
α
1
E
(
a
t
−
1
2
)
Var(a_t)=E(a_t^2)=E[E(a_t^2\mid F_{t-1})]=\alpha_0+\alpha_1E(a_{t-1}^2)
Var(at)=E(at2)=E[E(at2∣Ft−1)]=α0+α1E(at−12)
为了研究
a
t
a_t
at的尾部性质,要求
a
t
a_t
at的四阶矩是有限的,当
ε
t
\varepsilon_t
εt服从正态分布的条件下可以得到
E
[
a
t
4
]
=
E
[
E
[
a
t
4
∣
F
t
−
1
]
]
=
3
[
E
(
a
t
2
∣
F
t
−
1
)
]
2
=
3
(
α
0
+
α
1
a
t
−
1
2
)
2
E[a_t^4]=E[E[a_t^4\mid F_{t-1}]]=3[E(a_t^2\mid F_{t-1})]^2=3(\alpha_0+\alpha_1a_{t-1}^2)^2
E[at4]=E[E[at4∣Ft−1]]=3[E(at2∣Ft−1)]2=3(α0+α1at−12)2
设置
a
t
a_t
at的四阶矩为平稳,可以计算出峰度(kurtosis
)为
E
(
a
t
4
)
[
V
a
r
(
a
t
)
]
2
=
3
α
0
2
(
1
+
α
1
)
(
1
−
α
1
)
(
1
−
3
α
1
2
)
×
(
1
−
α
1
)
2
α
0
2
=
3
1
−
α
1
2
1
−
3
α
1
2
>
3
\frac{E(a_t^4)}{[Var(a_t)]^2}=3\frac{\alpha_0^2(1+\alpha_1)}{(1-\alpha_1)(1-3\alpha_1^2)}\times\frac{(1-\alpha_1)^2}{\alpha_0^2}=3\frac{1-\alpha_1^2}{1-3\alpha_1^2}>3
[Var(at)]2E(at4)=3(1−α1)(1−3α12)α02(1+α1)×α02(1−α1)2=31−3α121−α12>3
可以发现条件高斯ARCH(1)的模型扰动
a
t
a_t
at比高斯白噪声序列更容易出现异常值.
模型中
α
i
≥
0
\alpha_i\geq 0
αi≥0的假设可以放宽,该条件保证对于所有的
t
t
t,条件方差
σ
t
2
\sigma_t^2
σt2为正值,一种可行的取正值的方式为
{
a
t
=
σ
t
ε
t
σ
t
2
=
α
0
+
A
m
,
t
−
1
′
Ω
A
m
,
t
−
1
\begin{cases} a_t=\sigma_t\varepsilon_t\\ \sigma_t^2=\alpha_0+A_{m, t-1}'\Omega A_{m, t-1} \end{cases}
{at=σtεtσt2=α0+Am,t−1′ΩAm,t−1
其中
Ω
\Omega
Ω是一个
m
×
m
m\times m
m×m的非负定矩阵
Demo: specify conditional variance model for exchange rates
读取汇率数据,图像如下
%% load data
load Data_MarkPound.mat
y=Data;
T=length(y);
figure
plot(y)
h=gca;
h.XTick = [1 659 1318 1975];
h.XTickLabel = {'Jan 1984','Jan 1986','Jan 1988','Jan 1992'};
ylabel 'Exchange Rate';
title 'Deutschmark/British Pound Foreign Exchange Rate';
计算回报率序列,图像显示如下
%%
r = price2ret(y); % 计算对数收益率
r2=tick2ret(y);
figure;
plot(2:T, r);
h=gca;
h.XTick = [1 659 1318 1975];
h.XTickLabel = {'Jan 1984','Jan 1986','Jan 1988','Jan 1992'};
ylabel 'Exchange Rate Returns';
title 'Deutschmark/British Pound Foreign Exchange Rate Returns';
从图像中可以发现收益率序列存在波动性聚集的特征,即存在条件异方差性(conditional heteroscedasticity
). 计算自相关函数和偏自相关函数图像如下
%% 在百分制数值状态下观测
r = 100 * r;
figure;
subplot(2, 1, 1);
autocorr(r); % 计算自相关函数
subplot(2, 1, 2);
parcorr(r); % 计算偏自相关函数
进行Ljung-Box Q-test
结果如下
[h, p]=lbqtest(r, 'Lags', [5, 10, 15])
从p值可以得出,ACF
和PACF
没有表现出显著的自相关性,因此序列不需要建立条件均值模型.
检测条件异方差
对收益率序列进行中心化处理后,对序列平方进行ACF
和PACF
检测
%% conditional heteroscedasticity
subplot(2, 1, 1);
autocorr((r-mean(r)).^2);
subplot(2, 1, 2);
parcorr((r-mean(r)).^2);
从图中发现存在 k k k阶截尾的特征,执行Engles’s ARCH检测,设置 k = 2 k=2 k=2
[h, p]=archtest(r-mean(r), 'Lags', 2);
从检验结果可以发现,squared returns
表现除了显著的自相关性,即GARCH model with lagged variances and lagged squared innovations
会更加适合该序列. Engle’s ARCH检测结果拒绝了零假设(h=1
),支持ARCH(2)
模型等效于GARCH(1, 1)
模型.
GARCH(1, 1)模型
基于自相关性和条件异方差,设置带均值偏移(mean offset
)的GARCH(1, 1)
模型
y
t
=
μ
+
ε
t
y_t=\mu+\varepsilon_t
yt=μ+εt
其中
ε
t
=
σ
t
z
t
\varepsilon_t=\sigma_tz_t
εt=σtzt
σ
t
2
=
κ
+
γ
1
σ
t
−
1
2
+
α
1
ε
t
−
1
2
\sigma_t^2=\kappa+\gamma_1\sigma_{t-1}^2+\alpha_1\varepsilon_{t-1}^2
σt2=κ+γ1σt−12+α1εt−12
M = garch('Offset', NaN, 'GARCHLags', 1, 'ARCHLags', 1);
Demo: Specify Conditional Mean and Variance Models
读入NASDAQ数据
load Data_EquityIdx
nasdaq = DataTable.NASDAQ;
r = 100*price2ret(nasdaq);
T = length(r);
figure
plot(r)
xlim([0 T])
title('NASDAQ Daily Returns')
检测自相关性
%%
figure
subplot(2, 1, 1)
autocorr(r)
subplot(2, 1, 2)
parcorr(r)
进行Ljung-Box检验
[h, p]=lbqtest(r, 'Lags', 5)
拒绝了null hypothesis
,表示存在序列自相关
检测序列是否存在条件异方差
%%
figure
subplot(2, 1, 1);
autocorr((r-mean(r)).^2);
subplot(2, 1, 2);
parcorr((r-mean(r)).^2);
Engle’s ARCH检测是否存在条件异方差
[h, p]=archtest(r-mean(r), 'lags', 2)
检验结果为接受备择假设,即存在条件异方差
设置条件均值和方差模型
设置AR(1)
表示NASDAQ收益率序列的条件均值,GARCH(1, 1)
表示条件方差
r
t
=
c
+
ϕ
1
r
t
−
1
+
ε
t
r_t=c+\phi_1r_{t-1}+\varepsilon_t
rt=c+ϕ1rt−1+εt
其中
ε
t
=
σ
t
z
t
\varepsilon_t=\sigma_tz_t
εt=σtzt
σ
t
2
=
κ
+
γ
1
σ
t
−
1
2
+
α
1
ε
t
−
1
2
\sigma_t^2=\kappa+\gamma_1\sigma_{t-1}^2+\alpha_1\varepsilon_{t-1}^2
σt2=κ+γ1σt−12+α1εt−12
M=arima('ARLags', 1, 'Variance', garch(1, 1))
参考资料
金融数据分析导论 基于R语言
Specify Conditional Variance Model For Exchange Rates