I denne labben skal vi se litt nærmere på finanskrisen i USA, der den verdensomspennende økonomiske krisen ble utløst. Vi skal også lære noen mer avanserte teknikker for data-behandling.
Først, trenger vi noen pakker som vi har sett før:
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(reshape2)
En bra kilde for finansielle data i USA er St. Louis Federal Reserve sin økonomisk data webside: FRED: Federal Reserve Economic Data.
En mulighet er å finne en data-serie man er interessert i på websiden, laste den ned til datamaskinen, og da laste den inn til R ved å bruke data_series <- read.csv(“homefolder/data_series.csv”).
Finanskrisen i USA ble utløst av en fall i boligpriser. Så, først vil vi finne data på boligpriser. Dataene som er mest brukt er en indeks av priser i de største byene. Indeksen ble laget av to akademikere: case-shiller indeks.
Jeg har lastet ned dataene i forkant, så vi kan bare importere dataene fra kurs-webside:
case_shiller <- read.csv("https://jmaurit.github.io/anvendt_macro/data/case_shiller.csv")
Vi kan begynne med å formattere variablene til henholdsvis date og numerisk
str(case_shiller)
## 'data.frame': 209 obs. of 2 variables:
## $ date : Factor w/ 209 levels "2000-01-01","2000-02-01",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ case_shiller: num 101 102 103 104 105 ...
case_shiller$date <- as.Date(case_shiller$date)
case_shiller$case_shiller <- as.numeric(case_shiller$case_shiller)
Og plotte:
ggplot(case_shiller, aes(x=date, y=case_shiller)) +
geom_line()
Hva kan man se fra denne figuren?
Når begynte boligprisene å falle?
Hvorfor begynte boligprisene å falle?
Hvor langt tid tok det før prisene hadde nådd bunnen? Hvorfor tok det så mye tid?
La oss se på noen andre data serier om lønn, forbruk og sparing. Dette kan også finnes på FRED, men jeg har kombinert de til en dataframe og vi kan laste det ned fra kurswebsiden.
fed_DF <- read.csv("https://jmaurit.github.io/anvendt_macro/data/fed_DF.csv")
fed_DF["date"] <- as.Date(fed_DF$date)
str(fed_DF)
## 'data.frame': 32 obs. of 4 variables:
## $ date : Date, format: "1984-01-01" "1985-01-01" ...
## $ median.wages : int 48720 49631 51388 52032 52432 53367 52684 51145 50725 50478 ...
## $ personal.saving: num 9.4 9.7 8 9.1 7.5 8 7.4 8.7 8.8 8.3 ...
## $ debt.service : num 10.5 11.3 11.8 11.9 11.8 ...
Isteden for å ha forskjellige data frames, så skal vi sette de sammen ved å bruke merge.
fed_DF <- merge(fed_DF, case_shiller, by="date")
head(fed_DF)
## date median.wages personal.saving debt.service case_shiller
## 1 2000-01-01 57790 4.7 11.51895 100.59
## 2 2001-01-01 56531 4.0 12.19412 113.05
## 3 2002-01-01 55871 5.6 12.40500 121.36
## 4 2003-01-01 55823 4.5 12.36663 136.47
## 5 2004-01-01 55629 4.5 12.16459 152.62
## 6 2005-01-01 56224 3.2 12.52438 177.55
Deretter skal vi omforme de til lang formatt ved å bruke funksjonen melt fra reshape2 pakken.
fed_DF_long <- melt(fed_DF, id.vars = "date")
head(fed_DF_long)
## date variable value
## 1 2000-01-01 median.wages 57790
## 2 2001-01-01 median.wages 56531
## 3 2002-01-01 median.wages 55871
## 4 2003-01-01 median.wages 55823
## 5 2004-01-01 median.wages 55629
## 6 2005-01-01 median.wages 56224
Nå kan vi plotte alle figurene sammen ved å bruke facets. Facets er del-figurer - så man lager mange små plotter innenfor en figure. Vi bruker facet_grid fra ggplot2:
ggplot(fed_DF_long, aes(x=date, y=value)) +
geom_line() +
facet_wrap(~variable, ncol=1, scales="free")
Alternativt, hvis vi vil vise seriene i 2x2 formatt:
ggplot(fed_DF_long, aes(x=date, y=value)) +
geom_line() +
facet_wrap(~variable, ncol=2, scales="free")
Hvordan kan du tolke disse figurene? Kan du fortelle en historie som binder sammen disse seriene?
Hvilken betydning hadde personal savings og debt service i forkant av finanskrisen? Burde man ha vært bekymret over utviklingen av disse variablene?
Hvordan har median wages utviklet seg i USA? BNP er en god del høyere enn det var i 2000. Hvorfor har ikke median-lønn vokst?
Det som preget finanskrisen var at flere av de store bankene gikk konkurs, og det var stor frykt for at de andre bankene også skulle gå konkurs. Et viktig utfall var at finansinstitusjoner ville få bedre betalt for å låne ut penger, siden risikoen for at man kunne tape de pengene var høyere. Samtidig jobbet sentralbanken for å senke styringsrenten for å prøve å beskytte økonomien.
I finans bruker man ofte forskjellen mellom to ulike obligasjoner til å si noe om risiko i markedet. Dette kalles ofte for “spread”.
Jeg har lastet ned ulike renter/avkastninger fra FRED og kombinert de i en dataframe, som du kan laste ned fra kurswebsiden, https://jmaurit.github.io/anvendt_macro/data/yields.csv
yields <- read.csv("https://jmaurit.github.io/anvendt_macro/data/yields.csv")
str(yields)
## 'data.frame': 161 obs. of 6 variables:
## $ date : Factor w/ 161 levels "1997-01-01","1997-04-01",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ X10.Year.Treasury.Constant.Maturity.Rate : num NA 6.9 6.69 6.45 6.2 6.04 5.86 NA 5.62 5.67 ...
## $ X1.Year.Treasury.Constant.Maturity.Rate : num NA 6 5.89 5.64 5.52 5.44 5.56 NA 5.37 5.41 ...
## $ Moody.s.Seasoned.Aaa.Corporate.Bond.Yield. : num 7.42 7.73 7.58 7.14 7.22 7 6.76 6.61 6.69 6.69 ...
## $ Moody.s.Seasoned.Baa.Corporate.Bond.Yield. : num 8.09 8.34 8.2 7.75 7.82 7.57 7.32 7.19 7.33 7.3 ...
## $ BofA.Merrill.Lynch.US.High.Yield.CCC.or.Below.Option.Adjusted.Spread.: num NA 6.59 6.8 6.68 6.35 5.72 7.05 NA 6.89 7.11 ...
Først, må vi gjøre om date variablen til date formatt. Vi kan deretter forkorte og forenkle variable-navnene. Sist må vi gjøre om dataframen til “long” formatt ved bruk av melt fra reshape2
yields$date <- as.Date(yields$date)
colnames(yields) <- c("date", "10yr_treasury", "1yr_treasury", "AAA", "BAA", "Junk")
yields_long <- melt(yields, id="date")
Vi kan bruke ggplot til å plotte datasettet:
ggplot(yields_long, aes(x=date, y=value, color=variable)) +
geom_line()
## Warning: Removed 3 rows containing missing values (geom_path).
Avkastningen på en 10-årig treasury er ofte sett som “risk free rate (RFR)”. Dette er på grunn av at det er sett som nærmest umulig at USA misligholder på sin gjeld. Vi kan da bruke “spread” mellom RFR og de andre avkastningene til å gi en ide om Markedsrisikooppfattelsen.
yields["spread_Junk"] <- yields["Junk"] - yields["10yr_treasury"]
yields["spread_AAA"] <- yields["AAA"] - yields["10yr_treasury"]
Vi kan filtrer ut disse spreads og da plotte dem:
spreads <- yields[c("date", "spread_AAA", "spread_Junk")]
spreads_long <- melt(spreads, id="date")
ggplot(spreads_long, aes(x=date, y=value, color=variable)) +
geom_line()
## Warning: Removed 2 rows containing missing values (geom_path).
Det vi ser er at i forkant av krisen hadde spreaden på junk blitt veldig lite: kanskje en varsel? I etterkant gikk spreaden raskt opp. Markedet vurderte selkskap med dårlig betalingsevne som ekstra risikofylt i denne perioden. Det some er kanskje mer interessant var at spreaden på AAA obligasjoner også økte. Det vil si at markedet så en økt risiko for at noen av de største og mest stabile selskap, GE, Goldman Sachs, osv, ikke kunne betale sin gjeld.