Akcie na tento rok

Podílové fondy, akcie, komoditní trhy, spekulace, aukce. Kam a jak nejlépe investovat volné finanční prosředky

Moderátor: Moderátoři FinExpert.cz

Odeslat příspěvekod jednadva 6. 9. 2016 16:13

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
jednadva
Diskutér

Odeslat příspěvekod drozden 6. 9. 2016 20:17

jednadva píše:> ffdata$Date<-ffdata$Date*100+1
Error in `$<-.data.frame`(`*tmp*`, "Date", value = numeric(0)) :
replacement has 0 rows, data has 1079

To je proto, že nemáte první sloupec v datech pojmenovaný "Date", případně nějaký jiný problém s formátem dat. Skript v principu předpokládá následujcí formáty dat:
Kód: Vybrat vše
Date   Mkt-RF   SMB   HML   RF
192607    2.96   -2.30   -2.87    0.22
192608    2.64   -1.40    4.19    0.25

Pro načítání příkazem "ffdata<-read.table("F-F_Research_Data_Factors.CSV",header=1)", případně
Kód: Vybrat vše
Date,   Mkt-RF,   SMB,   HML,   RF
199007    ,0.80    ,0.58   ,-0.16    ,0.68
199008  ,-10.77   ,-1.49    ,0.36    ,0.66

pro načítání "ffdata<-read.table("Global_3_Factors.csv",header=1, sep=",")"
jednadva píše:Error in library(quantmod) : there is no package called ‘quantmod’

To už jste, předpokládám, vyřešil.

Každopádně se zdá, že už jste to zprovoznil, tak si můžete dosyta vyhrát i s eurovými ETF (a koneckonců nejen ETF - se vším, k čemu má yahoo data).
drozden
Mírně pokročilý

Odeslat příspěvekod jednadva 7. 9. 2016 07:21

Ano, teď už mi to zdá se funguje dobře. Díky za ochotu. Zatím mi z toho ale jde hlava kolem, tak až si to sedne, položil bych případně zase nějaký dotaz. :) Ještě jednou díky.

EDIT:
Ale no tak já do toho půjdu hned. :) Asi jsem zmatený z toho důvodu, že dobře neznám lineární regrese. Pokud by se vám to tak jevilo, tak bych jenom poprosil ťuknout a já se to nejdřív pořádně naučím, ať se mnou netrávíte zbytečně čas.

1. V Sharpově CAPM je beta = (kovariance výnosu aktiva s výnosem tržního portfolia)/(rozptyl výnosu tržního portfolia). Čemu je rovna tržní beta ve FF3?

2. Co dělá ta modelovací funkce lm v R s rizikovými prémiemi a výnosy ETF? Vezme prémie, zprůměruje je, spočítá jejich směrodatnou odchylku, potom se podívá na výnosy ETF, zprůměruje je, spočítá jejich směrodatnou odchylku a pak co nejlépe napasuje výnosy ETF na prémie podle toho, jak výnosy ETF s prémiemi korelují?
jednadva
Diskutér

Odeslat příspěvekod drozden 7. 9. 2016 12:33

lm v R není nic jiného než obecný lineární model. To je funkce, která se snaží daty proložit přímku tak, aby ta co nejlépe popisovala data (= aby suma kvadrátů vzdálenosti skutečných dat od dat predikovaných modelem byla minimální).
Pokud dobře rozumím tomu, na co se ptáte, tak to bude třeba vzít trochu oklikou.
Vyjeďte si data pro VTI, měla by vám vyjít takto:
Kód: Vybrat vše
Residuals:
     Min       1Q   Median       3Q      Max
-0.76338 -0.11948  0.01203  0.12332  0.75379

Coefficients:
             Estimate Std. Error t value Pr(>|t|)   
(Intercept)  0.002401   0.016814   0.143    0.887   
Mkt.RF       0.998956   0.004128 241.979  < 2e-16 ***
SMB         -0.002429   0.007106  -0.342    0.733   
HML          0.029221   0.006982   4.185  4.5e-05 ***


Pokud by v daný měsíc byly výnosy všech faktorů 1 %, pak by modelem predikovaný výnos VTI byl:
0.002401+0.998956*1-0.002429*1+0.029221*1=1.028149

Vezměme květen 2016, aplikací modelu zjistíme, že očekávaný výnos VTI je:
0.002401 + 0.998956*1.78 - 0.002429*−0.28 + 0.029221*−1.85=1.72716395
Z dat snadno zjistíme, že reálný výnos byl 1.72442759. Rozdíl mezi reálnou hodnotou a očekávanou hodnotou se nazývá reziduál a je v tomto případě maličký - model pro tento měsíc sedí na data velmi přesně. Když si vypočítáte reziduály pro listopad 2005 a březen 2009, měly by vám vyjít hodnoty uvedené jako min a max ve výstupu z Rka. V dané měsíce se tedy model sekl nejvíc. S trochou umělecké licence se dá říct, že lm se snaží najít takové nálože pro jednotlivé faktory, aby výsledné reziduály byly co nejmenší.

1) Beta je tak v principu rovna výnosu trhu očištěnému o výnosy dalších dvou faktorů, které jsou použity pro vysvětlení celkového výnosu trhu (+ alfa).
2) Na to, jak přesně hledání parametrů funguje, se budete muset podívat na nějakou učebnici základů statistiky, hledejte metodu nejmenších čtverců.
drozden
Mírně pokročilý

Odeslat příspěvekod jednadva 7. 9. 2016 14:00

[EDIT: Já jsem blb. Tak v tom květnu 2016 jsem jenom zapomněl odečíst RF.]
[EDIT1: Tak reziduum v listopadu 2005 mi vyšlo 0,75379382 a reziduum v březnu 2009 mi vyšlo -0,76337585. V obou případech jsem jenom neodečetl RF od výnosu VTI za daný měsíc.]

drozden píše:Pokud by v daný měsíc byly výnosy všech faktorů 1 %, pak by modelem predikovaný výnos VTI byl:
0.002401+0.998956*1-0.002429*1+0.029221*1=1.028149

Vezměme květen 2016, aplikací modelu zjistíme, že očekávaný výnos VTI je:
0.002401 + 0.998956*1.78 - 0.002429*−0.28 + 0.029221*−1.85=1.72716395
Z dat snadno zjistíme, že reálný výnos byl 1.72442759. Rozdíl mezi reálnou hodnotou a očekávanou hodnotou se nazývá reziduál a je v tomto případě maličký - model pro tento měsíc sedí na data velmi přesně.

Aha, aha, tak takhle. MNČ a tři parametry. Teď už to snad trošku chápu. Díky.

Zkusil jsem si spočítat ta minimální a maximální rezidua, ale nějak mi nevyšla. Nesedí mi ani výnos VTI pro květen 2016. Určitě jsem všecky výnosy VTI spočítal špatně. Vzal jsem takhle část skriptu:

Kód: Vybrat vše
daily.close <- get.hist.quote("VTI", 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


a pak otrocky

Kód: Vybrat vše
print(returns)


a dostal jsem

Kód: Vybrat vše
5 2016    1.73442759


Co dělám špatně?
jednadva
Diskutér

Odeslat příspěvekod jednadva 8. 9. 2016 08:53

Tak teď si myslím, že jsem tady udělal odhad něčeho na způsob CAPM bety iShares MSCI World (EUNL):

Skript:

Kód: Vybrat vše
library(tseries)
library(zoo)
# data z yahoo
daily.close <- get.hist.quote("eunl.de", 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("F-F_Research_Data_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))
ffzoo2<-zoo(ffdata[,2],as.yearmon(ffdata$Date))
ffzoo5<-zoo(ffdata[,5],as.yearmon(ffdata$Date))
all.data<-merge.zoo(ffzoo2,ffzoo5,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(ffzoo2,ffzoo5,returns,all=FALSE,retclass="data.frame")
  #all.data<-merge.zoo(ffzoo,returns,all=FALSE,retclass="data.frame")

}

#names(all.data)<-c('Mkt.RF','SMB','HML','RF','Returns')
names(all.data)<-c('Mkt.RF','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)
mod<-lm(Returns~Mkt.RF,data=all.data)

summary(mod)


Výsledek:

Kód: Vybrat vše
Residuals:
    Min      1Q  Median      3Q     Max
-2.1197 -0.3615  0.0089  0.3887  1.9466

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) -0.02663    0.07494  -0.355    0.723   
Mkt.RF       0.95709    0.01807  52.960   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.661 on 79 degrees of freedom
Multiple R-squared:  0.9726,    Adjusted R-squared:  0.9723
F-statistic:  2805 on 1 and 79 DF,  p-value: < 2.2e-16
jednadva
Diskutér

Odeslat příspěvekod drozden 9. 9. 2016 10:54

Mate to spravne, ale s tim skriptem (ffzoo2, ffzoo5) jste si pridelaval praci zbytecne, klidne jste to mohl nechat byt; jedine, co je dulezite, je vytvorit ten model bez HML a SMB, tedy tato cast: "mod<-lm(Returns~Mkt.RF,data=all.data)". Ze jsou v tom data framu i nepouzivane sloupce nicemu nevadi.
drozden
Mírně pokročilý

Odeslat příspěvekod jednadva 11. 9. 2016 15:18

Aha, díky, holt chybami se člověk učí. :)

Zkoušel jsem si americká ETF držící REITs, ale tam mi třífaktorový model vysvětluje jen zhruba 30 - 50 % variability. Co si o tom myslíte?
jednadva
Diskutér

Odeslat příspěvekod drozden 15. 9. 2016 19:23

Takhle velká disperze R^2 je zvláštní, zkuste se podívat, jestli netestujete příliš odlišné časové úseky. Korelace mezi jednolivými ETF je relativně vysoká, tudíž by mělo být i R^2. Druhá věc je ta, že některé ETF mají i mortgage REIT, které snižují jejich korelaci s equity REIT - a modelovat návratnost hypoték na akciový trh není úplně smysluplné.

S tím souvisí i to, že REIT se chovají jako hybrid dluhopisů s ratingem, HY dluhopisů a akcií. O něco přesnější model by mohl být takový, který by vzal z výnosu akciového trhu jeho implicitní páku, dále výnos různých tříd dluhopisů a tím se snažil vysvětlit výnos REIT. Na to už si ale s jednoduchým skriptem a daty od Frenche úplně nevystačíte.
drozden
Mírně pokročilý

Odeslat příspěvekod jednadva 18. 9. 2016 18:58

Testoval jsem tahle REIT ETF. Ta data jsou opravdu dost různě dlouhá, od několika měsíců po asi 15 let.

drozden píše:implicitní páku

Tomu bohužel nerozumím. Mohl byste mi to prosím vysvětlit?

drozden píše:S tím souvisí i to, že REIT se chovají jako hybrid dluhopisů s ratingem, HY dluhopisů a akcií.

To je zajímavé. Schválně jsem si v portfoliovizualizéru zkusil přidat fixed income factor model do regrese VNQ. Vyšly tam pěkně signifikantně faktory market + credit + term.

Upřímně řečeno jsou ale ta REITs spíš jenom taková "krycí akce". Chci nějak rozumně uchopit mj. to, jak modelovat výnos z nezastavěného stavebního pozemku a jak to zapasovat do zbytku portfolia. Kdybyste měl nápad, rozhodně se nebudu zlobit. :)
jednadva
Diskutér

Odeslat příspěvekod drozden 20. 9. 2016 13:58

Společnosti tvořící akciový trh mají v průměru čistý dluh, což znamená, že jejich zisky jsou umocněny finanční pákou (stejně tak jako jejich ztráty). Výnos trhu akcií je tedy tvořen výnosem vlastního jmění a páky. REIT mají dluh samozřejmě taky a obvykle mnohem vyšší, ale pokud nemají srovnatelné zadlužení (ve smyslu délky splatnosti, požadovaného výnosu a daších ustanovení), pak v regresi trochu mícháte jablka a hrušky. Mimochodem, zkuste si udělat regresi třeba VNQ na JNK+HML, dobře to myslím demonstruje, co mám na mysli.

S tím modelem vám asi nepomůžu, zjevně nemáte potřebná data (pomohl by vývoj srovnatelných pozemků v daném místě :-) ), takže můžete dělat pouze odhady, jejichž přesnost ale bude dost mizerná. Studie, které jsem četl (nicméně o nemovitosti se zajímám jen velmi málo, takže to berte spíš jako výchozí bod svého vlastního studia) ukazují, že většina výnosu z nemovitostí jde za vlastníky půdy, nikoliv staveb, takže by možná nebylo od věci aproximovat dlouhodobý výnos pozemku jako dlouhodobý výnos nemovitostí v lokalitě. Což je v ČR ošemetná otázka, vzhledem k tomu, kam šly v v posledních 15 letech úrokové sazby a kolik ze změny ceny je tedy vysvětleno touto změnou, nikoliv samotným zhodnocením.
drozden
Mírně pokročilý

Odeslat příspěvekod jednadva 24. 9. 2016 18:03

drozden píše:Společnosti tvořící akciový trh mají v průměru čistý dluh, což znamená, že jejich zisky jsou umocněny finanční pákou (stejně tak jako jejich ztráty). Výnos trhu akcií je tedy tvořen výnosem vlastního jmění a páky.

Jo takhle, aha. Takže v zásadě tohle?

E.g. If the gold bar is initially worth $100 (financed with $50 equity and $50 debt), but then rises to $110, then the value of equity becomes $60, while the value of debt remains at $50. Equity holders enjoy a 20% increase (10/50) in share value, against 10% (=10/100) in the unlevered case. In moving from 0% gearing to 50% gearing, the volatility of equity value has doubled.

Zdroj: http://quant.stackexchange.com/questions/4954/what-is-the-leverage-effect-for-stocks

drozden píše:Mimochodem, zkuste si udělat regresi třeba VNQ na JNK+HML, dobře to myslím demonstruje, co mám na mysli.

Teď se přiznám, že nevím, co myslíte pod JNK. To je faktor nebo ticker ETF na junk bondy?

drozden píše:Což je v ČR ošemetná otázka, vzhledem k tomu, kam šly v v posledních 15 letech úrokové sazby a kolik ze změny ceny je tedy vysvětleno touto změnou, nikoliv samotným zhodnocením.

A ještě třetí (asi) hloupý dotaz :): to znamená, že zlevnily hypotéky, tím pádem se zvýšila poptávka po nemovitostech a taky jejich cena?
jednadva
Diskutér

Odeslat příspěvekod drozden 2. 10. 2016 15:01

jednadva píše:Jo takhle, aha. Takže v zásadě tohle?

Přesně tak.

jednadva píše:Teď se přiznám, že nevím, co myslíte pod JNK. To je faktor nebo ticker ETF na junk bondy?

Jde o ETF na junk (high-yield) dluhopisy. Zkuste jím nahradit v regresi faktor trhu.

jednadva píše:A ještě třetí (asi) hloupý dotaz :): to znamená, že zlevnily hypotéky, tím pádem se zvýšila poptávka po nemovitostech a taky jejich cena?

V zásadě ano, resp. tak jak jste to napsal je to klasický učebnicový příklad. Ve skutečnosti je to samozřejmě složitější, protože úroková sazba nějakým způsobem odráží tržní poptávku a nabídku po penězích a ta neexistuje ve vakuu, ale je svázána s (kromě jiného) očekávaným výnosem potenciálních investic, které se za ně dají pořídit. V okamžiku kdy všechny investice mají nízký očekávaný výnos, zdraží samozřejmě i pozemky a nemovitosti tak, aby relativní ocenění rizika jejich výnosu zůstalo +/- zachováno. (pod čarou: nemovitosti podle mého názoru zdražily ještě mnohem více, protože jsou na ně peníze dostupné i lidem, kteří o investování netuší nic, tudíž se relativním oceněním příliš nezabývají; stačí si přečíst diskuzní fóra).
drozden
Mírně pokročilý

Odeslat příspěvekod jednadva 2. 10. 2016 17:05

drozden píše:
jednadva píše:Jo takhle, aha. Takže v zásadě tohle?

Přesně tak.

Díky, zajímavá věc. Závisí to na neplatnosti Modiglianiho a Millerova teorému, nebo ne?

drozden píše:
jednadva píše:Teď se přiznám, že nevím, co myslíte pod JNK. To je faktor nebo ticker ETF na junk bondy?

Jde o ETF na junk (high-yield) dluhopisy. Zkuste jím nahradit v regresi faktor trhu.

Já jsem to zkoušel zleva zprava, ale bohužel se mi to seká. Nemám zas nějak špatně ten skript? (Omlouvám se, poněkud mi nabobtnal, dělal jsem si regrese faktorů na faktory.) :)
Kód: Vybrat vše
library(tseries)
library(zoo)

# data z yahoo
daily.close <- get.hist.quote("vnq", quote="AdjClose", retclass="zoo")
daily.close <- na.locf(daily.close)
monthly.close <- aggregate(daily.close, as.yearmon, tail, 1)

daily.closeJNK <- get.hist.quote("jnk", quote="AdjClose", retclass="zoo")
daily.closeJNK <- na.locf(daily.closeJNK)
monthly.closeJNK <- aggregate(daily.closeJNK, as.yearmon, tail, 1)


# prepocitani cen na vynosy
returns<-(exp(diff(log(monthly.close)))-1)*100
returnsJNK<-(exp(diff(log(monthly.closeJNK)))-1)*100


# data od Frenche
#global
#ffdata<-read.csv("Global_3_Factors.csv",header=TRUE, sep=",")
#us
ffdata<-read.csv("F-F_Research_Data_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,returnsJNK,all=FALSE,retclass="data.frame")

# prepsat data daty upravenymi o FX?
do.fx=0
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(ffzoo2,ffzoo5,returns,all=FALSE,retclass="data.frame")
  all.data<-merge.zoo(ffzoo,returns,all=FALSE,retclass="data.frame")

}

#names(all.data)<-c('Mkt.RF','SMB','HML','RF','Returns')
names(all.data)<-c('Mkt.RF','SMB','HML','RF','Returns','ReturnsJNK')
all.data$Returns<-all.data$Returns-all.data$RF
all.data$ReturnsJNK<-all.data$ReturnsJNK-all.data$RF
#mod<-lm(Returns~Mkt.RF+SMB+HML,data=tail(all.data,36))
mod<-lm(Returns~ReturnsJNK,HML,data=all.data)
#mod<-lm(Returns~Mkt.RF,data=all.data)
#mod<-lm(SMB~Mkt.RF+HML,data=all.data)
#mod<-lm(Mkt.RF~SMB+HML,data=all.data)
#mod<-lm(Mkt.RF~SMB+HML,data=tail(all.data,36))
#mod<-lm(JNK~SMB+Mkt.RF,data=all.data)

summary(mod)


Háže mi to tuhle chybu - Error in rows[i] : only 0's may be mixed with negative subscripts:

Kód: Vybrat vše
> library(tseries)
> library(zoo)
>
> # data z yahoo
> daily.close <- get.hist.quote("vnq", quote="AdjClose", retclass="zoo")
trying URL 'http://chart.yahoo.com/table.csv?s=vnq&a=0&b=02&c=1991&d=9&e=01&f=2016&g=d&q=q&y=0&z=vnq&x=.csv'
Content type 'text/csv' length unknown
downloaded 191 KB

time series starts 2004-09-29
time series ends   2016-09-30
> daily.close <- na.locf(daily.close)
> monthly.close <- aggregate(daily.close, as.yearmon, tail, 1)
>
> daily.closeJNK <- get.hist.quote("jnk", quote="AdjClose", retclass="zoo")
trying URL 'http://chart.yahoo.com/table.csv?s=jnk&a=0&b=02&c=1991&d=9&e=01&f=2016&g=d&q=q&y=0&z=jnk&x=.csv'
Content type 'text/csv' length unknown
downloaded 139 KB

time series starts 2007-12-04
time series ends   2016-09-30
> daily.closeJNK <- na.locf(daily.closeJNK)
> monthly.closeJNK <- aggregate(daily.closeJNK, as.yearmon, tail, 1)
>
>
> # prepocitani cen na vynosy
> returns<-(exp(diff(log(monthly.close)))-1)*100
> returnsJNK<-(exp(diff(log(monthly.closeJNK)))-1)*100
>
>
> # data od Frenche
> #global
> #ffdata<-read.csv("Global_3_Factors.csv",header=TRUE, sep=",")
> #us
> ffdata<-read.csv("F-F_Research_Data_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,returnsJNK,all=FALSE,retclass="data.frame")
>
> # prepsat data daty upravenymi o FX?
> do.fx=0
> 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(ffzoo2,ffzoo5,returns,all=FALSE,retclass="data.frame")
+   all.data<-merge.zoo(ffzoo,returns,all=FALSE,retclass="data.frame")
+
+ }
>
> #names(all.data)<-c('Mkt.RF','SMB','HML','RF','Returns')
> names(all.data)<-c('Mkt.RF','SMB','HML','RF','Returns','ReturnsJNK')
> all.data$Returns<-all.data$Returns-all.data$RF
> all.data$ReturnsJNK<-all.data$ReturnsJNK-all.data$RF
> #mod<-lm(Returns~Mkt.RF+SMB+HML,data=tail(all.data,36))
> mod<-lm(Returns~ReturnsJNK,HML,data=all.data)
Error in rows[i] : only 0's may be mixed with negative subscripts
> #mod<-lm(Returns~Mkt.RF,data=all.data)
> #mod<-lm(SMB~Mkt.RF+HML,data=all.data)
> #mod<-lm(Mkt.RF~SMB+HML,data=all.data)
> #mod<-lm(Mkt.RF~SMB+HML,data=tail(all.data,36))
> #mod<-lm(JNK~SMB+Mkt.RF,data=all.data)
>
> summary(mod)
Error in summary(mod) : object 'mod' not found
>


drozden píše:
jednadva píše:A ještě třetí (asi) hloupý dotaz :): to znamená, že zlevnily hypotéky, tím pádem se zvýšila poptávka po nemovitostech a taky jejich cena?

V zásadě ano, resp. tak jak jste to napsal je to klasický učebnicový příklad. Ve skutečnosti je to samozřejmě složitější, protože úroková sazba nějakým způsobem odráží tržní poptávku a nabídku po penězích a ta neexistuje ve vakuu, ale je svázána s (kromě jiného) očekávaným výnosem potenciálních investic, které se za ně dají pořídit. V okamžiku kdy všechny investice mají nízký očekávaný výnos, zdraží samozřejmě i pozemky a nemovitosti tak, aby relativní ocenění rizika jejich výnosu zůstalo +/- zachováno. (pod čarou: nemovitosti podle mého názoru zdražily ještě mnohem více, protože jsou na ně peníze dostupné i lidem, kteří o investování netuší nic, tudíž se relativním oceněním příliš nezabývají; stačí si přečíst diskuzní fóra).

Takže do budoucna asi raději čekat nějaký ten tlak na ceny nemovitostí směrem dolů, poněvadž úrokové sazby nejspíš porostou?
jednadva
Diskutér

Odeslat příspěvekod Ladislav 1. 1. 11. 2016 10:39

Vale-pre.jpg

Z dolíku v únoru 2016 na vrchol koncem října 2016 je +312% za 8 měsíců
Vale S.A. Reg. Preferred Shs A o.N. - burza Frankfurt - ISIN BRVALEACNPA3

Společnost Údolí sladké řeky je brazilský nadnárodní důlní společnost a jeden z největších logistických operátorů v zemi.
Companhia Vale do Rio Doce é uma mineradora multinacional brasileira e uma das maiores operadoras de logística do país.

Akcie Vale má před sebou růst další stovky procent. Neboť nyní zisky důlního koncernu rostou, krize brazilské vlády a brazilského hospodářství se polepšuje, brazilský real posiluje a prioritní akcie Vale byla kleslá na 1/17, tedy musí zpátky nahoru. Kmenová akcie Vale byla kleslá na 1/14. Myslím, že prioritní akcie Vale se prodává v Německu trochu častěji a ve větším množství. Však když by někdo chtěl koncern převzít, kupoval by jen kmenové akcie s právem hlasovat. Na vrcholu 2010/2011 nebyla akcie Vale předražená a přesto klesla do února 2016 na 1/14 až 1/17 v euro. Také proto, že brazilský real klesl na 1/2 proti euro 2011-2016. Z toho plyne, že takhle volatilní akcie z takhle riskantní rozvojové země jako Brazílie není vhodná na 50 let pro dividendy. Taková akcie se hodí držet snad jen 2 roky, až do okamžiku, kdy se bude zdát z grafu, že trend rostoucí je u konce.
Dnešní zprávy z Vale anglicky a německy :idea: http://www.finanznachrichten.de/nachric ... ferred.htm
Přílohy
Vale-prefered.jpg
Ladislav 1.
Diskutér
Uživatelský avatar

Předchozí stránkaDalší stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků