金融时间序列分析用R语言画简单收益率和对数收益率的ACF图?!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了金融时间序列分析用R语言画简单收益率和对数收益率的ACF图?!相关的知识,希望对你有一定的参考价值。
数据“d-intc7208.txt”为英特尔1972年1月15日到2008年12
月31日的日简单收益率,
1). 画出简单收益率和对数收益率的ACF图,
2). 并检查简单收益率和对数收益率的5个和10个的自相关系数是
否为同时0.
我的代码:
int <- read.table("d-intc7208.txt", head=T)
head(int)
int.l <- log(int+1)
acf(int[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
log return')
Box.test(int[,2], lag = 5, type = "Ljung-Box")
Box.test(int[,2], lag = 10, type = "Ljung-Box")
Box.test(int.l[,2], lag = 5, type = "Ljung-Box")
Box.test(int.l[,2], lag = 10, type = "Ljung-Box")
运行结果有以下错误,怎么办?
> int <- read.table("d-intc7208.txt", head=T)
错误于file(file, "rt") : 无法打开链结
此外: 警告信息:
In file(file, "rt") :
无法打开文件'd-intc7208.txt': No such file or directory
+ acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
错误: 意外的符号 in:
"
acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int"
> log return')
错误: 意外的符号 in "log return"
acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
log return')
Box.test(int[,2], lag = 5, type = "Ljung-Box")
Box.test(int[,2], lag = 10, type = "Ljung-Box")
Box.test(int.l[,2], lag = 5, type = "Ljung-Box")
Box.test(int.l[,2], lag = 10, type = "Ljung-Box")
运行结果有以下错误,怎么办?
> int <- read.table("d-intc7208.txt", head=T)
错误于file(file, "rt") : 无法打开链结
此外: 警告信息:
In file(file, "rt") :
无法打开文件'd-intc7208.txt': No such file or directory
+ acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
错误: 意外的符号 in:
"
acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int"
> log return')
错误: 意外的符号 in "log return" 参考技术A 第一个问题的原因应该是没有把该txt文件放到R语言默认的文件夹下,所以读不到。用setwd("你的目录")
量化金融收益率对数收益率年华收益波动率夏普比率索提诺比率阿尔法和贝塔最大回撤
【量化金融】收益率、对数收益率、年华收益、波动率、夏普比率、索提诺比率、阿尔法和贝塔、最大回撤
1 收益率
在学术界,建模一般不直接使用资产价格,而是使用资产收益率(Returns)。因为收益率比价格具有更好的统计特性,更便于建模。下经典的收益率算法如下:
假设
P
t
P_t
Pt表示在时刻t时一种资产的价格,在没有利息的情况下,从时刻t-1到时刻t这一持有阶段的收益率为:
R
t
=
P
t
−
P
t
−
1
P
t
−
1
R_t = \\fracP_t-P_t-1P_t-1
Rt=Pt−1Pt−Pt−1
其中,分子
P
t
−
P
t
−
1
P_t-P_t-1
Pt−Pt−1表示资产在持有期内的收人或利润,如果该值为负,则表示亏损。分母
P
t
−
1
P_t-1
Pt−1,表示持有资产初期的原始投资。
2 对数收益率
对数收益率(Log returas),用
r
t
r_t
rt表示。定义如下:
r
t
=
l
n
(
1
+
R
t
)
=
l
n
(
P
t
P
t
−
1
)
r_t =ln(1+R_t) = ln(\\fracP_tP_t-1)
rt=ln(1+Rt)=ln(Pt−1Pt)
其中lnx() 表示自然对数,即以e为底的对数。对数收益率比简单的收益率更为常见,因为对数收益率具有三个良好的数学性质,具体如下。
(1)当x比较小的时候(比如小于 10%时),In(x)和x的值是很接近的。
(2)使用对数收益率,可以简化多阶段收益。k阶段总的对数收益就是k阶段的对数收益之和。
(3)将对数收益绘制成图表,在直观上更接近真实的表现。比如股票价格从 1元涨到 10元,相当于翻了10倍,再从10元涨到100元,也是翻了 10倍。如果单纯绘制股票价格,那么从 10元涨到 100 元的这一段明显会 “看起来涨了更多”。但是如果换算成对数价格,那么就不会存在这种直观偏差了。
3 年化收益
年化收益 (Annualized Returns) 表示资产平均每年能有多少收益。我们在对比资产的收益的时候,需要有一个统一的标准。计算方式是:
(最终价值
/
初始价值一
1
)
/
交易日数量
×
252
(最终价值/ 初始价值一1)/ 交易日数量 ×252
(最终价值/初始价值一1)/交易日数量×252
其中,252代表每年有252个交易日,这个数字每年都不一样,但业界为了方便,一般都将其固定为 252,即:
(
P
t
−
P
t
−
1
)
/
d
a
y
s
×
252
(P_t-P_t-1)/days × 252
(Pt−Pt−1)/days×252
年年化收益的一个直观的理解是,假设按照某种盈利能力,换算成一年的收益大概能有多少。这个概念常常会存在误导性,比如,这个月股票嫌了 5%,在随机波动的市场中,这是很正常的现象。如果据此号称年化收益为 5%×12个月=60%,这就显得不太可信了,实
际上每个月的收益不可能都这么稳定。所以在听到有人说年化收益的时候,需要特别留意一下具体的情况,否则很容易被误导。
4 波动率
波动率(Volatility)和风险,可以算是一对同义词,都是用来衡量收益率的不确定性的。波动率可以定义为收益率的标准差,即
σ
=
S
t
d
(
r
)
\\sigma = Std(r)
σ=Std(r)
假设不同时间段的收益率没有相关性(称为没有自相关性),那么可以证明的是,收益率的方差 Var(r)具有时间累加性。时间累加性的意思是,不同时间段t1,t2,…,tn的方差,加总即可得到这段时间的方差。换向话说,随着时间的增加,方差将会成正比增加,波动率(标准差)将会按时间开根号的比例增加。举个例子,假设股票收益率的日波动率为
σ
\\sigma
σ。那么股票每年的波动率就为
252
σ
\\sqrt252\\sigma
252σ
(假设一年有252个交易日)。这种不同周期间的波动率换算,在投资计算中非常常见。最常用的波动率是年化波动率,我们经常需要将日波动率、月波动率换算成年化波动率。
5 夏普比率
在研发策略的时候,经常会接触到各种各样的指标,这些指标代表了策略(资产、基金)的表现,比如下面将要介绍的夏普比率 (Sharpe Ratio)。关于夏普比率( Sharpe ratio),具有投资常识的人都明白,投资光看收益是不够的,还要看承受的风险,也就是收益风险比。夏普比率描述的正是这个概念,即每承受一单位的总风险,会产生多少超额的报酬。用数学公式描述就是:
S
h
a
r
p
e
R
a
t
i
o
=
E
(
R
p
)
−
R
f
σ
p
SharpeRatio =\\fracE(R_p)-R_f\\sigma_p
SharpeRatio=σpE(Rp)−Rf
其中各参数说明如下。
E
(
R
p
)
E(R_p)
E(Rp):表示投资组合预期收益率。
R
f
R_f
Rf:表示无风险利率
σ
p
\\sigma_p
σp:表示投资组合的波动率(亦即投资组合的风险)。
上面三个值一般是指年化后的值,比如预期收益率是指预期年化收益率。需要注意的是,虽然公式看起来很简单,但是计算起来其实并不容易。原因就是预期收益率E®和波动率,其实是无法准确得知的。我们只能用统计方法来估计这两个值,然而估计方法也有很多种。估计
E
(
R
p
)
E(R_p)
E(Rp)和
σ
p
\\sigma_p
σp,最简单的方法就是计算历史年化收益率及其标准差。然而,即使是同一种方法,针对不同周期计算出来的结果也可能存在很大的差别,从而产生误导。
6 索提诺比率
素提诺比率与夏普比率相似,不一样的是,索提诺比率是使用下行风险来衡量波动率的。在夏普比率中,资产大涨与资产大跌都可视为波动风险。实际上,有时候大洪并不算风险,大跌才是风险,比如基金净值,所以索提诺比率只考虑大跌的风险,这也可以看作是对夏普比率的一种修正方式。但是在某些品种中,大涨大跌都可能是风险,比如可以做多做空的期货。美股也可以做多或者做空,这种情况下,涨或跌都是风险。索提诺比率之所以没有流行,大概是因为美股可以做空。
7 埃尔法和贝塔
阿尔法策略其实是来源于资本资产定价模型(CAPM)。这个模型将股票的收益分为了两个部分,一部分是由大盘涨跌带来的,另一部分则是由股票自身的特性带来的。大盘的那部分影响就是贝塔(Beta)值,剔除大盘的影响,剩下的股票自身就是 Alpha 值。所以在谈论 Alpha 策略的时候,其实就是在谈论股票与大盘无关的那部分收益。如果Alpha 策略做得好,对冲掉大盘风险后,可以取得相当稳定的收益。
8 最大回撤
顾名思义,是指投资一项资产,可能产生的最大亏损,即所谓的“买在最高点,抛在最低点”
计算公式如下:
m
a
x
(
1
−
当日净值
/
当日之前最高净值)
max (1-当日净值/ 当日之前最高净值)
max(1−当日净值/当日之前最高净值)
这个 max 需要对每个交易日进行循环。
9 参考
参考书籍《Python量化投资技术、模型与策略》赵志强 刘志伟
以上是关于金融时间序列分析用R语言画简单收益率和对数收益率的ACF图?!的主要内容,如果未能解决你的问题,请参考以下文章
量化金融收益率对数收益率年华收益波动率夏普比率索提诺比率阿尔法和贝塔最大回撤