drozden píše:Přesně tak.
Ok, díky.
drozden píše:Ad R: Je zvláštní, že vám ten druhý skript neběží - na co si stěžuje?
Háže mi to tohle:
- Kód: Vybrat vše
> library(tseries)
> library(zoo)
> # data z yahoo
> daily.close <- get.hist.quote("500.PA", quote="AdjClose", retclass="zoo")
trying URL 'http://chart.yahoo.com/table.csv?s=500.PA&a=0&b=02&c=1991&d=8&e=05&f=2016&g=d&q=q&y=0&z=500.PA&x=.csv'
Content type 'text/csv' length unknown
downloaded 77 KB
time series starts 2010-06-16
> daily.close <- na.locf(daily.close)
> monthly.close <- aggregate(daily.close, as.yearmon, tail, 1)
>
> # prepocitani cen na vynosy
> returns<-(exp(diff(log(monthly.close)))-1)*100
>
> # data od Frenche
> #global
> #ffdata<-read.table("Global_3_Factors.csv",header=1, sep=",")
> #us
> ffdata<-read.table("F-F_Research_Data_Factors.CSV",header=1)
>
> ffdata$Date<-ffdata$Date*100+1
Error in `$<-.data.frame`(`*tmp*`, "Date", value = numeric(0)) :
replacement has 0 rows, data has 1079
> ffdata$Date<-as.Date(as.character(ffdata$Date),format="%Y%m%d")
Error in `$<-.data.frame`(`*tmp*`, "Date", value = numeric(0)) :
replacement has 0 rows, data has 1079
> ffzoo<-zoo(ffdata[,2:5],as.yearmon(ffdata$Date))
> all.data<-merge.zoo(ffzoo,returns,all=FALSE,retclass="data.frame")
>
> # prepsat data daty upravenymi o FX?
> do.fx=1
> if (do.fx){
+ library(quantmod)
+ getSymbols("DEXUSEU",src="FRED")
+ DEXUSEU<-na.locf(DEXUSEU)
+ fx.monthly<-aggregate(DEXUSEU, as.yearmon, tail, 1)
+ fx.returns<-exp(diff(log(fx.monthly)))
+ returns=((returns/100+1)*fx.returns-1)*100
+ all.data<-merge.zoo(ffzoo,returns,all=FALSE,retclass="data.frame")
+ }
Error in library(quantmod) : there is no package called ‘quantmod’
>
> names(all.data)<-c('Mkt.RF','SMB','HML','RF','Returns')
> all.data$Returns<-all.data$Returns-all.data$RF
Warning message:
Incompatible methods ("Ops.zoo", "Ops.factor") for "-"
> #mod<-lm(Returns~Mkt.RF+SMB+HML,data=tail(all.data,36))
> mod<-lm(Returns~Mkt.RF+SMB+HML,data=all.data)
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
> summary(mod)
Error in summary(mod) : object 'mod' not found
>
drozden píše:Nevím jak jste na tom se statistikou, ale ve výstupu toho vašeho skriptu by vás mělo zejména upoutat:
1) že vám 100 % long large-cap světový fond víc loaduje na hml než na trh a
2) že váš model nic nevysvětluje (hodnota R^2).
No tak ta čísla se mi nezdála, to je fakt, ale spíš jsem si myslel, že nemám dost dat o tom fondu, nebo že mám nějak špatně něco jiného. Já jsem popravdě ani nečekal, že by mi to vyplivlo vysoké R^2 nebo signifikantní loading. Tak vysoko jsem ani nemířil.
EDIT: Tak jsem na poslední chvíli pošolíchal váš skript:
- Kód: Vybrat vše
library(tseries)
library(zoo)
# data z yahoo
daily.close <- get.hist.quote("500.PA", quote="AdjClose", retclass="zoo")
daily.close <- na.locf(daily.close)
monthly.close <- aggregate(daily.close, as.yearmon, tail, 1)
# prepocitani cen na vynosy
returns<-(exp(diff(log(monthly.close)))-1)*100
# data od Frenche
#global
#ffdata<-read.csv("Global_3_Factors.csv",header=TRUE, sep=",")
#us
ffdata<-read.csv("Global_3_Factors.csv",header=TRUE,sep=",")
ffdata$Date<-ffdata$Date*100+1
ffdata$Date<-as.Date(as.character(ffdata$Date),format="%Y%m%d")
ffzoo<-zoo(ffdata[,2:5],as.yearmon(ffdata$Date))
all.data<-merge.zoo(ffzoo,returns,all=FALSE,retclass="data.frame")
# prepsat data daty upravenymi o FX?
do.fx=1
if (do.fx){
library(quantmod)
getSymbols("DEXUSEU",src="FRED")
DEXUSEU<-na.locf(DEXUSEU)
fx.monthly<-aggregate(DEXUSEU, as.yearmon, tail, 1)
fx.returns<-exp(diff(log(fx.monthly)))
returns=((returns/100+1)*fx.returns-1)*100
all.data<-merge.zoo(ffzoo,returns,all=FALSE,retclass="data.frame")
}
names(all.data)<-c('Mkt.RF','SMB','HML','RF','Returns')
all.data$Returns<-all.data$Returns-all.data$RF
#mod<-lm(Returns~Mkt.RF+SMB+HML,data=tail(all.data,36))
mod<-lm(Returns~Mkt.RF+SMB+HML,data=all.data)
summary(mod)
a dopadlo to takhle:
- Kód: Vybrat vše
Call:
lm(formula = Returns ~ Mkt.RF + SMB + HML, data = all.data)
Residuals:
Min 1Q Median 3Q Max
-2.5329 -0.7423 -0.0874 0.7467 3.3827
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.34858 0.15518 2.246 0.0279 *
Mkt.RF 0.85077 0.03798 22.398 <2e-16 ***
SMB -0.29579 0.11199 -2.641 0.0102 *
HML -0.16397 0.10386 -1.579 0.1190
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.275 on 69 degrees of freedom
Multiple R-squared: 0.881, Adjusted R-squared: 0.8758
F-statistic: 170.3 on 3 and 69 DF, p-value: < 2.2e-16
Když zkusím EUNL.DE, tak mi to vyšlo stejně jako vám:
- Kód: Vybrat vše
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.02596 0.07178 -0.362 0.71857
Mkt.RF 0.95657 0.01757 54.445 < 2e-16 ***
SMB -0.16544 0.04971 -3.328 0.00134 **
HML -0.02457 0.04779 -0.514 0.60860
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6248 on 77 degrees of freedom
Multiple R-squared: 0.9761, Adjusted R-squared: 0.9752
F-statistic: 1050 on 3 and 77 DF, p-value: < 2.2e-16