1 Opakovanie z prednášky

1.1 Základné pojmy

  • Čo je biely šum?
  • Čo je autokorelačná funkcia?

1.2 Vygenerujeme dáta

Vygenerujeme dáta - ide o biely šum posunutý o konštantu, takže má nulové autokorelácie.

N <- 250        # pocet dat
set.seed(12345) # aby sme mali rovnake vysledky
x <- rnorm(N, mean = 10, sd = 1) # nezavisle N(10, 1)

Zobrazte priebeh vygenerovaných dát

1.3 Testovanie nulovosti autokorelácií - každej samostatne

Zobrazte odhadnutú autokorelačnú funkciu:

Otázky:

  • Akú hypotézu vieme pomocou tohto výstupu testovať pre každú autokoreláciu?

  • Kedy sa táto nulová hypotéza zamieta?

  • Čo dostávame v našom prípade?

1.4 Testovanie nulovosti autokorelácií - Ljung-Boxov test

Testujte Ljung-Boxovym testom hypotézu, že autokorelácie rádu 1, 2, 3 sú súčasne nulové.

## 
##  Box-Ljung test
## 
## data:  x
## X-squared = 0.93263, df = 3, p-value = 0.8175

Otázky:

  • Ako sa vypočíta testovacia štatistika?

  • Aké je pravdepodobnostné rozdelenie štatistiky za platnosti nulovej hypotézy?

  • Pre aké hodnoty štatistiky sa hypotéza zamieta?

  • Ako sa vypočíta p-hodnota?

  • Čo dostávame v našom prípade?

V cykle vypocítajte p-hodnoty zodpovedajúce testovaniu hypotézy, že prvých \(k\) autokorelácií je súcasne nulových. Výsledok znázornite graficky, zobrazte získané p hodnoty a hranicu 0.05.

Oplatí sa nastaviť y-ovú os na interval (0, 1), aby bol skript univerzálny pre všetky dáta, aby sa vždy (aj pri vysokých p hodnotách) dala vidieť vyznačená hodnota 0.05, s ktorou p hodnoty porovnávame.

2 Analýza výnosov akcií

Pomocou knižnice quantmod načítame priamo do R-ka ceny akcií a zistíme, či sú korelované alebo nie.

2.1 Načítanie dát o cenách akcií pomocou quantmod

Načítajte (ak treba, aj nainštalujte) knižnicu quantmod.

library(quantmod)

Na získanie cien akcií sa použije funkcia getSymbols, napríklad:

getSymbols("EBAY", from = "2019-01-01", to = "2019-12-31", auto.assign = TRUE)
## 'getSymbols' currently uses auto.assign=TRUE by default, but will
## use auto.assign=FALSE in 0.5-0. You will still be able to use
## 'loadSymbols' to automatically load data. getOption("getSymbols.env")
## and getOption("getSymbols.auto.assign") will still be checked for
## alternate defaults.
## 
## This message is shown once per session and may be disabled by setting 
## options("getSymbols.warning4.0"=FALSE). See ?getSymbols for details.
## [1] "EBAY"

Pozrime sa, ako vyzerajú naše dáta, ktoré sú uložené v premennej EBAY, zobrazíme ich začiatok:

head(EBAY)
##            EBAY.Open EBAY.High EBAY.Low EBAY.Close EBAY.Volume
## 2019-01-02     27.65     28.96    27.56      28.85    11190300
## 2019-01-03     28.63     28.82    28.28      28.32    10803900
## 2019-01-04     28.60     29.08    28.33      28.97    14593700
## 2019-01-07     28.96     29.65    28.93      29.47    13419400
## 2019-01-08     29.74     30.08    29.40      30.00     8179700
## 2019-01-09     29.99     30.40    29.74      30.29    10607500
##            EBAY.Adjusted
## 2019-01-02      28.10551
## 2019-01-03      27.58919
## 2019-01-04      28.22241
## 2019-01-07      28.70951
## 2019-01-08      29.22583
## 2019-01-09      29.50835

2.2 Grafy pomocou quantmod

Napríklad:

chartSeries(EBAY)

Skúste aj:

chartSeries(EBAY, subset="2019-01::2019-03") # od januara do marca

EBAY.mesacne <- to.monthly(EBAY)  # mesacne data
EBAY.mesacne                      # vypiseme
chartSeries(EBAY.mesacne)         # graf
##          EBAY.Open EBAY.High EBAY.Low EBAY.Close EBAY.Volume EBAY.Adjusted
## jan 2019     27.65     34.75    27.56      33.65   343616600      32.78165
## feb 2019     33.75     38.02    33.63      37.15   210230900      36.32666
## mar 2019     38.36     39.14    35.51      37.14   252316300      36.31688
## apr 2019     37.41     38.80    35.44      38.75   211328500      37.89120
## máj 2019     38.78     38.94    35.59      35.93   176656800      35.27049
## jún 2019     35.85     40.55    35.45      39.50   194738300      38.77495
## júl 2019     39.97     42.00    38.93      41.19   176600700      40.43393
## aug 2019     41.36     41.99    38.54      40.29   147930100      39.68753
## sep 2019     40.05     41.41    38.10      38.98   138279000      38.39713
## okt 2019     38.99     39.47    35.13      35.25   161549500      34.72290
## nov 2019     35.50     36.53    34.52      35.52   148552500      35.12603
## dec 2019     35.45     36.52    34.46      35.80   156143800      35.40293

2.3 Výnosy akcií

Z týchto dát EBAY budeme potrebovať posledný stĺpec (EBAY.Adjusted), z ktorého vypočítame výnosy. Budeme pracovať zo spojitými výnosmi, teda denné výnosy sa budú počítať ako logaritmus podielu cien v dvoch po sebe idúcich dňoch. Ekvivalentne:

ceny <- EBAY$EBAY.Adjusted
vynosy <- diff(log(ceny))

Priebeh výnosov:

chartSeries(vynosy, theme="white")

2.4 Testovanie autokorelácií výnosov akcií

Zistite, či sú výnosy firmy EBAY nekorelované. Použite výberovú autokorelačnú funkciu a Ljung-Boxov test.

3 Nepovinné dodatky

3.1 Quantmod

Knižnica quantmod má veľa rôznych funkcií, môžete sa o nich dočítať na https://www.quantmod.com/

Napríklad ak poznáte Moving Average Convergence/Divergence Oscillator (MACD) (http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:moving_average_convergence_divergence_macd), dá sa získať aj v R-ku. Použijeme už načítané dáta, ktoré sú uložené v premennej EBAY:

chartSeries(EBAY)

addMACD()

3.2 R markdown

R markdown bol použitý aj na vytvorenie tejto stránky priamo v R-ku, takisto na vytvorenie slajdov k prednáške.