尝试一下重尾Lambert W x F或偏斜的Lambert W x F分布(免责声明:我是作者)。在R中,它们在LambertW包中实现。
相关文章:
与具有固定自由度的柯西或学生t分布相比,优点之一是可以根据数据估算尾部参数-因此,您可以让数据确定存在哪些矩。此外,Lambert W x F框架允许您转换数据并消除偏斜/重尾现象。重要的是要注意,尽管OLS不需要或正态性。但是,对于您的EDA来说可能是值得的。XyX
这是适用于股票基金收益的Lambert W x高斯估计的示例。
library(fEcofin)
ret <- ts(equityFunds[, -1] * 100)
plot(ret)
收益的汇总指标与OP的职位类似(不那么极端)。
data_metrics <- function(x) {
c(mean = mean(x), sd = sd(x), min = min(x), max = max(x),
skewness = skewness(x), kurtosis = kurtosis(x))
}
ret.metrics <- t(apply(ret, 2, data_metrics))
ret.metrics
## mean sd min max skewness kurtosis
## EASTEU 0.1300 1.538 -18.42 12.38 -1.855 28.95
## LATAM 0.1206 1.468 -6.06 5.66 -0.434 4.21
## CHINA 0.0864 0.911 -4.71 4.27 -0.322 5.42
## INDIA 0.1515 1.502 -12.72 14.05 -0.505 15.22
## ENERGY 0.0997 1.187 -5.00 5.02 -0.271 4.48
## MINING 0.1315 1.394 -7.72 5.69 -0.692 5.64
## GOLD 0.1098 1.855 -10.14 6.99 -0.350 5.11
## WATER 0.0628 0.748 -5.07 3.72 -0.405 6.08
大多数系列明显显示出非正常的特征(强烈的偏度和/或大峰度)。让我们使用矩估计器(IGMM
)的高尾Lambert W x高斯分布(= Tukey h)高斯化每个序列。
library(LambertW)
ret.gauss <- Gaussianize(ret, type = "h", method = "IGMM")
colnames(ret.gauss) <- gsub(".X", "", colnames(ret.gauss))
plot(ts(ret.gauss))
时间序列图显示的尾部少得多,并且随时间变化也更稳定(尽管不是恒定的)。再次根据高斯时间序列计算指标,得出:
ret.gauss.metrics <- t(apply(ret.gauss, 2, data_metrics))
ret.gauss.metrics
## mean sd min max skewness kurtosis
## EASTEU 0.1663 0.962 -3.50 3.46 -0.193 3
## LATAM 0.1371 1.279 -3.91 3.93 -0.253 3
## CHINA 0.0933 0.734 -2.32 2.36 -0.102 3
## INDIA 0.1819 1.002 -3.35 3.78 -0.193 3
## ENERGY 0.1088 1.006 -3.03 3.18 -0.144 3
## MINING 0.1610 1.109 -3.55 3.34 -0.298 3
## GOLD 0.1241 1.537 -5.15 4.48 -0.123 3
## WATER 0.0704 0.607 -2.17 2.02 -0.157 3
该IGMM
算法完全达到了设定的目的:将数据转换为峰度等于。有趣的是,所有时间序列现在都具有负偏度,这与大多数金融时间序列文献一致。重要的是在这里指出,它仅在边际上起作用,而不是共同起作用(类似于)。3Gaussianize()
scale()
简单二元回归
要考虑高斯化对OLS的影响,请考虑从“ INDIA”收益预测“ EASTEU”收益,反之亦然。尽管我们正在寻找间同一天返回上(无滞后变量),但它仍然对于给定的印度和欧洲之间的6H +时差A股市场的预测提供了价值。 - [R 我Ñ d 我甲,吨rEASTEU,trINDIA,t
layout(matrix(1:2, ncol = 2, byrow = TRUE))
plot(ret[, "INDIA"], ret[, "EASTEU"])
grid()
plot(ret.gauss[, "INDIA"], ret.gauss[, "EASTEU"])
grid()
原始序列的左侧散点图显示,强异常值并非在同一天发生,而是在印度和欧洲发生在不同的时间。除此之外,尚不清楚中心的数据云是否不支持相关性或负/正相关性。由于离群值强烈影响方差和相关估计,因此值得一看的是去除了大量尾部(右侧散点图)的依存关系。这里的模式更加清晰,印度与东欧市场之间的积极关系也变得显而易见。
# try these models on your own
mod <- lm(EASTEU ~ INDIA * CHINA, data = ret)
mod.robust <- rlm(EASTEU ~ INDIA, data = ret)
mod.gauss <- lm(EASTEU ~ INDIA, data = ret.gauss)
summary(mod)
summary(mod.robust)
summary(mod.gauss)
格兰杰因果关系
针对“ EASTEU”和“ INDIA”的基于模型的Granger因果关系检验 (我使用来捕获每日交易的周效应),而对任一方向均拒绝“无Granger因果关系”。p = 5VAR(5)p=5
library(vars)
mod.vars <- vars::VAR(ret[, c("EASTEU", "INDIA")], p = 5)
causality(mod.vars, "INDIA")$Granger
##
## Granger causality H0: INDIA do not Granger-cause EASTEU
##
## data: VAR object mod.vars
## F-Test = 3, df1 = 5, df2 = 3000, p-value = 0.02
causality(mod.vars, "EASTEU")$Granger
##
## Granger causality H0: EASTEU do not Granger-cause INDIA
##
## data: VAR object mod.vars
## F-Test = 4, df1 = 5, df2 = 3000, p-value = 0.003
但是,对于高斯数据,答案是不同的!这里测试可以不拒绝H0,“印度并没有格兰杰原因EASTEU”,但仍然拒绝说:“EASTEU不格兰杰原因的印度”。因此,高斯化的数据支持了欧洲市场在第二天推动印度市场的假设。
mod.vars.gauss <- vars::VAR(ret.gauss[, c("EASTEU", "INDIA")], p = 5)
causality(mod.vars.gauss, "INDIA")$Granger
##
## Granger causality H0: INDIA do not Granger-cause EASTEU
##
## data: VAR object mod.vars.gauss
## F-Test = 0.8, df1 = 5, df2 = 3000, p-value = 0.5
causality(mod.vars.gauss, "EASTEU")$Granger
##
## Granger causality H0: EASTEU do not Granger-cause INDIA
##
## data: VAR object mod.vars.gauss
## F-Test = 2, df1 = 5, df2 = 3000, p-value = 0.06
请注意,我不清楚哪一个是正确的答案(如果有的话),但这是一个有趣的发现。不用说,整个因果关系测试取决于是正确的模型-很有可能不是;但我认为它可以很好地说明问题。VAR(5)