Introduction

The goal of this file is to gain a better understanding of the NAIC’s stochastic scenario generator under a variety of interest rate environments, with the hopes that a better understanding of the generator will assist in reducing Stochastic Reserve runtime.

The first step in doing so was to download the scenario generator from the website below: https://www.actuary.org/content/economic-scenario-generators

After downloading the generator and reviewing the FAQ’s, four sets of scenarios were generated. One scenario was under the interest rate environment as of 12/31, one was with rates shocked down 300bps (with a 1 bp floor), and one was with rates shocked MRP 300 bps. The shocked scenarios also contained shocked mean reversion parameters. Finally, a forth scenario was generated - this had baseline rates, but the mean reversion strength parameter was doubled.

These scenarios were generated. The scenario generator creates 10,000 scenarios, with projected interest rates for 360 months. The generator only creates treasury rates; corporate or other asset spreads must be added by a qualified actuary.

Preliminary analysis was conducted as follows.

Search “Subset” to skip to the subset analysis

Read in Data for 10 year treasury; under current interest rate environment, +300bps, -300bps, and the MRP strength scenario.

Base10YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_10y format.csv")
Base10YrCST2 <- Base10YrCST
Base10YrCST <- melt(Base10YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")
Base10YrCSTsubset <- Base10YrCST[1:3610,]


Up10YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_10y format.csv")
Up10YrCST2 <- Up10YrCST
Up10YrCST <- melt(Up10YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")
Up10YrCSTsubset <- Up10YrCST[1:3610,]


Dn10YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - dn300 - 10K/UST_10y format.csv")
Dn10YrCST2 <- Dn10YrCST
Dn10YrCST <- melt(Dn10YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")
Dn10YrCSTsubset <- Dn10YrCST[1:3610,]

# MRP has mean reversion speed set to 0.01 to 0.00509
MRP10YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_10y format.csv")
MRP10YrCST2 <- MRP10YrCST
MRP10YrCST <- melt(MRP10YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")
MRP10YrCSTsubset <- MRP10YrCST[1:3610,]

Preliminary data exploration

summary(Base10YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00783 0.01933 0.02418 0.02615 0.03063 0.19796
summary(Dn10YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.01090 0.01219 0.01299 0.01419 0.08657
summary(Up10YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00813 0.04053 0.04866 0.05270 0.06028 0.21801
summary(MRP10YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00794 0.02185 0.02675 0.02785 0.03239 0.15526
sd(Base10YrCST[,3])
## [1] 0.009711092
sd(Dn10YrCST[,3])
## [1] 0.00326597
sd(Up10YrCST[,3])
## [1] 0.01938166
sd(MRP10YrCST[,3])
## [1] 0.008455064

Data exploration by scenario

This is slightly more complex than the analysis above - I took the average and standard deviation of the 10 year CST rates in each scenarios, then averaged those numbers across all 10,000 scenarios. The goal was to learn how much one scenario varied from another.

SummaryBase10YrCST <- Base10YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base Summary")
## [1] "Base Summary"
summary(SummaryBase10YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01339   Min.   :0.001565  
##  1st Qu.:0.02214   1st Qu.:0.004429  
##  Median :0.02533   Median :0.006054  
##  Mean   :0.02615   Mean   :0.006931  
##  3rd Qu.:0.02921   3rd Qu.:0.008440  
##  Max.   :0.06999   Max.   :0.050614
SummaryDn10YrCST <- Dn10YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Down 300bps Summary")
## [1] "Down 300bps Summary"
summary(SummaryDn10YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01026   Min.   :0.000849  
##  1st Qu.:0.01174   1st Qu.:0.001618  
##  Median :0.01255   Median :0.002093  
##  Mean   :0.01299   Mean   :0.002428  
##  3rd Qu.:0.01376   3rd Qu.:0.002839  
##  Max.   :0.03111   Max.   :0.021529
SummaryUp10YrCST <- Up10YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up 300bps Summary")
## [1] "Up 300bps Summary"
summary(SummaryUp10YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02537   Min.   :0.003060  
##  1st Qu.:0.04367   1st Qu.:0.007729  
##  Median :0.05058   Median :0.010453  
##  Mean   :0.05270   Mean   :0.012500  
##  3rd Qu.:0.05907   3rd Qu.:0.014846  
##  Max.   :0.14088   Max.   :0.055564
SummaryMRP10YrCST <- MRP10YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("MRP Speed doubled Summary")
## [1] "MRP Speed doubled Summary"
summary(SummaryMRP10YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01652   Min.   :0.001811  
##  1st Qu.:0.02486   1st Qu.:0.004890  
##  Median :0.02741   Median :0.006225  
##  Mean   :0.02785   Mean   :0.006782  
##  3rd Qu.:0.03027   3rd Qu.:0.008026  
##  Max.   :0.05645   Max.   :0.037872

A few random scenarios

The goal of these plots is to visualize some of the variance (or lack therof) found above. I set the y axis manually to show scale

p <-ggplot(Base10YrCSTsubset, aes(x=Month, y=Interest_Rate))+
    geom_line(aes(color=Scenario), size=0.2) +
   xlab("Month") + #ylab("Interest Rate") +
  scale_y_continuous(name="Interest Rate", labels = scales::percent, limits = c(0, 0.15)) +
    ggtitle("Int Rates By Scen & Month, Curr Environment") +
  theme(legend.position = "none") 

ggplotly(p)
q <-ggplot(Up10YrCSTsubset, aes(x=Month, y=Interest_Rate))+
    geom_line(aes(color=Scenario), size=0.2) +
   xlab("Month") + #ylab("Interest Rate") +
  scale_y_continuous(name="Interest Rate", labels = scales::percent, limits = c(0,0.15)) +
    ggtitle("+300bps Environment") +
  theme(legend.position = "none") 
  

ggplotly(q)
r <-ggplot(Dn10YrCSTsubset, aes(x=Month, y=Interest_Rate))+
    geom_line(aes(color=Scenario), size=0.2) +
   xlab("Month") + #ylab("Interest Rate") +
  scale_y_continuous(name="Interest Rate", labels = scales::percent, limits = c(0, 0.15)) +
    ggtitle("-300bps Environment") +
  theme(legend.position = "none")

ggplotly(r)
s <-ggplot(MRP10YrCSTsubset, aes(x=Month, y=Interest_Rate))+
    geom_line(aes(color=Scenario), size=0.2) +
   xlab("Month") + #ylab("Interest Rate") +
  scale_y_continuous(name="Interest Rate", labels = scales::percent, limits = c(0, 0.15)) +
    ggtitle("MRP Speed increasing") +
  theme(legend.position = "none")

ggplotly(s)

Map Interest rate curve

First, import data.

Base3mCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_3m format.csv")
Base3mCST <- melt(Base3mCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base6mCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_6m format.csv")
Base6mCST <- melt(Base6mCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base1YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_1Y format.csv")
Base1YrCST <- melt(Base1YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base2YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_2Y format.csv")
Base2YrCST <- melt(Base2YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base3YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_3Y format.csv")
Base3YrCST <- melt(Base3YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base5YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_5Y format.csv")
Base5YrCST <- melt(Base5YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base7YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_7Y format.csv")
Base7YrCST <- melt(Base7YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")
#Already imported 10
Base20YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_20Y format.csv")
Base20YrCST <- melt(Base20YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base30YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 10K/UST_30Y format.csv")
Base30YrCST <- melt(Base30YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Then, create data frame

xaxis <-matrix(c(0.25, 0.5, 1, 2, 3, 5, 7, 10, 20, 30))
colnames(xaxis) <- c('Tenor')
xaxis = as.data.frame(xaxis)
x<-1
month1 <-matrix(c(x, x, x, x, x, x, x, x, x, x))
colnames(month1) <- c('Month')
month1 = as.data.frame(month1)

# https://www.statology.org/create-table-in-r/
Scen1Month1Curve <-matrix(c(Base3mCST[1,3],
                           Base6mCST[1,3],
                           Base1YrCST[1,3],
                           Base2YrCST[1,3],
                           Base3YrCST[1,3],
                           Base5YrCST[1,3],
                           Base7YrCST[1,3],
                           Base10YrCST[1,3],
                           Base20YrCST[1,3],
                           Base30YrCST[1,3]))
colnames(Scen1Month1Curve) <- c('Rate')
rownames(Scen1Month1Curve) <- c('3Mo',
                                '6Mo',
                                '1Yr',
                                '2Yr',
                                '3Yr',
                                '5Yr',
                                '7Yr',
                                '10Yr',
                                '20Yr',
                                '30Yr')

Scen1Month1Curve = as.data.frame(Scen1Month1Curve)
Scen1Month1Curve <- cbind.data.frame(month1,Scen1Month1Curve,xaxis)
x = 360
month360 <-matrix(c(x, x, x, x, x, x, x, x, x, x))
colnames(month360) <- c('Month')
month360 = as.data.frame(month360)
Scen1Month360Curve <-matrix(c(Base3mCST[x,3],
                           Base6mCST[x,3],
                           Base1YrCST[x,3],
                           Base2YrCST[x,3],
                           Base3YrCST[x,3],
                           Base5YrCST[x,3],
                           Base7YrCST[x,3],
                           Base10YrCST[x,3],
                           Base20YrCST[x,3],
                           Base30YrCST[x,3]))
colnames(Scen1Month360Curve) <- c('Rate')
Scen1Month360Curve <- cbind.data.frame(month360,Scen1Month360Curve,xaxis)
Combo <- rbind(Scen1Month1Curve, Scen1Month360Curve)

Finally, visualize Baseline Scenario 1 Months 1 & 360 - curve shape

s <-ggplot(Combo, aes(x=Tenor, y=Rate))+
      geom_line(aes(color=Month), size=0.2) +
   xlab("Tenor") + 
   scale_y_continuous(name="Interest Rate", labels = scales::percent, limits = c(0, 0.04)) +
   ggtitle("Scenario 1 Interest Rate Curves, Current Environment") +
    theme(legend.position = "none")
ggplotly(s)

I find it interesting that the curve is flattening.

Now do the same for the mean reversion parameter speed doubled; read in data first

MRP3mCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_3m format.csv")
MRP3mCST <- melt(MRP3mCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

MRP6mCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_6m format.csv")
MRP6mCST <- melt(MRP6mCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

MRP1YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_1Y format.csv")
MRP1YrCST <- melt(MRP1YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

MRP2YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_2Y format.csv")
MRP2YrCST <- melt(MRP2YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

MRP3YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_3Y format.csv")
MRP3YrCST <- melt(MRP3YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

MRP5YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_5Y format.csv")
MRP5YrCST <- melt(MRP5YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

MRP7YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_7Y format.csv")
MRP7YrCST <- melt(MRP7YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")
#Already imported 10
MRP20YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_20Y format.csv")
MRP20YrCST <- melt(MRP20YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

MRP30YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - MRP/UST_30Y format.csv")
MRP30YrCST <- melt(MRP30YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Then create data frame

MRPScen1Month1Curve <-matrix(c(MRP3mCST[1,3],
                           MRP6mCST[1,3],
                           MRP1YrCST[1,3],
                           MRP2YrCST[1,3],
                           MRP3YrCST[1,3],
                           MRP5YrCST[1,3],
                           MRP7YrCST[1,3],
                           MRP10YrCST[1,3],
                           MRP20YrCST[1,3],
                           MRP30YrCST[1,3]))
colnames(MRPScen1Month1Curve) <- c('Rate')
rownames(MRPScen1Month1Curve) <- c('3Mo',
                                '6Mo',
                                '1Yr',
                                '2Yr',
                                '3Yr',
                                '5Yr',
                                '7Yr',
                                '10Yr',
                                '20Yr',
                                '30Yr')

MRPScen1Month1Curve = as.data.frame(MRPScen1Month1Curve)
MRPScen1Month1Curve <- cbind.data.frame(month1,MRPScen1Month1Curve,xaxis)

MRPScen1Month360Curve <-matrix(c(MRP3mCST[x,3],
                           MRP6mCST[x,3],
                           MRP1YrCST[x,3],
                           MRP2YrCST[x,3],
                           MRP3YrCST[x,3],
                           MRP5YrCST[x,3],
                           MRP7YrCST[x,3],
                           MRP10YrCST[x,3],
                           MRP20YrCST[x,3],
                           MRP30YrCST[x,3]))
colnames(MRPScen1Month360Curve) <- c('Rate')
MRPScen1Month360Curve <- cbind.data.frame(month360,MRPScen1Month360Curve,xaxis)
MRPCombo <- rbind(MRPScen1Month1Curve, MRPScen1Month360Curve)

Visualize MRP Scenario 1 Months 1 & 360 - curve shape

t <-ggplot(MRPCombo, aes(x=Tenor, y=Rate))+
      geom_line(aes(color=Month), size=0.2) +
   xlab("Tenor") + 
   scale_y_continuous(name="Interest Rate", labels = scales::percent, limits = c(0, 0.1)) +
   ggtitle("Scenario 1 Interest Rate Curves, MRP strength increasing") +
    theme(legend.position = "none")
ggplotly(t)

Now do the same for + 300; read in data first

Up3mCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_3m format.csv")
Up3mCST <- melt(Up3mCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up6mCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_6m format.csv")
Up6mCST <- melt(Up6mCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up1YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_1Y format.csv")
Up1YrCST <- melt(Up1YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up2YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_2Y format.csv")
Up2YrCST <- melt(Up2YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_3Y format.csv")
Up3YrCST <- melt(Up3YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up5YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_5Y format.csv")
Up5YrCST <- melt(Up5YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up7YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_7Y format.csv")
Up7YrCST <- melt(Up7YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")
#Already imported 10
Up20YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_20Y format.csv")
Up20YrCST <- melt(Up20YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30YrCST <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 10K/UST_30Y format.csv")
Up30YrCST <- melt(Up30YrCST,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Then create data frame

UpScen1Month1Curve <-matrix(c(Up3mCST[1,3],
                           Up6mCST[1,3],
                           Up1YrCST[1,3],
                           Up2YrCST[1,3],
                           Up3YrCST[1,3],
                           Up5YrCST[1,3],
                           Up7YrCST[1,3],
                           Up10YrCST[1,3],
                           Up20YrCST[1,3],
                           Up30YrCST[1,3]))
colnames(UpScen1Month1Curve) <- c('Rate')
rownames(UpScen1Month1Curve) <- c('3Mo',
                                '6Mo',
                                '1Yr',
                                '2Yr',
                                '3Yr',
                                '5Yr',
                                '7Yr',
                                '10Yr',
                                '20Yr',
                                '30Yr')

UpScen1Month1Curve = as.data.frame(UpScen1Month1Curve)
UpScen1Month1Curve <- cbind.data.frame(month1,UpScen1Month1Curve,xaxis)

UpScen1Month360Curve <-matrix(c(Up3mCST[x,3],
                           Up6mCST[x,3],
                           Up1YrCST[x,3],
                           Up2YrCST[x,3],
                           Up3YrCST[x,3],
                           Up5YrCST[x,3],
                           Up7YrCST[x,3],
                           Up10YrCST[x,3],
                           Up20YrCST[x,3],
                           Up30YrCST[x,3]))
colnames(UpScen1Month360Curve) <- c('Rate')
UpScen1Month360Curve <- cbind.data.frame(month360,UpScen1Month360Curve,xaxis)
UpCombo <- rbind(UpScen1Month1Curve, UpScen1Month360Curve)

Visualize +300bps Scenario 1 Months 1 & 360 - curve shape

t <-ggplot(UpCombo, aes(x=Tenor, y=Rate))+
      geom_line(aes(color=Month), size=0.2) +
   xlab("Tenor") + 
   scale_y_continuous(name="Interest Rate", labels = scales::percent, limits = c(0, 0.1)) +
   ggtitle("Scenario 1 Interest Rate Curves, +300 Environment") +
    theme(legend.position = "none")
ggplotly(t)

This +300 chart is very interesting; I wasn’t expecting the rate curve to flatten out even more. After seeing this, I decided to analyze the “flatness” of each each scenario. This particular scenario could be a fluke. However, if it was not a fluke and the variance of each +300 scenario is that low, it could tell us not to bother with many scenarios in “up” scenarios of CFT. I should probably come up with a statistical test to tell us it is indeed “flat”…need to think that through.

Avg and standard deviations for each tenor, across all months

summary(Up3mCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02678 0.03772 0.04250 0.05272 0.29259
summary(Up6mCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02772 0.03842 0.04315 0.05314 0.28679
summary(Up1YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02940 0.03969 0.04434 0.05393 0.27627
summary(Up2YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00226 0.03214 0.04180 0.04632 0.05527 0.25886
summary(Up3YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00395 0.03423 0.04345 0.04785 0.05637 0.24611
summary(Up5YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00620 0.03712 0.04578 0.05002 0.05803 0.22920
summary(Up7YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00720 0.03892 0.04728 0.05142 0.05917 0.22237
summary(Up10YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00813 0.04053 0.04866 0.05270 0.06028 0.21801
summary(Up20YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00935 0.04262 0.05065 0.05447 0.06185 0.21218
summary(Up30YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00943 0.04329 0.05124 0.05505 0.06242 0.21184
sd(Up3mCST[,3])
## [1] 0.02412551
sd(Up6mCST[,3])
## [1] 0.02372688
sd(Up1YrCST[,3])
## [1] 0.02302754
sd(Up2YrCST[,3])
## [1] 0.0219464
sd(Up3YrCST[,3])
## [1] 0.02118878
sd(Up5YrCST[,3])
## [1] 0.02026286
sd(Up7YrCST[,3])
## [1] 0.0197639
sd(Up10YrCST[,3])
## [1] 0.01938166
sd(Up20YrCST[,3])
## [1] 0.01897378
sd(Up30YrCST[,3])
## [1] 0.01887676

Mins and Mean’s follow the patterns I expect, and imply the flatness doesn’t persist for all scenarios/projection periods. However, the max’s are wild! They imply there are inverted yield curves in the scenarios. To be sure, let’s look further.

Checking for inversion

Create a new variable - 30yr minus 3m.

UpScenInversion <- Up30YrCST
UpScenInversion$Delta <- Up30YrCST[,3] - Up3mCST[,3]
print("Summary of inversion across all up scenarios, projection months")
## [1] "Summary of inversion across all up scenarios, projection months"
summary(UpScenInversion[,4]) #confirms inversion
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.11690  0.00530  0.01285  0.01255  0.02009  0.12067
sd(UpScenInversion[,4])
## [1] 0.01229981
InversionByScen <-Up3mCST[1,]
looper <-c(1:10000)
for (val in looper)(
InversionByScen[val,3] <- Up30YrCST[361*val,3] - Up3mCST[361*val - 360,3])
print("Summary of inversion by end of each scenario")
## [1] "Summary of inversion by end of each scenario"
summary(InversionByScen[,3])
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.01683  0.01224  0.02309  0.02770  0.03771  0.15884
print("Count of up scenarios ending with an inverted yield curve")
## [1] "Count of up scenarios ending with an inverted yield curve"
sum(InversionByScen[,3] < 0 )
## [1] 446

The min is negative 11bps, meaning there’s quite a bit of inversion.

Looking at beginning, ending values in each scenario

Create a new variable - month 361 - 1

Up3mCSTDeltas <- Up3mCST[1,]
looper <-c(1:10000)
for (val in looper)(
Up3mCSTDeltas[val,3] <- Up3mCST[361*val,3] - Up3mCST[361*val - 360,3])

Up6mCSTDeltas <- Up6mCST[1,]
for (val in looper)(
Up6mCSTDeltas[val,3] <- Up6mCST[361*val,3] - Up6mCST[361*val - 360,3])

Up1YrCSTDeltas <- Up1YrCST[1,]
for (val in looper)(
Up1YrCSTDeltas[val,3] <- Up1YrCST[361*val,3] - Up1YrCST[361*val - 360,3])

Up2YrCSTDeltas <- Up2YrCST[1,]
for (val in looper)(
Up2YrCSTDeltas[val,3] <- Up2YrCST[361*val,3] - Up2YrCST[361*val - 360,3])

Up3YrCSTDeltas <- Up3YrCST[1,]
for (val in looper)(
Up3YrCSTDeltas[val,3] <- Up3YrCST[361*val,3] - Up3YrCST[361*val - 360,3])

Up5YrCSTDeltas <- Up5YrCST[1,]
for (val in looper)(
Up5YrCSTDeltas[val,3] <- Up5YrCST[361*val,3] - Up5YrCST[361*val - 360,3])

Up7YrCSTDeltas <- Up7YrCST[1,]
for (val in looper)(
Up7YrCSTDeltas[val,3] <- Up7YrCST[361*val,3] - Up7YrCST[361*val - 360,3])

Up10YrCSTDeltas <- Up10YrCST[1,]
for (val in looper)(
Up10YrCSTDeltas[val,3] <- Up10YrCST[361*val,3] - Up10YrCST[361*val - 360,3])

Up20YrCSTDeltas <- Up20YrCST[1,]
for (val in looper)(
Up20YrCSTDeltas[val,3] <- Up20YrCST[361*val,3] - Up20YrCST[361*val - 360,3])

Up30YrCSTDeltas <- Up30YrCST[1,]
for (val in looper)(
Up30YrCSTDeltas[val,3] <- Up30YrCST[361*val,3] - Up30YrCST[361*val - 360,3])

Taking avg and standard deviation for each

summary(Up3mCSTDeltas[,3])
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.030500 -0.003403  0.009790  0.015409  0.027310  0.205150
sd(Up3mCSTDeltas[,3])
## [1] 0.02778782
summary(Up6mCSTDeltas[,3])
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.03180 -0.00385  0.00916  0.01475  0.02652  0.20078
sd(Up6mCSTDeltas[,3])
## [1] 0.02739338
summary(Up1YrCSTDeltas[,3])
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.033800 -0.004180  0.008355  0.013905  0.025442  0.193230
sd(Up1YrCSTDeltas[,3])
## [1] 0.02670031
summary(Up2YrCSTDeltas[,3])
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.033460 -0.004953  0.006950  0.012429  0.023390  0.180640
sd(Up2YrCSTDeltas[,3])
## [1] 0.02563798
summary(Up3YrCSTDeltas[,3])
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.033000 -0.005452  0.006185  0.011530  0.022110  0.171070
sd(Up3YrCSTDeltas[,3])
## [1] 0.02490018
summary(Up5YrCSTDeltas[,3])
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.032720 -0.005542  0.005650  0.010754  0.021010  0.159220
sd(Up5YrCSTDeltas[,3])
## [1] 0.02400803
summary(Up7YrCSTDeltas[,3])
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.03275 -0.00556  0.00532  0.01033  0.02032  0.15398
sd(Up7YrCSTDeltas[,3])
## [1] 0.02353472
summary(Up10YrCSTDeltas[,3])
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.03264 -0.00488  0.00596  0.01080  0.02077  0.14999
sd(Up10YrCSTDeltas[,3])
## [1] 0.02317303
summary(Up20YrCSTDeltas[,3])
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.035940 -0.007162  0.003645  0.008307  0.018142  0.141520
sd(Up20YrCSTDeltas[,3])
## [1] 0.02281227
summary(Up30YrCSTDeltas[,3])
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.035230 -0.006160  0.004690  0.009297  0.019310  0.140440
sd(Up30YrCSTDeltas[,3])
## [1] 0.02272164

There are implications here for our reinvestment assumption.

Statistical tests

## 
##  Shapiro-Wilk normality test
## 
## data:  Base10YrCST2$X1
## W = 0.95593, p-value = 6.222e-09
## 
##  Shapiro-Wilk normality test
## 
## data:  Up10YrCST2$X1
## W = 0.90554, p-value = 3.222e-14
## 
##  Shapiro-Wilk normality test
## 
## data:  Dn10YrCST2$X1
## W = 0.87221, p-value < 2.2e-16
## 
##  Shapiro-Wilk normality test
## 
## data:  MRP10YrCST2$X1
## W = 0.96745, p-value = 3.25e-07

Subset analysis

Next, I will evaluate the subsets. Do subsets chose widest range of scenarios? The scenarios with the greatest variance? We’ll find out

Read in the subsets

#50 SCENARIOS
Base3mCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_3m format.csv")
Base3mCST50 <- melt(Base3mCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base6mCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_6m format.csv")
Base6mCST50 <- melt(Base6mCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base1YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_1Y format.csv")
Base1YrCST50 <- melt(Base1YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base2YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_2Y format.csv")
Base2YrCST50 <- melt(Base2YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base3YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_3Y format.csv")
Base3YrCST50 <- melt(Base3YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base5YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_5Y format.csv")
Base5YrCST50 <- melt(Base5YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base7YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_7Y format.csv")
Base7YrCST50 <- melt(Base7YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base10YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_10Y format.csv")
Base10YrCST50 <- melt(Base10YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base20YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_20Y format.csv")
Base20YrCST50 <- melt(Base20YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base30YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 50/UST_30Y format.csv")
Base30YrCST50 <- melt(Base30YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

#200 SCENARIOS
Base3mCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_3m format.csv")
Base3mCST200 <- melt(Base3mCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base6mCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_6m format.csv")
Base6mCST200 <- melt(Base6mCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base1YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_1Y format.csv")
Base1YrCST200 <- melt(Base1YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base2YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_2Y format.csv")
Base2YrCST200 <- melt(Base2YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base3YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_3Y format.csv")
Base3YrCST200 <- melt(Base3YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base5YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_5Y format.csv")
Base5YrCST200 <- melt(Base5YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base7YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_7Y format.csv")
Base7YrCST200 <- melt(Base7YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base10YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_10Y format.csv")
Base10YrCST200 <- melt(Base10YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base20YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_20Y format.csv")
Base20YrCST200 <- melt(Base20YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base30YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 200/UST_30Y format.csv")
Base30YrCST200 <- melt(Base30YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

#500 SCENARIOS
Base3mCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_3m format.csv")
Base3mCST500 <- melt(Base3mCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base6mCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_6m format.csv")
Base6mCST500 <- melt(Base6mCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base1YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_1Y format.csv")
Base1YrCST500 <- melt(Base1YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base2YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_2Y format.csv")
Base2YrCST500 <- melt(Base2YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base3YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_3Y format.csv")
Base3YrCST500 <- melt(Base3YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base5YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_5Y format.csv")
Base5YrCST500 <- melt(Base5YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base7YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_7Y format.csv")
Base7YrCST500 <- melt(Base7YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base10YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_10Y format.csv")
Base10YrCST500 <- melt(Base10YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base20YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_20Y format.csv")
Base20YrCST500 <- melt(Base20YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base30YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 500/UST_30Y format.csv")
Base30YrCST500 <- melt(Base30YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

#1000 SCENARIOS
Base3mCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_3m format.csv")
Base3mCST1K <- melt(Base3mCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base6mCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_6m format.csv")
Base6mCST1K <- melt(Base6mCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base1YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_1Y format.csv")
Base1YrCST1K <- melt(Base1YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base2YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_2Y format.csv")
Base2YrCST1K <- melt(Base2YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base3YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_3Y format.csv")
Base3YrCST1K <- melt(Base3YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base5YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_5Y format.csv")
Base5YrCST1K <- melt(Base5YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base7YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_7Y format.csv")
Base7YrCST1K <- melt(Base7YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base10YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_10Y format.csv")
Base10YrCST1K <- melt(Base10YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base20YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_20Y format.csv")
Base20YrCST1K <- melt(Base20YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Base30YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output - base - 1k/UST_30Y format.csv")
Base30YrCST1K <- melt(Base30YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Preliminary data exploration

3 MONTH

summary(Base3mCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.00891 0.01496 0.01663 0.02195 0.11006
summary(Base3mCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.00894 0.01478 0.01690 0.02215 0.15239
summary(Base3mCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.00917 0.01491 0.01660 0.02211 0.12250
summary(Base3mCST1K[,3])
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.000100 0.009208 0.015120 0.017117 0.022490 0.152390
summary(Base3mCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.00925 0.01516 0.01707 0.02254 0.23294
sd(Base3mCST50[,3])
## [1] 0.01120638
sd(Base3mCST200[,3])
## [1] 0.01201254
sd(Base3mCST500[,3])
## [1] 0.01073654
sd(Base3mCST1K[,3])
## [1] 0.01171852
sd(Base3mCST[,3])
## [1] 0.01149101

6 MONTH

summary(Base6mCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.00964 0.01555 0.01721 0.02240 0.10946
summary(Base6mCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.00964 0.01534 0.01748 0.02264 0.15102
summary(Base6mCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.00987 0.01549 0.01719 0.02259 0.12089
summary(Base6mCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.00991 0.01570 0.01769 0.02296 0.15102
summary(Base6mCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.00995 0.01573 0.01765 0.02301 0.23070
sd(Base6mCST50[,3])
## [1] 0.01103445
sd(Base6mCST200[,3])
## [1] 0.01184157
sd(Base6mCST500[,3])
## [1] 0.01058885
sd(Base6mCST1K[,3])
## [1] 0.01155267
sd(Base6mCST[,3])
## [1] 0.01132557

1 YEAR

summary(Base1YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.01092 0.01664 0.01829 0.02324 0.10838
summary(Base1YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.01093 0.01639 0.01854 0.02353 0.14853
summary(Base1YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.01111 0.01654 0.01826 0.02347 0.11797
summary(Base1YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.01115 0.01674 0.01874 0.02382 0.14853
summary(Base1YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.01119 0.01678 0.01870 0.02388 0.22663
sd(Base1YrCST50[,3])
## [1] 0.01072423
sd(Base1YrCST200[,3])
## [1] 0.01153138
sd(Base1YrCST500[,3])
## [1] 0.01032158
sd(Base1YrCST1K[,3])
## [1] 0.01125412
sd(Base1YrCST[,3])
## [1] 0.0110272

2 YEAR

summary(Base2YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00191 0.01297 0.01840 0.02009 0.02468 0.10659
summary(Base2YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00212 0.01299 0.01812 0.02032 0.02496 0.14441
summary(Base2YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00210 0.01313 0.01829 0.02007 0.02497 0.11314
summary(Base2YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00193 0.01316 0.01848 0.02051 0.02529 0.14441
summary(Base2YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00191 0.01320 0.01852 0.02046 0.02536 0.21990
sd(Base2YrCST50[,3])
## [1] 0.01024176
sd(Base2YrCST200[,3])
## [1] 0.01103698
sd(Base2YrCST500[,3])
## [1] 0.009909645
sd(Base2YrCST1K[,3])
## [1] 0.01078506
sd(Base2YrCST[,3])
## [1] 0.01055833

3 YEAR

summary(Base3YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00333 0.01456 0.01981 0.02149 0.02592 0.10519
summary(Base3YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00370 0.01453 0.01951 0.02171 0.02617 0.14121
summary(Base3YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00366 0.01468 0.01962 0.02147 0.02619 0.10937
summary(Base3YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00336 0.01470 0.01984 0.02188 0.02647 0.14128
summary(Base3YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00333 0.01473 0.01988 0.02183 0.02655 0.21465
sd(Base3YrCST50[,3])
## [1] 0.009926014
sd(Base3YrCST200[,3])
## [1] 0.01071172
sd(Base3YrCST500[,3])
## [1] 0.00965588
sd(Base3YrCST1K[,3])
## [1] 0.01048161
sd(Base3YrCST[,3])
## [1] 0.01025495

5 YEAR

summary(Base5YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00533 0.01670 0.02181 0.02346 0.02770 0.10321
summary(Base5YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00594 0.01669 0.02147 0.02366 0.02793 0.13748
summary(Base5YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00587 0.01682 0.02153 0.02344 0.02798 0.10696
summary(Base5YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00539 0.01680 0.02178 0.02382 0.02824 0.13766
summary(Base5YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00533 0.01683 0.02180 0.02376 0.02832 0.20721
sd(Base5YrCST50[,3])
## [1] 0.009581108
sd(Base5YrCST200[,3])
## [1] 0.01035245
sd(Base5YrCST500[,3])
## [1] 0.009408112
sd(Base5YrCST1K[,3])
## [1] 0.0101562
sd(Base5YrCST[,3])
## [1] 0.009929715

7 YEAR

summary(Base7YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00663 0.01799 0.02310 0.02473 0.02893 0.10194
summary(Base7YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00738 0.01800 0.02275 0.02492 0.02914 0.13623
summary(Base7YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00724 0.01814 0.02276 0.02472 0.02917 0.10653
summary(Base7YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00669 0.01812 0.02303 0.02506 0.02943 0.13623
summary(Base7YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00663 0.01814 0.02304 0.02501 0.02950 0.20241
sd(Base7YrCST50[,3])
## [1] 0.009421731
sd(Base7YrCST200[,3])
## [1] 0.01018327
sd(Base7YrCST500[,3])
## [1] 0.009316044
sd(Base7YrCST1K[,3])
## [1] 0.01001025
sd(Base7YrCST[,3])
## [1] 0.009783899

10 YEAR

summary(Base10YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00783 0.01920 0.02424 0.02589 0.03007 0.10075
summary(Base10YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00846 0.01919 0.02391 0.02608 0.03033 0.13508
summary(Base10YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00842 0.01933 0.02391 0.02588 0.03028 0.10775
summary(Base10YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00791 0.01930 0.02418 0.02621 0.03057 0.13508
summary(Base10YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00783 0.01933 0.02418 0.02615 0.03063 0.19796
sd(Base10YrCST50[,3])
## [1] 0.009336052
sd(Base10YrCST200[,3])
## [1] 0.01008716
sd(Base10YrCST500[,3])
## [1] 0.009295321
sd(Base10YrCST1K[,3])
## [1] 0.009936925
sd(Base10YrCST[,3])
## [1] 0.009711092

20 YEAR

summary(Base20YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00944 0.02085 0.02582 0.02751 0.03166 0.09916
summary(Base20YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00976 0.02080 0.02551 0.02768 0.03190 0.13354
summary(Base20YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00999 0.02097 0.02547 0.02750 0.03182 0.10962
summary(Base20YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00935 0.02089 0.02569 0.02779 0.03215 0.13354
summary(Base20YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00924 0.02093 0.02570 0.02774 0.03219 0.19199
sd(Base20YrCST50[,3])
## [1] 0.009238567
sd(Base20YrCST200[,3])
## [1] 0.009978185
sd(Base20YrCST500[,3])
## [1] 0.009285902
sd(Base20YrCST1K[,3])
## [1] 0.009857219
sd(Base20YrCST[,3])
## [1] 0.00963105

30 YEAR

summary(Base30YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01000 0.02138 0.02636 0.02803 0.03220 0.09861
summary(Base30YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01021 0.02131 0.02605 0.02820 0.03245 0.13300
summary(Base30YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01027 0.02149 0.02601 0.02803 0.03235 0.11048
summary(Base30YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00949 0.02139 0.02621 0.02831 0.03268 0.13300
summary(Base30YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00931 0.02144 0.02622 0.02825 0.03273 0.19044
sd(Base30YrCST50[,3])
## [1] 0.009254922
sd(Base30YrCST200[,3])
## [1] 0.009988735
sd(Base30YrCST500[,3])
## [1] 0.009332931
sd(Base30YrCST1K[,3])
## [1] 0.00987888
sd(Base30YrCST[,3])
## [1] 0.009653262

Data exploration by scenario

Similar to what I did with the base 10K, up 300bps 10K, etc: I took the average and standard deviation of the 10 year CST rates in each scenarios, then averaged those numbers across all scenarios. The goal was to learn how much one subset varied from another.

SummaryBase3mCST50 <- Base3mCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 50 Scen Subset, 3M treas")
## [1] "Base, 50 Scen Subset, 3M treas"
summary(SummaryBase3mCST50[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.004875   Min.   :0.003971  
##  1st Qu.:0.012041   1st Qu.:0.006221  
##  Median :0.015643   Median :0.008114  
##  Mean   :0.016627   Mean   :0.008738  
##  3rd Qu.:0.019580   3rd Qu.:0.009692  
##  Max.   :0.034463   Max.   :0.025901
SummaryBase3mCST200 <- Base3mCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 200 Scen Subset, 3M treas")
## [1] "Base, 200 Scen Subset, 3M treas"
summary(SummaryBase3mCST200[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.007193   Min.   :0.003486  
##  1st Qu.:0.012408   1st Qu.:0.006182  
##  Median :0.015622   Median :0.007863  
##  Mean   :0.016901   Mean   :0.009327  
##  3rd Qu.:0.020571   3rd Qu.:0.010897  
##  Max.   :0.037195   Max.   :0.032147
SummaryBase3mCST500 <- Base3mCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 500 Scen Subset, 3M treas")
## [1] "Base, 500 Scen Subset, 3M treas"
summary(SummaryBase3mCST500[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.006908   Min.   :0.003606  
##  1st Qu.:0.012732   1st Qu.:0.006342  
##  Median :0.015981   Median :0.008035  
##  Mean   :0.016602   Mean   :0.008755  
##  3rd Qu.:0.019348   3rd Qu.:0.010211  
##  Max.   :0.044716   Max.   :0.033047
SummaryBase3mCST1K <- Base3mCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 1,000 Scen Subset, 3M treas")
## [1] "Base, 1,000 Scen Subset, 3M treas"
summary(SummaryBase3mCST1K[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.006829   Min.   :0.003079  
##  1st Qu.:0.012941   1st Qu.:0.006261  
##  Median :0.016155   Median :0.008143  
##  Mean   :0.017117   Mean   :0.009165  
##  3rd Qu.:0.020069   3rd Qu.:0.010780  
##  Max.   :0.047020   Max.   :0.040749
SummaryBase3mCST <- Base3mCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 10,000 Scens, 3M treas")
## [1] "Base, 10,000 Scens, 3M treas"
summary(SummaryBase3mCST[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.004875   Min.   :0.002621  
##  1st Qu.:0.012953   1st Qu.:0.006447  
##  Median :0.016087   Median :0.008141  
##  Mean   :0.017072   Mean   :0.009069  
##  3rd Qu.:0.020003   3rd Qu.:0.010647  
##  Max.   :0.060459   Max.   :0.056671
SummaryBase6mCST50 <- Base6mCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 50 Scen Subset, 6M treas")
## [1] "Base, 50 Scen Subset, 6M treas"
summary(SummaryBase6mCST50[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.005431   Min.   :0.003923  
##  1st Qu.:0.012804   1st Qu.:0.006076  
##  Median :0.016233   Median :0.007924  
##  Mean   :0.017215   Mean   :0.008550  
##  3rd Qu.:0.020282   3rd Qu.:0.009577  
##  Max.   :0.034880   Max.   :0.025683
SummaryBase6mCST200 <- Base6mCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 200 Scen Subset, 6M treas")
## [1] "Base, 200 Scen Subset, 6M treas"
summary(SummaryBase6mCST200[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.007826   Min.   :0.003380  
##  1st Qu.:0.012979   1st Qu.:0.006030  
##  Median :0.016235   Median :0.007776  
##  Mean   :0.017480   Mean   :0.009141  
##  3rd Qu.:0.021243   3rd Qu.:0.010723  
##  Max.   :0.037752   Max.   :0.032122
SummaryBase6mCST500 <- Base6mCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 500 Scen Subset, 6M treas")
## [1] "Base, 500 Scen Subset, 6M treas"
summary(SummaryBase6mCST500[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.007739   Min.   :0.003446  
##  1st Qu.:0.013250   1st Qu.:0.006201  
##  Median :0.016611   Median :0.007848  
##  Mean   :0.017188   Mean   :0.008582  
##  3rd Qu.:0.019940   3rd Qu.:0.010029  
##  Max.   :0.045225   Max.   :0.032914
SummaryBase6mCST1K <- Base6mCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 1,000 Scen Subset, 6M treas")
## [1] "Base, 1,000 Scen Subset, 6M treas"
summary(SummaryBase6mCST1K[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.007382   Min.   :0.003023  
##  1st Qu.:0.013451   1st Qu.:0.006076  
##  Median :0.016758   Median :0.007940  
##  Mean   :0.017691   Mean   :0.008981  
##  3rd Qu.:0.020626   3rd Qu.:0.010588  
##  Max.   :0.047544   Max.   :0.040200
SummaryBase6mCST <- Base6mCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 10,000 Scens, 6M treas")
## [1] "Base, 10,000 Scens, 6M treas"
summary(SummaryBase6mCST[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.005431   Min.   :0.002494  
##  1st Qu.:0.013527   1st Qu.:0.006290  
##  Median :0.016682   Median :0.007964  
##  Mean   :0.017646   Mean   :0.008887  
##  3rd Qu.:0.020566   3rd Qu.:0.010452  
##  Max.   :0.061046   Max.   :0.056216
SummaryBase1YrCST50 <- Base1YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 50 Scen Subset, 1Yr treas")
## [1] "Base, 50 Scen Subset, 1Yr treas"
summary(SummaryBase1YrCST50[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.006552   Min.   :0.003731  
##  1st Qu.:0.014245   1st Qu.:0.005743  
##  Median :0.017122   Median :0.007550  
##  Mean   :0.018292   Mean   :0.008209  
##  3rd Qu.:0.021494   3rd Qu.:0.009441  
##  Max.   :0.035629   Max.   :0.025284
SummaryBase1YrCST200 <- Base1YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 200 Scen Subset, 1Yr treas")
## [1] "Base, 200 Scen Subset, 1Yr treas"
summary(SummaryBase1YrCST200[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.009013   Min.   :0.003207  
##  1st Qu.:0.014070   1st Qu.:0.005729  
##  Median :0.017392   Median :0.007408  
##  Mean   :0.018542   Mean   :0.008798  
##  3rd Qu.:0.022570   3rd Qu.:0.010327  
##  Max.   :0.038757   Max.   :0.032093
SummaryBase1YrCST500 <- Base1YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 500 Scen Subset, 1Yr treas")
## [1] "Base, 500 Scen Subset, 1Yr treas"
summary(SummaryBase1YrCST500[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.008702   Min.   :0.003136  
##  1st Qu.:0.014433   1st Qu.:0.005892  
##  Median :0.017690   Median :0.007541  
##  Mean   :0.018265   Mean   :0.008262  
##  3rd Qu.:0.021117   3rd Qu.:0.009676  
##  Max.   :0.046178   Max.   :0.032657
SummaryBase1YrCST1K <- Base1YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 1,000 Scen Subset, 1Yr treas")
## [1] "Base, 1,000 Scen Subset, 1Yr treas"
summary(SummaryBase1YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.00845   Min.   :0.002854  
##  1st Qu.:0.01449   1st Qu.:0.005835  
##  Median :0.01786   Median :0.007579  
##  Mean   :0.01874   Mean   :0.008646  
##  3rd Qu.:0.02168   3rd Qu.:0.010228  
##  Max.   :0.04854   Max.   :0.039218
SummaryBase1YrCST <- Base1YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 10,000 Scens, 1Yr treas")
## [1] "Base, 10,000 Scens, 1Yr treas"
summary(SummaryBase1YrCST[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.006552   Min.   :0.002306  
##  1st Qu.:0.014609   1st Qu.:0.005982  
##  Median :0.017760   Median :0.007636  
##  Mean   :0.018698   Mean   :0.008553  
##  3rd Qu.:0.021615   3rd Qu.:0.010094  
##  Max.   :0.062114   Max.   :0.055415
SummaryBase3YrCST50 <- Base3YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 50 Scen Subset, 3Yr treas")
## [1] "Base, 50 Scen Subset, 3Yr treas"
summary(SummaryBase3YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01008   Min.   :0.003192  
##  1st Qu.:0.01811   1st Qu.:0.004775  
##  Median :0.02014   Median :0.006243  
##  Mean   :0.02149   Mean   :0.007314  
##  3rd Qu.:0.02451   3rd Qu.:0.009048  
##  Max.   :0.03783   Max.   :0.024225
SummaryBase3YrCST200 <- Base3YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 200 Scen Subset, 3Yr treas")
## [1] "Base, 200 Scen Subset, 3Yr treas"
summary(SummaryBase3YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01237   Min.   :0.002518  
##  1st Qu.:0.01726   1st Qu.:0.004938  
##  Median :0.02048   Median :0.006403  
##  Mean   :0.02171   Mean   :0.007850  
##  3rd Qu.:0.02524   3rd Qu.:0.009369  
##  Max.   :0.04171   Max.   :0.032107
SummaryBase3YrCST500 <- Base3YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 500 Scen Subset, 3Yr treas")
## [1] "Base, 500 Scen Subset, 3Yr treas"
summary(SummaryBase3YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01165   Min.   :0.002398  
##  1st Qu.:0.01759   1st Qu.:0.005052  
##  Median :0.02100   Median :0.006591  
##  Mean   :0.02147   Mean   :0.007401  
##  3rd Qu.:0.02422   3rd Qu.:0.008779  
##  Max.   :0.04912   Max.   :0.031901
SummaryBase3YrCST1K <- Base3YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 1,000 Scen Subset, 3Yr treas")
## [1] "Base, 1,000 Scen Subset, 3Yr treas"
summary(SummaryBase3YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01173   Min.   :0.002256  
##  1st Qu.:0.01796   1st Qu.:0.004950  
##  Median :0.02117   Median :0.006778  
##  Mean   :0.02188   Mean   :0.007739  
##  3rd Qu.:0.02485   3rd Qu.:0.009249  
##  Max.   :0.05157   Max.   :0.036389
SummaryBase3YrCST <- Base3YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 10,000 Scens, 3Yr treas")
## [1] "Base, 10,000 Scens, 3Yr treas"
summary(SummaryBase3YrCST[,2:3])
##   Avg_IntRate       Standard_Deviation
##  Min.   :0.009827   Min.   :0.001763  
##  1st Qu.:0.017809   1st Qu.:0.005132  
##  Median :0.020983   Median :0.006768  
##  Mean   :0.021832   Mean   :0.007650  
##  3rd Qu.:0.024739   3rd Qu.:0.009149  
##  Max.   :0.065255   Max.   :0.053212
SummaryBase5YrCST50 <- Base5YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 50 Scen Subset, 5Yr treas")
## [1] "Base, 50 Scen Subset, 5Yr treas"
summary(SummaryBase5YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01226   Min.   :0.003230  
##  1st Qu.:0.01989   1st Qu.:0.004567  
##  Median :0.02228   Median :0.005691  
##  Mean   :0.02346   Mean   :0.006924  
##  3rd Qu.:0.02669   3rd Qu.:0.008275  
##  Max.   :0.03919   Max.   :0.023680
SummaryBase5YrCST200 <- Base5YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 200 Scen Subset, 5Yr treas")
## [1] "Base, 200 Scen Subset, 5Yr treas"
summary(SummaryBase5YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01411   Min.   :0.002306  
##  1st Qu.:0.01932   1st Qu.:0.004643  
##  Median :0.02254   Median :0.005865  
##  Mean   :0.02366   Mean   :0.007406  
##  3rd Qu.:0.02721   3rd Qu.:0.008968  
##  Max.   :0.04378   Max.   :0.032199
SummaryBase5YrCST500 <- Base5YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 500 Scen Subset, 5Yr treas")
## [1] "Base, 500 Scen Subset, 5Yr treas"
summary(SummaryBase5YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01337   Min.   :0.001981  
##  1st Qu.:0.01948   1st Qu.:0.004627  
##  Median :0.02304   Median :0.006166  
##  Mean   :0.02344   Mean   :0.007020  
##  3rd Qu.:0.02628   3rd Qu.:0.008491  
##  Max.   :0.05093   Max.   :0.031597
SummaryBase5YrCST1K <- Base5YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 1,000 Scen Subset, 5Yr treas")
## [1] "Base, 1,000 Scen Subset, 5Yr treas"
summary(SummaryBase5YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01375   Min.   :0.002092  
##  1st Qu.:0.01988   1st Qu.:0.004616  
##  Median :0.02303   Median :0.006263  
##  Mean   :0.02382   Mean   :0.007330  
##  3rd Qu.:0.02684   3rd Qu.:0.008854  
##  Max.   :0.05344   Max.   :0.034700
SummaryBase5YrCST <- Base5YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 10,000 Scens, 5Yr treas")
## [1] "Base, 10,000 Scens, 5Yr treas"
summary(SummaryBase5YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01142   Min.   :0.001615  
##  1st Qu.:0.01977   1st Qu.:0.004724  
##  Median :0.02292   Median :0.006345  
##  Mean   :0.02376   Mean   :0.007240  
##  3rd Qu.:0.02672   3rd Qu.:0.008745  
##  Max.   :0.06719   Max.   :0.051981
SummaryBase7YrCST50 <- Base7YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 50 Scen Subset, 7Yr treas")
## [1] "Base, 50 Scen Subset, 7Yr treas"
summary(SummaryBase7YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01367   Min.   :0.003266  
##  1st Qu.:0.02102   1st Qu.:0.004454  
##  Median :0.02359   Median :0.005584  
##  Mean   :0.02473   Mean   :0.006745  
##  3rd Qu.:0.02810   3rd Qu.:0.008191  
##  Max.   :0.04006   Max.   :0.023371
SummaryBase7YrCST200 <- Base7YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 200 Scen Subset, 7Yr treas")
## [1] "Base, 200 Scen Subset, 7Yr treas"
summary(SummaryBase7YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01523   Min.   :0.002281  
##  1st Qu.:0.02076   1st Qu.:0.004438  
##  Median :0.02387   Median :0.005605  
##  Mean   :0.02492   Mean   :0.007183  
##  3rd Qu.:0.02851   3rd Qu.:0.008704  
##  Max.   :0.04521   Max.   :0.032288
SummaryBase7YrCST500 <- Base7YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 500 Scen Subset, 7Yr treas")
## [1] "Base, 500 Scen Subset, 7Yr treas"
summary(SummaryBase7YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01441   Min.   :0.001747  
##  1st Qu.:0.02071   1st Qu.:0.004395  
##  Median :0.02430   Median :0.006030  
##  Mean   :0.02472   Mean   :0.006842  
##  3rd Qu.:0.02776   3rd Qu.:0.008283  
##  Max.   :0.05210   Max.   :0.031464
SummaryBase7YrCST1K <- Base7YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 1,000 Scen Subset, 7Yr treas")
## [1] "Base, 1,000 Scen Subset, 7Yr treas"
summary(SummaryBase7YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01438   Min.   :0.002013  
##  1st Qu.:0.02106   1st Qu.:0.004483  
##  Median :0.02423   Median :0.006038  
##  Mean   :0.02506   Mean   :0.007133  
##  3rd Qu.:0.02808   3rd Qu.:0.008679  
##  Max.   :0.05464   Max.   :0.033635
SummaryBase7YrCST <- Base7YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 10,000 Scens, 7Yr treas")
## [1] "Base, 10,000 Scens, 7Yr treas"
summary(SummaryBase7YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01245   Min.   :0.001617  
##  1st Qu.:0.02100   1st Qu.:0.004532  
##  Median :0.02416   Median :0.006151  
##  Mean   :0.02501   Mean   :0.007042  
##  3rd Qu.:0.02798   3rd Qu.:0.008544  
##  Max.   :0.06863   Max.   :0.051243
SummaryBase10YrCST50 <- Base10YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 50 Scen Subset, 10Yr treas")
## [1] "Base, 50 Scen Subset, 10Yr treas"
summary(SummaryBase10YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01496   Min.   :0.002882  
##  1st Qu.:0.02205   1st Qu.:0.004373  
##  Median :0.02481   Median :0.005543  
##  Mean   :0.02589   Mean   :0.006654  
##  3rd Qu.:0.02925   3rd Qu.:0.008282  
##  Max.   :0.04094   Max.   :0.023133
SummaryBase10YrCST200 <- Base10YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 200 Scen Subset, 10Yr treas")
## [1] "Base, 200 Scen Subset, 10Yr treas"
summary(SummaryBase10YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01606   Min.   :0.002334  
##  1st Qu.:0.02194   1st Qu.:0.004300  
##  Median :0.02494   Median :0.005523  
##  Mean   :0.02608   Mean   :0.007047  
##  3rd Qu.:0.02959   3rd Qu.:0.008681  
##  Max.   :0.04652   Max.   :0.032406
SummaryBase10YrCST500 <- Base10YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 500 Scen Subset, 10Yr treas")
## [1] "Base, 500 Scen Subset, 10Yr treas"
summary(SummaryBase10YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01536   Min.   :0.001565  
##  1st Qu.:0.02176   1st Qu.:0.004307  
##  Median :0.02549   Median :0.005949  
##  Mean   :0.02588   Mean   :0.006751  
##  3rd Qu.:0.02889   3rd Qu.:0.008200  
##  Max.   :0.05317   Max.   :0.031405
SummaryBase10YrCST1K <- Base10YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 1,000 Scen Subset, 10Yr treas")
## [1] "Base, 1,000 Scen Subset, 10Yr treas"
summary(SummaryBase10YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01487   Min.   :0.001810  
##  1st Qu.:0.02218   1st Qu.:0.004430  
##  Median :0.02540   Median :0.005973  
##  Mean   :0.02621   Mean   :0.007023  
##  3rd Qu.:0.02923   3rd Qu.:0.008586  
##  Max.   :0.05574   Max.   :0.032679
SummaryBase10YrCST <- Base10YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 10,000 Scens, 10Yr treas")
## [1] "Base, 10,000 Scens, 10Yr treas"
summary(SummaryBase10YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01339   Min.   :0.001565  
##  1st Qu.:0.02214   1st Qu.:0.004429  
##  Median :0.02533   Median :0.006054  
##  Mean   :0.02615   Mean   :0.006931  
##  3rd Qu.:0.02921   3rd Qu.:0.008440  
##  Max.   :0.06999   Max.   :0.050614
SummaryBase20YrCST50 <- Base20YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 50 Scen Subset, 20Yr treas")
## [1] "Base, 50 Scen Subset, 20Yr treas"
summary(SummaryBase20YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01674   Min.   :0.002385  
##  1st Qu.:0.02349   1st Qu.:0.004294  
##  Median :0.02662   Median :0.005593  
##  Mean   :0.02751   Mean   :0.006538  
##  3rd Qu.:0.03100   3rd Qu.:0.007948  
##  Max.   :0.04217   Max.   :0.022800
SummaryBase20YrCST200 <- Base20YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 200 Scen Subset, 20Yr treas")
## [1] "Base, 200 Scen Subset, 20Yr treas"
summary(SummaryBase20YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01716   Min.   :0.002198  
##  1st Qu.:0.02351   1st Qu.:0.004047  
##  Median :0.02648   Median :0.005464  
##  Mean   :0.02768   Mean   :0.006872  
##  3rd Qu.:0.03097   3rd Qu.:0.008457  
##  Max.   :0.04833   Max.   :0.032540
SummaryBase20YrCST500 <- Base20YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 500 Scen Subset, 20Yr treas")
## [1] "Base, 500 Scen Subset, 20Yr treas"
summary(SummaryBase20YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01668   Min.   :0.001424  
##  1st Qu.:0.02341   1st Qu.:0.004228  
##  Median :0.02705   Median :0.005758  
##  Mean   :0.02750   Mean   :0.006635  
##  3rd Qu.:0.03048   3rd Qu.:0.008115  
##  Max.   :0.05465   Max.   :0.031325
SummaryBase20YrCST1K <- Base20YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 1,000 Scen Subset, 20Yr treas")
## [1] "Base, 1,000 Scen Subset, 20Yr treas"
summary(SummaryBase20YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01559   Min.   :0.001538  
##  1st Qu.:0.02381   1st Qu.:0.004302  
##  Median :0.02694   Median :0.005856  
##  Mean   :0.02779   Mean   :0.006880  
##  3rd Qu.:0.03093   3rd Qu.:0.008431  
##  Max.   :0.05727   Max.   :0.032540
SummaryBase20YrCST <- Base20YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 10,000 Scens, 20Yr treas")
## [1] "Base, 10,000 Scens, 20Yr treas"
summary(SummaryBase20YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01470   Min.   :0.001424  
##  1st Qu.:0.02372   1st Qu.:0.004290  
##  Median :0.02695   Median :0.005911  
##  Mean   :0.02774   Mean   :0.006787  
##  3rd Qu.:0.03088   3rd Qu.:0.008299  
##  Max.   :0.07188   Max.   :0.049775
SummaryBase30YrCST50 <- Base30YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 50 Scen Subset, 30Yr treas")
## [1] "Base, 50 Scen Subset, 30Yr treas"
summary(SummaryBase30YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01732   Min.   :0.002363  
##  1st Qu.:0.02401   1st Qu.:0.004398  
##  Median :0.02718   Median :0.005647  
##  Mean   :0.02803   Mean   :0.006564  
##  3rd Qu.:0.03166   3rd Qu.:0.007868  
##  Max.   :0.04256   Max.   :0.022734
SummaryBase30YrCST200 <- Base30YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 200 Scen Subset, 30Yr treas")
## [1] "Base, 200 Scen Subset, 30Yr treas"
summary(SummaryBase30YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01751   Min.   :0.002121  
##  1st Qu.:0.02415   1st Qu.:0.004063  
##  Median :0.02695   Median :0.005514  
##  Mean   :0.02820   Mean   :0.006876  
##  3rd Qu.:0.03139   3rd Qu.:0.008414  
##  Max.   :0.04893   Max.   :0.032624
SummaryBase30YrCST500 <- Base30YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 500 Scen Subset, 30Yr treas")
## [1] "Base, 500 Scen Subset, 30Yr treas"
summary(SummaryBase30YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01711   Min.   :0.001459  
##  1st Qu.:0.02397   1st Qu.:0.004248  
##  Median :0.02754   Median :0.005764  
##  Mean   :0.02803   Mean   :0.006661  
##  3rd Qu.:0.03103   3rd Qu.:0.008183  
##  Max.   :0.05514   Max.   :0.031355
SummaryBase30YrCST1K <- Base30YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 1,000 Scen Subset, 30Yr treas")
## [1] "Base, 1,000 Scen Subset, 30Yr treas"
summary(SummaryBase30YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01580   Min.   :0.001479  
##  1st Qu.:0.02426   1st Qu.:0.004334  
##  Median :0.02745   Median :0.005871  
##  Mean   :0.02831   Mean   :0.006896  
##  3rd Qu.:0.03145   3rd Qu.:0.008375  
##  Max.   :0.05777   Max.   :0.032624
SummaryBase30YrCST <- Base30YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Base, 10,000 Scens, 30Yr treas")
## [1] "Base, 10,000 Scens, 30Yr treas"
summary(SummaryBase30YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01512   Min.   :0.001445  
##  1st Qu.:0.02422   1st Qu.:0.004300  
##  Median :0.02747   Median :0.005935  
##  Mean   :0.02825   Mean   :0.006802  
##  3rd Qu.:0.03143   3rd Qu.:0.008301  
##  Max.   :0.07250   Max.   :0.049539

Summarize this data in a table, this will be used for data vis as well

Standard_Dev <- data.frame (Scen_Number  = c(50,200,500,1000,10000),
                  Three_Month = c(mean(SummaryBase3mCST50$Standard_Deviation),
                            mean(SummaryBase3mCST200$Standard_Deviation),
                            mean(SummaryBase3mCST500$Standard_Deviation),
                            mean(SummaryBase3mCST1K$Standard_Deviation),
                            mean(SummaryBase3mCST$Standard_Deviation)),
                  Six_Month = c(mean(SummaryBase6mCST50$Standard_Deviation),
                            mean(SummaryBase6mCST200$Standard_Deviation),
                            mean(SummaryBase6mCST500$Standard_Deviation),
                            mean(SummaryBase6mCST1K$Standard_Deviation),
                            mean(SummaryBase6mCST$Standard_Deviation)),
                  One_Year = c(mean(SummaryBase1YrCST50$Standard_Deviation),
                            mean(SummaryBase1YrCST200$Standard_Deviation),
                            mean(SummaryBase1YrCST500$Standard_Deviation),
                            mean(SummaryBase1YrCST1K$Standard_Deviation),
                            mean(SummaryBase1YrCST$Standard_Deviation)),
                  Three_Year = c(mean(SummaryBase3YrCST50$Standard_Deviation),
                            mean(SummaryBase3YrCST200$Standard_Deviation),
                            mean(SummaryBase3YrCST500$Standard_Deviation),
                            mean(SummaryBase3YrCST1K$Standard_Deviation),
                            mean(SummaryBase3YrCST$Standard_Deviation)),
                Five_Year = c(mean(SummaryBase5YrCST50$Standard_Deviation),
                            mean(SummaryBase5YrCST200$Standard_Deviation),
                            mean(SummaryBase5YrCST500$Standard_Deviation),
                            mean(SummaryBase5YrCST1K$Standard_Deviation),
                            mean(SummaryBase5YrCST$Standard_Deviation)),
                  Seven_Year = c(mean(SummaryBase7YrCST50$Standard_Deviation),
                            mean(SummaryBase7YrCST200$Standard_Deviation),
                            mean(SummaryBase7YrCST500$Standard_Deviation),
                            mean(SummaryBase7YrCST1K$Standard_Deviation),
                            mean(SummaryBase7YrCST$Standard_Deviation)),
                  Ten_Year = c(mean(SummaryBase10YrCST50$Standard_Deviation),
                            mean(SummaryBase10YrCST200$Standard_Deviation),
                            mean(SummaryBase10YrCST500$Standard_Deviation),
                            mean(SummaryBase10YrCST1K$Standard_Deviation),
                            mean(SummaryBase10YrCST$Standard_Deviation)),
                  Twenty_Year = c(mean(SummaryBase20YrCST50$Standard_Deviation),
                            mean(SummaryBase20YrCST200$Standard_Deviation),
                            mean(SummaryBase20YrCST500$Standard_Deviation),
                            mean(SummaryBase20YrCST1K$Standard_Deviation),
                            mean(SummaryBase20YrCST$Standard_Deviation)),
                  Thirty_Year = c(mean(SummaryBase30YrCST50$Standard_Deviation),
                            mean(SummaryBase30YrCST200$Standard_Deviation),
                            mean(SummaryBase30YrCST500$Standard_Deviation),
                            mean(SummaryBase30YrCST1K$Standard_Deviation),
                            mean(SummaryBase30YrCST$Standard_Deviation))
                  )

rownames(Standard_Dev) <-  c("Subset_50", "Subset_200", "Subset_500", "Subset_1K", "Full_10K")
print(Standard_Dev)
##            Scen_Number Three_Month   Six_Month    One_Year  Three_Year
## Subset_50           50 0.008738384 0.008550223 0.008208543 0.007314196
## Subset_200         200 0.009326690 0.009140673 0.008797987 0.007850024
## Subset_500         500 0.008755326 0.008581767 0.008261953 0.007400687
## Subset_1K         1000 0.009164694 0.008980898 0.008645599 0.007739413
## Full_10K         10000 0.009069318 0.008886782 0.008553087 0.007649902
##              Five_Year  Seven_Year    Ten_Year Twenty_Year Thirty_Year
## Subset_50  0.006924215 0.006744652 0.006653851 0.006538498 0.006564084
## Subset_200 0.007405794 0.007182983 0.007047465 0.006872357 0.006875533
## Subset_500 0.007019686 0.006841645 0.006751168 0.006635059 0.006660638
## Subset_1K  0.007329994 0.007132758 0.007022959 0.006880453 0.006895892
## Full_10K   0.007240292 0.007042109 0.006931271 0.006786697 0.006801814
Standard_Dev_t <- t(Standard_Dev)
Standard_Dev_t <- as.data.frame(Standard_Dev_t)
Standard_Dev_t$Tenor <- c(0,0.25, 0.5, 1, 3, 5, 7, 10, 20, 30)


Standard_Dev_plot <- melt(Standard_Dev_t,value.name = "Interest_Rate", id = "Tenor")
v <-ggplot(Standard_Dev_t )+
   # geom_line(aes(color="#ecfacf")) +
  geom_line(aes(x=Tenor, y=Subset_50,color="#ecfacf"))+
    geom_line(aes(x=Tenor, y=Subset_200,color="#7aefcb")) +
    geom_line(aes(x=Tenor, y=Subset_500,color="#efe3f2")) +
    geom_line(aes(x=Tenor, y=Subset_1K,color="#9892f1")) +
    geom_line(aes(x=Tenor, y=Full_10K,color="#ed92be")) +
    xlab("Tenor") + #ylab("Interest Rate") +
    scale_y_continuous(name="Standard Deviations", labels = scales::percent, limits = c(0.006,         0.01)) +
    ggtitle("Standard Deviations by Subset") +
    theme(legend.position = "none") 

ggplotly(v)

We’ve seen, pretty definitively, that there isn’t a huge difference in variance, min, max, or mean of the different sized scenario subsets in the current rate environment. We’ve also seen that more scenarios does not always imply more or less variance among the scenarios - the reulsts are mixed. Thus, if more scenarios does not always imply a broader range of scenarios tested, does the ALM really need to run more than 50 scenarios, ever?

We saw above that in an extremely low rate environment, even the 10k scenarios had very little variance. I will check the scenario subsets in a +300 environment to see if more scenarios may be necessary in such a case.

Scenario analysis, +300bp environment

First, read in the data.

#50 SCENARIOS
Up3003mCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_3m format.csv")
Up3003mCST50 <- melt(Up3003mCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3006mCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_6m format.csv")
Up3006mCST50 <- melt(Up3006mCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3001YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_1Y format.csv")
Up3001YrCST50 <- melt(Up3001YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3002YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_2Y format.csv")
Up3002YrCST50 <- melt(Up3002YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3003YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_3Y format.csv")
Up3003YrCST50 <- melt(Up3003YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3005YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_5Y format.csv")
Up3005YrCST50 <- melt(Up3005YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3007YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_7Y format.csv")
Up3007YrCST50 <- melt(Up3007YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30010YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_10Y format.csv")
Up30010YrCST50 <- melt(Up30010YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30020YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_20Y format.csv")
Up30020YrCST50 <- melt(Up30020YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30030YrCST50 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 50/UST_30Y format.csv")
Up30030YrCST50 <- melt(Up30030YrCST50,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

#200 SCENARIOS
Up3003mCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_3m format.csv")
Up3003mCST200 <- melt(Up3003mCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3006mCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_6m format.csv")
Up3006mCST200 <- melt(Up3006mCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3001YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_1Y format.csv")
Up3001YrCST200 <- melt(Up3001YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3002YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_2Y format.csv")
Up3002YrCST200 <- melt(Up3002YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3003YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_3Y format.csv")
Up3003YrCST200 <- melt(Up3003YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3005YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_5Y format.csv")
Up3005YrCST200 <- melt(Up3005YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3007YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_7Y format.csv")
Up3007YrCST200 <- melt(Up3007YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30010YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_10Y format.csv")
Up30010YrCST200 <- melt(Up30010YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30020YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_20Y format.csv")
Up30020YrCST200 <- melt(Up30020YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30030YrCST200 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 200/UST_30Y format.csv")
Up30030YrCST200 <- melt(Up30030YrCST200,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

#500 SCENARIOS
Up3003mCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_3m format.csv")
Up3003mCST500 <- melt(Up3003mCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3006mCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_6m format.csv")
Up3006mCST500 <- melt(Up3006mCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3001YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_1Y format.csv")
Up3001YrCST500 <- melt(Up3001YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3002YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_2Y format.csv")
Up3002YrCST500 <- melt(Up3002YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3003YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_3Y format.csv")
Up3003YrCST500 <- melt(Up3003YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3005YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_5Y format.csv")
Up3005YrCST500 <- melt(Up3005YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3007YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_7Y format.csv")
Up3007YrCST500 <- melt(Up3007YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30010YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_10Y format.csv")
Up30010YrCST500 <- melt(Up30010YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30020YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_20Y format.csv")
Up30020YrCST500 <- melt(Up30020YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30030YrCST500 <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 500/UST_30Y format.csv")
Up30030YrCST500 <- melt(Up30030YrCST500,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

#1000 SCENARIOS
Up3003mCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_3m format.csv")
Up3003mCST1K <- melt(Up3003mCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3006mCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_6m format.csv")
Up3006mCST1K <- melt(Up3006mCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3001YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_1Y format.csv")
Up3001YrCST1K <- melt(Up3001YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3002YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_2Y format.csv")
Up3002YrCST1K <- melt(Up3002YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3003YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_3Y format.csv")
Up3003YrCST1K <- melt(Up3003YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3005YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_5Y format.csv")
Up3005YrCST1K <- melt(Up3005YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up3007YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_7Y format.csv")
Up3007YrCST1K <- melt(Up3007YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30010YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_10Y format.csv")
Up30010YrCST1K <- melt(Up30010YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30020YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_20Y format.csv")
Up30020YrCST1K <- melt(Up30020YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Up30030YrCST1K <- read.csv("C:/Users/15733/Documents/Practicum II/Generator output +300 - 1k/UST_30Y format.csv")
Up30030YrCST1K <- melt(Up30030YrCST1K,value.name = "Interest_Rate",id.vars = "Month",variable.name = "Scenario")

Preliminary data exploration

3 MONTH

summary(Up3003mCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02631 0.03719 0.04154 0.05085 0.23940
summary(Up3003mCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02614 0.03700 0.04194 0.05166 0.26521
summary(Up3003mCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02656 0.03720 0.04108 0.05133 0.24624
summary(Up3003mCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02674 0.03770 0.04256 0.05274 0.26839
summary(Up3mCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02678 0.03772 0.04250 0.05272 0.29259
sd(Up3003mCST50[,3])
## [1] 0.02356171
sd(Up3003mCST200[,3])
## [1] 0.02464254
sd(Up3003mCST500[,3])
## [1] 0.02168439
sd(Up3003mCST1K[,3])
## [1] 0.02431562
sd(Up3mCST[,3])
## [1] 0.02412551

6 MONTH

summary(Up3006mCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02723 0.03786 0.04222 0.05126 0.23709
summary(Up3006mCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02709 0.03771 0.04261 0.05212 0.26206
summary(Up3006mCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02750 0.03791 0.04177 0.05176 0.24295
summary(Up3006mCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02769 0.03839 0.04322 0.05315 0.26347
summary(Up6mCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02772 0.03842 0.04315 0.05314 0.28679
sd(Up3006mCST50[,3])
## [1] 0.02317635
sd(Up3006mCST200[,3])
## [1] 0.02422649
sd(Up3006mCST500[,3])
## [1] 0.02132994
sd(Up3006mCST1K[,3])
## [1] 0.02391709
sd(Up6mCST[,3])
## [1] 0.02372688

1 YEAR

summary(Up3001YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00022 0.02904 0.03918 0.04345 0.05206 0.23290
summary(Up3001YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02880 0.03903 0.04382 0.05300 0.25634
summary(Up3001YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02918 0.03917 0.04301 0.05258 0.23697
summary(Up3001YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02935 0.03965 0.04441 0.05397 0.25634
summary(Up1YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00010 0.02940 0.03969 0.04434 0.05393 0.27627
sd(Up3001YrCST50[,3])
## [1] 0.02249916
sd(Up3001YrCST200[,3])
## [1] 0.02349274
sd(Up3001YrCST500[,3])
## [1] 0.02071239
sd(Up3001YrCST1K[,3])
## [1] 0.02321837
sd(Up1YrCST[,3])
## [1] 0.02302754

2 YEAR

summary(Up3002YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00380 0.03196 0.04126 0.04549 0.05348 0.22596
summary(Up3002YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00407 0.03156 0.04118 0.04584 0.05452 0.24688
summary(Up3002YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00426 0.03191 0.04129 0.04507 0.05398 0.22709
summary(Up3002YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00226 0.03209 0.04176 0.04638 0.05533 0.24688
summary(Up2YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00226 0.03214 0.04180 0.04632 0.05527 0.25886
sd(Up3002YrCST50[,3])
## [1] 0.02145806
sd(Up3002YrCST200[,3])
## [1] 0.02234622
sd(Up3002YrCST500[,3])
## [1] 0.01977881
sd(Up3002YrCST1K[,3])
## [1] 0.0221366
sd(Up2YrCST[,3])
## [1] 0.0219464

3 YEAR

summary(Up3003YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00549 0.03421 0.04288 0.04707 0.05458 0.22055
summary(Up3003YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00716 0.03366 0.04292 0.04740 0.05578 0.23949
summary(Up3003YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00733 0.03398 0.04295 0.04667 0.05515 0.21937
summary(Up3003YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00395 0.03418 0.04341 0.04792 0.05644 0.23949
summary(Up3YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00395 0.03423 0.04345 0.04785 0.05637 0.24611
sd(Up3003YrCST50[,3])
## [1] 0.02072693
sd(Up3003YrCST200[,3])
## [1] 0.02153615
sd(Up3003YrCST500[,3])
## [1] 0.0191457
sd(Up3003YrCST1K[,3])
## [1] 0.02137947
sd(Up3YrCST[,3])
## [1] 0.02118878

5 YEAR

summary(Up3005YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00788 0.03727 0.04513 0.04930 0.05624 0.21289
summary(Up3005YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01052 0.03655 0.04528 0.04961 0.05751 0.22905
summary(Up3005YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01156 0.03688 0.04526 0.04893 0.05685 0.20846
summary(Up3005YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00633 0.03707 0.04572 0.05009 0.05804 0.22905
summary(Up5YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00620 0.03712 0.04578 0.05002 0.05803 0.22920
sd(Up3005YrCST50[,3])
## [1] 0.0198301
sd(Up3005YrCST200[,3])
## [1] 0.02053438
sd(Up3005YrCST500[,3])
## [1] 0.01841033
sd(Up3005YrCST1K[,3])
## [1] 0.02045568
sd(Up5YrCST[,3])
## [1] 0.02026286

7 YEAR

summary(Up3007YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00886 0.03925 0.04657 0.05074 0.05730 0.20795
summary(Up3007YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01186 0.03841 0.04687 0.05104 0.05867 0.22230
summary(Up3007YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01370 0.03867 0.04677 0.05039 0.05807 0.20141
summary(Up3007YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00787 0.03888 0.04724 0.05149 0.05915 0.22230
summary(Up7YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00720 0.03892 0.04728 0.05142 0.05917 0.22237
sd(Up3007YrCST50[,3])
## [1] 0.01934429
sd(Up3007YrCST200[,3])
## [1] 0.0199862
sd(Up3007YrCST500[,3])
## [1] 0.01804309
sd(Up3007YrCST1K[,3])
## [1] 0.01995906
sd(Up7YrCST[,3])
## [1] 0.0197639

10 YEAR

summary(Up30010YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00966 0.04090 0.04788 0.05207 0.05837 0.20335
summary(Up30010YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01311 0.04003 0.04828 0.05234 0.05986 0.21603
summary(Up30010YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01496 0.04029 0.04817 0.05173 0.05920 0.19486
summary(Up30010YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00913 0.04050 0.04861 0.05277 0.06025 0.21603
summary(Up10YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00813 0.04053 0.04866 0.05270 0.06028 0.21801
sd(Up30010YrCST50[,3])
## [1] 0.01896936
sd(Up30010YrCST200[,3])
## [1] 0.01955812
sd(Up30010YrCST500[,3])
## [1] 0.01778811
sd(Up30010YrCST1K[,3])
## [1] 0.01957954
sd(Up10YrCST[,3])
## [1] 0.01938166

20 YEAR

summary(Up30020YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01074 0.04298 0.04990 0.05389 0.06022 0.19720
summary(Up30020YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01477 0.04212 0.05038 0.05415 0.06159 0.20764
summary(Up30020YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01659 0.04240 0.05021 0.05357 0.06075 0.18944
summary(Up30020YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00935 0.04258 0.05063 0.05454 0.06178 0.20764
summary(Up20YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00935 0.04262 0.05065 0.05447 0.06185 0.21218
sd(Up30020YrCST50[,3])
## [1] 0.01856665
sd(Up30020YrCST200[,3])
## [1] 0.01909228
sd(Up30020YrCST500[,3])
## [1] 0.01755828
sd(Up30020YrCST1K[,3])
## [1] 0.01917644
sd(Up20YrCST[,3])
## [1] 0.01897378

30 YEAR

summary(Up30030YrCST50[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01112 0.04368 0.05056 0.05449 0.06085 0.19508
summary(Up30030YrCST200[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01534 0.04282 0.05102 0.05474 0.06216 0.20474
summary(Up30030YrCST500[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01659 0.04308 0.05081 0.05418 0.06132 0.18906
summary(Up30030YrCST1K[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00943 0.04325 0.05124 0.05512 0.06233 0.20474
summary(Up30YrCST[,3])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00943 0.04329 0.05124 0.05505 0.06242 0.21184
sd(Up30030YrCST50[,3])
## [1] 0.01846816
sd(Up30030YrCST200[,3])
## [1] 0.0189748
sd(Up30030YrCST500[,3])
## [1] 0.01752297
sd(Up30030YrCST1K[,3])
## [1] 0.01908115
sd(Up30YrCST[,3])
## [1] 0.01887676

Data exploration by scenario

Similar to what I did with the base: I took the average and standard deviation of the 10 year CST rates in each scenarios, then averaged those numbers across all scenarios. The goal was to learn how much one subset varied from another.

SummaryUp3003mCST50 <- Up3003mCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 50 Scen Subset, 3M treas")
## [1] "Up300, 50 Scen Subset, 3M treas"
summary(SummaryUp3003mCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01173   Min.   :0.007057  
##  1st Qu.:0.03088   1st Qu.:0.011072  
##  Median :0.03869   Median :0.013970  
##  Mean   :0.04154   Mean   :0.016210  
##  3rd Qu.:0.04967   3rd Qu.:0.019324  
##  Max.   :0.09441   Max.   :0.052142
SummaryUp3003mCST200 <- Up3003mCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 200 Scen Subset, 3M treas")
## [1] "Up300, 200 Scen Subset, 3M treas"
summary(SummaryUp3003mCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01846   Min.   :0.006417  
##  1st Qu.:0.03145   1st Qu.:0.011449  
##  Median :0.04001   Median :0.015191  
##  Mean   :0.04194   Mean   :0.017722  
##  3rd Qu.:0.04895   3rd Qu.:0.020844  
##  Max.   :0.09044   Max.   :0.059068
SummaryUp3003mCST500 <- Up3003mCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 500 Scen Subset, 3M treas")
## [1] "Up300, 500 Scen Subset, 3M treas"
summary(SummaryUp3003mCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01784   Min.   :0.006375  
##  1st Qu.:0.03196   1st Qu.:0.011171  
##  Median :0.03961   Median :0.014425  
##  Mean   :0.04108   Mean   :0.016270  
##  3rd Qu.:0.04813   3rd Qu.:0.019197  
##  Max.   :0.09609   Max.   :0.062762
SummaryUp3003mCST1K <- Up3003mCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 1,000 Scen Subset, 3M treas")
## [1] "Up300, 1,000 Scen Subset, 3M treas"
summary(SummaryUp3003mCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01697   Min.   :0.005146  
##  1st Qu.:0.03212   1st Qu.:0.011590  
##  Median :0.04005   Median :0.015084  
##  Mean   :0.04256   Mean   :0.017395  
##  3rd Qu.:0.04944   3rd Qu.:0.020669  
##  Max.   :0.11145   Max.   :0.071048
SummaryUp3003mCST <- Up3mCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 10,000 Scens, 3M treas")
## [1] "Up300, 10,000 Scens, 3M treas"
summary(SummaryUp3003mCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01173   Min.   :0.004894  
##  1st Qu.:0.03226   1st Qu.:0.011580  
##  Median :0.03986   Median :0.014935  
##  Mean   :0.04250   Mean   :0.017200  
##  3rd Qu.:0.04954   3rd Qu.:0.020201  
##  Max.   :0.15776   Max.   :0.072567
SummaryUp3006mCST50 <- Up3006mCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 50 Scen Subset, 6M treas")
## [1] "Up300, 50 Scen Subset, 6M treas"
summary(SummaryUp3006mCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01259   Min.   :0.006866  
##  1st Qu.:0.03200   1st Qu.:0.010680  
##  Median :0.03926   Median :0.013644  
##  Mean   :0.04222   Mean   :0.015822  
##  3rd Qu.:0.05041   3rd Qu.:0.018929  
##  Max.   :0.09453   Max.   :0.051560
SummaryUp3006mCST200 <- Up3006mCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 200 Scen Subset, 6M treas")
## [1] "Up300, 200 Scen Subset, 6M treas"
summary(SummaryUp3006mCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01934   Min.   :0.006256  
##  1st Qu.:0.03212   1st Qu.:0.011107  
##  Median :0.04066   Median :0.014834  
##  Mean   :0.04261   Mean   :0.017313  
##  3rd Qu.:0.04976   3rd Qu.:0.020400  
##  Max.   :0.09097   Max.   :0.057830
SummaryUp3006mCST500 <- Up3006mCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 500 Scen Subset, 6M treas")
## [1] "Up300, 500 Scen Subset, 6M treas"
summary(SummaryUp3006mCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01847   Min.   :0.00625   
##  1st Qu.:0.03274   1st Qu.:0.01091   
##  Median :0.04035   Median :0.01408   
##  Mean   :0.04177   Mean   :0.01589   
##  3rd Qu.:0.04877   3rd Qu.:0.01878   
##  Max.   :0.09651   Max.   :0.06219
SummaryUp3006mCST1K <- Up3006mCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 1,000 Scen Subset, 6M treas")
## [1] "Up300, 1,000 Scen Subset, 6M treas"
summary(SummaryUp3006mCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01753   Min.   :0.00516   
##  1st Qu.:0.03287   1st Qu.:0.01124   
##  Median :0.04078   Median :0.01477   
##  Mean   :0.04322   Mean   :0.01699   
##  3rd Qu.:0.05011   3rd Qu.:0.02018   
##  Max.   :0.11168   Max.   :0.06975
SummaryUp3006mCST <- Up6mCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 10,000 Scens, 6M treas")
## [1] "Up300, 10,000 Scens, 6M treas"
summary(SummaryUp3006mCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01259   Min.   :0.004798  
##  1st Qu.:0.03303   1st Qu.:0.011247  
##  Median :0.04053   Median :0.014539  
##  Mean   :0.04315   Mean   :0.016800  
##  3rd Qu.:0.05016   3rd Qu.:0.019762  
##  Max.   :0.15668   Max.   :0.071086
SummaryUp3001YrCST50 <- Up3001YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 50 Scen Subset, 1Yr treas")
## [1] "Up300, 50 Scen Subset, 1Yr treas"
summary(SummaryUp3001YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01420   Min.   :0.006562  
##  1st Qu.:0.03384   1st Qu.:0.009996  
##  Median :0.04040   Median :0.013079  
##  Mean   :0.04345   Mean   :0.015142  
##  3rd Qu.:0.05154   3rd Qu.:0.018255  
##  Max.   :0.09475   Max.   :0.050531
SummaryUp3001YrCST200 <- Up3001YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 200 Scen Subset, 1Yr treas")
## [1] "Up300, 200 Scen Subset, 1Yr treas"
summary(SummaryUp3001YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02096   Min.   :0.005986  
##  1st Qu.:0.03347   1st Qu.:0.010481  
##  Median :0.04190   Median :0.014142  
##  Mean   :0.04382   Mean   :0.016590  
##  3rd Qu.:0.05114   3rd Qu.:0.019686  
##  Max.   :0.09191   Max.   :0.055598
SummaryUp3001YrCST500 <- Up3001YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 500 Scen Subset, 1Yr treas")
## [1] "Up300, 500 Scen Subset, 1Yr treas"
summary(SummaryUp3001YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01962   Min.   :0.005873  
##  1st Qu.:0.03402   1st Qu.:0.010372  
##  Median :0.04183   Median :0.013333  
##  Mean   :0.04301   Mean   :0.015231  
##  3rd Qu.:0.04955   3rd Qu.:0.018041  
##  Max.   :0.09728   Max.   :0.061185
SummaryUp3001YrCST1K <- Up3001YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 1,000 Scen Subset, 1Yr treas")
## [1] "Up300, 1,000 Scen Subset, 1Yr treas"
summary(SummaryUp3001YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01856   Min.   :0.004813  
##  1st Qu.:0.03426   1st Qu.:0.010634  
##  Median :0.04206   Median :0.014154  
##  Mean   :0.04441   Mean   :0.016283  
##  3rd Qu.:0.05124   3rd Qu.:0.019362  
##  Max.   :0.11208   Max.   :0.067397
SummaryUp3001YrCST <- Up1YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 10,000 Scens, 1Yr treas")
## [1] "Up300, 10,000 Scens, 1Yr treas"
summary(SummaryUp3001YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01420   Min.   :0.004688  
##  1st Qu.:0.03442   1st Qu.:0.010664  
##  Median :0.04179   Median :0.013863  
##  Mean   :0.04434   Mean   :0.016095  
##  3rd Qu.:0.05123   3rd Qu.:0.018949  
##  Max.   :0.15473   Max.   :0.068448
SummaryUp3003YrCST50 <- Up3003YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 50 Scen Subset, 3Yr treas")
## [1] "Up300, 50 Scen Subset, 3Yr treas"
summary(SummaryUp3003YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01895   Min.   :0.006030  
##  1st Qu.:0.03850   1st Qu.:0.008692  
##  Median :0.04427   Median :0.011032  
##  Mean   :0.04707   Mean   :0.013392  
##  3rd Qu.:0.05475   3rd Qu.:0.015837  
##  Max.   :0.09538   Max.   :0.047679
SummaryUp3003YrCST200 <- Up3003YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 200 Scen Subset, 3Yr treas")
## [1] "Up300, 200 Scen Subset, 3Yr treas"
summary(SummaryUp3003YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02490   Min.   :0.005351  
##  1st Qu.:0.03697   1st Qu.:0.009038  
##  Median :0.04482   Median :0.012276  
##  Mean   :0.04740   Mean   :0.014653  
##  3rd Qu.:0.05487   3rd Qu.:0.017597  
##  Max.   :0.09471   Max.   :0.049101
SummaryUp3003YrCST500 <- Up3003YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 500 Scen Subset, 3Yr treas")
## [1] "Up300, 500 Scen Subset, 3Yr treas"
summary(SummaryUp3003YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02299   Min.   :0.005107  
##  1st Qu.:0.03813   1st Qu.:0.009039  
##  Median :0.04550   Median :0.011838  
##  Mean   :0.04667   Mean   :0.013515  
##  3rd Qu.:0.05278   3rd Qu.:0.015923  
##  Max.   :0.09954   Max.   :0.058501
SummaryUp3003YrCST1K <- Up3003YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 1,000 Scen Subset, 3Yr treas")
## [1] "Up300, 1,000 Scen Subset, 3Yr treas"
summary(SummaryUp3003YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02198   Min.   :0.004166  
##  1st Qu.:0.03828   1st Qu.:0.009059  
##  Median :0.04563   Median :0.012381  
##  Mean   :0.04792   Mean   :0.014412  
##  3rd Qu.:0.05437   3rd Qu.:0.017417  
##  Max.   :0.11327   Max.   :0.060574
SummaryUp3003YrCST <- Up3YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 10,000 Scens, 3Yr treas")
## [1] "Up300, 10,000 Scens, 3Yr treas"
summary(SummaryUp3003YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.01895   Min.   :0.004087  
##  1st Qu.:0.03833   1st Qu.:0.009134  
##  Median :0.04554   Median :0.012067  
##  Mean   :0.04785   Mean   :0.014239  
##  3rd Qu.:0.05453   3rd Qu.:0.016869  
##  Max.   :0.14896   Max.   :0.061043
SummaryUp3005YrCST50 <- Up3005YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 50 Scen Subset, 5Yr treas")
## [1] "Up300, 50 Scen Subset, 5Yr treas"
summary(SummaryUp3005YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02189   Min.   :0.005333  
##  1st Qu.:0.04177   1st Qu.:0.007613  
##  Median :0.04692   Median :0.010090  
##  Mean   :0.04930   Mean   :0.012555  
##  3rd Qu.:0.05694   3rd Qu.:0.014681  
##  Max.   :0.09576   Max.   :0.046069
SummaryUp3005YrCST200 <- Up3005YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 200 Scen Subset, 5Yr treas")
## [1] "Up300, 200 Scen Subset, 5Yr treas"
summary(SummaryUp3005YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02730   Min.   :0.004912  
##  1st Qu.:0.03942   1st Qu.:0.008073  
##  Median :0.04721   Median :0.011270  
##  Mean   :0.04961   Mean   :0.013670  
##  3rd Qu.:0.05678   3rd Qu.:0.016440  
##  Max.   :0.09643   Max.   :0.045961
SummaryUp3005YrCST500 <- Up3005YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 500 Scen Subset, 5Yr treas")
## [1] "Up300, 500 Scen Subset, 5Yr treas"
summary(SummaryUp3005YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02506   Min.   :0.004788  
##  1st Qu.:0.04055   1st Qu.:0.008287  
##  Median :0.04770   Median :0.011043  
##  Mean   :0.04893   Mean   :0.012691  
##  3rd Qu.:0.05493   3rd Qu.:0.014973  
##  Max.   :0.10093   Max.   :0.057070
SummaryUp3005YrCST1K <- Up3005YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 1,000 Scen Subset, 5Yr treas")
## [1] "Up300, 1,000 Scen Subset, 5Yr treas"
summary(SummaryUp3005YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02409   Min.   :0.003878  
##  1st Qu.:0.04071   1st Qu.:0.008304  
##  Median :0.04795   Median :0.011418  
##  Mean   :0.05009   Mean   :0.013483  
##  3rd Qu.:0.05647   3rd Qu.:0.016187  
##  Max.   :0.11400   Max.   :0.056434
SummaryUp3005YrCST <- Up5YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 10,000 Scens, 5Yr treas")
## [1] "Up300, 10,000 Scens, 5Yr treas"
summary(SummaryUp3005YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02189   Min.   :0.003585  
##  1st Qu.:0.04073   1st Qu.:0.008397  
##  Median :0.04779   Median :0.011203  
##  Mean   :0.05002   Mean   :0.013320  
##  3rd Qu.:0.05652   3rd Qu.:0.015878  
##  Max.   :0.14537   Max.   :0.057070
SummaryUp3007YrCST50 <- Up3007YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 50 Scen Subset, 7Yr treas")
## [1] "Up300, 50 Scen Subset, 7Yr treas"
summary(SummaryUp3007YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02378   Min.   :0.004909  
##  1st Qu.:0.04319   1st Qu.:0.007293  
##  Median :0.04804   Median :0.010154  
##  Mean   :0.05074   Mean   :0.012139  
##  3rd Qu.:0.05814   3rd Qu.:0.014600  
##  Max.   :0.09600   Max.   :0.045096
SummaryUp3007YrCST200 <- Up3007YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 200 Scen Subset, 7Yr treas")
## [1] "Up300, 200 Scen Subset, 7Yr treas"
summary(SummaryUp3007YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02884   Min.   :0.004741  
##  1st Qu.:0.04114   1st Qu.:0.007688  
##  Median :0.04826   Median :0.010927  
##  Mean   :0.05104   Mean   :0.013145  
##  3rd Qu.:0.05784   3rd Qu.:0.015712  
##  Max.   :0.09754   Max.   :0.045733
SummaryUp3007YrCST500 <- Up3007YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 500 Scen Subset, 7Yr treas")
## [1] "Up300, 500 Scen Subset, 7Yr treas"
summary(SummaryUp3007YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02640   Min.   :0.004416  
##  1st Qu.:0.04187   1st Qu.:0.007796  
##  Median :0.04920   Median :0.010596  
##  Mean   :0.05039   Mean   :0.012278  
##  3rd Qu.:0.05644   3rd Qu.:0.014520  
##  Max.   :0.10183   Max.   :0.056243
SummaryUp3007YrCST1K <- Up3007YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 1,000 Scen Subset, 7Yr treas")
## [1] "Up300, 1,000 Scen Subset, 7Yr treas"
summary(SummaryUp3007YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02546   Min.   :0.003617  
##  1st Qu.:0.04215   1st Qu.:0.007917  
##  Median :0.04935   Median :0.010975  
##  Mean   :0.05149   Mean   :0.013000  
##  3rd Qu.:0.05779   3rd Qu.:0.015707  
##  Max.   :0.11446   Max.   :0.053802
SummaryUp3007YrCST <- Up7YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 10,000 Scens, 7Yr treas")
## [1] "Up300, 10,000 Scens, 7Yr treas"
summary(SummaryUp3007YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02378   Min.   :0.003434  
##  1st Qu.:0.04227   1st Qu.:0.008004  
##  Median :0.04924   Median :0.010758  
##  Mean   :0.05142   Mean   :0.012844  
##  3rd Qu.:0.05787   3rd Qu.:0.015286  
##  Max.   :0.14305   Max.   :0.056243
SummaryUp30010YrCST50 <- Up30010YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 50 Scen Subset, 10Yr treas")
## [1] "Up300, 50 Scen Subset, 10Yr treas"
summary(SummaryUp30010YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02553   Min.   :0.004672  
##  1st Qu.:0.04461   1st Qu.:0.007099  
##  Median :0.04971   Median :0.009901  
##  Mean   :0.05207   Mean   :0.011857  
##  3rd Qu.:0.05924   3rd Qu.:0.014101  
##  Max.   :0.09621   Max.   :0.044258
SummaryUp30010YrCST200 <- Up30010YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 200 Scen Subset, 10Yr treas")
## [1] "Up300, 200 Scen Subset, 10Yr treas"
summary(SummaryUp30010YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.03026   Min.   :0.004503  
##  1st Qu.:0.04256   1st Qu.:0.007394  
##  Median :0.04964   Median :0.010917  
##  Mean   :0.05234   Mean   :0.012751  
##  3rd Qu.:0.05913   3rd Qu.:0.015104  
##  Max.   :0.09856   Max.   :0.045571
SummaryUp30010YrCST500 <- Up30010YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 500 Scen Subset, 10Yr treas")
## [1] "Up300, 500 Scen Subset, 10Yr treas"
summary(SummaryUp30010YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02763   Min.   :0.004010  
##  1st Qu.:0.04330   1st Qu.:0.007694  
##  Median :0.05085   Median :0.010301  
##  Mean   :0.05173   Mean   :0.011996  
##  3rd Qu.:0.05779   3rd Qu.:0.014302  
##  Max.   :0.10264   Max.   :0.055564
SummaryUp30010YrCST1K <- Up30010YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 1,000 Scen Subset, 10Yr treas")
## [1] "Up300, 1,000 Scen Subset, 10Yr treas"
summary(SummaryUp30010YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02671   Min.   :0.003244  
##  1st Qu.:0.04361   1st Qu.:0.007599  
##  Median :0.05064   Median :0.010687  
##  Mean   :0.05277   Mean   :0.012649  
##  3rd Qu.:0.05909   3rd Qu.:0.015245  
##  Max.   :0.11488   Max.   :0.051405
SummaryUp30010YrCST <- Up10YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 10,000 Scens, 10Yr treas")
## [1] "Up300, 10,000 Scens, 10Yr treas"
summary(SummaryUp30010YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02537   Min.   :0.003060  
##  1st Qu.:0.04367   1st Qu.:0.007729  
##  Median :0.05058   Median :0.010453  
##  Mean   :0.05270   Mean   :0.012500  
##  3rd Qu.:0.05907   3rd Qu.:0.014846  
##  Max.   :0.14088   Max.   :0.055564
SummaryUp30020YrCST50 <- Up30020YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 50 Scen Subset, 20Yr treas")
## [1] "Up300, 50 Scen Subset, 20Yr treas"
summary(SummaryUp30020YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02792   Min.   :0.004658  
##  1st Qu.:0.04612   1st Qu.:0.007039  
##  Median :0.05153   Median :0.009917  
##  Mean   :0.05389   Mean   :0.011631  
##  3rd Qu.:0.06086   3rd Qu.:0.013893  
##  Max.   :0.09655   Max.   :0.043164
SummaryUp30020YrCST200 <- Up30020YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 200 Scen Subset, 20Yr treas")
## [1] "Up300, 200 Scen Subset, 20Yr treas"
summary(SummaryUp30020YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.03155   Min.   :0.004188  
##  1st Qu.:0.04451   1st Qu.:0.007300  
##  Median :0.05153   Median :0.010534  
##  Mean   :0.05415   Mean   :0.012367  
##  3rd Qu.:0.06077   3rd Qu.:0.014361  
##  Max.   :0.09997   Max.   :0.045364
SummaryUp30020YrCST500 <- Up30020YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 500 Scen Subset, 20Yr treas")
## [1] "Up300, 500 Scen Subset, 20Yr treas"
summary(SummaryUp30020YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02933   Min.   :0.003286  
##  1st Qu.:0.04529   1st Qu.:0.007353  
##  Median :0.05273   Median :0.010099  
##  Mean   :0.05357   Mean   :0.011764  
##  3rd Qu.:0.05976   3rd Qu.:0.014182  
##  Max.   :0.10379   Max.   :0.054705
SummaryUp30020YrCST1K <- Up30020YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 1,000 Scen Subset, 20Yr treas")
## [1] "Up300, 1,000 Scen Subset, 20Yr treas"
summary(SummaryUp30020YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02844   Min.   :0.002957  
##  1st Qu.:0.04546   1st Qu.:0.007437  
##  Median :0.05247   Median :0.010391  
##  Mean   :0.05454   Mean   :0.012324  
##  3rd Qu.:0.06084   3rd Qu.:0.014699  
##  Max.   :0.11550   Max.   :0.049597
SummaryUp30020YrCST <- Up20YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 10,000 Scens, 20Yr treas")
## [1] "Up300, 10,000 Scens, 20Yr treas"
summary(SummaryUp30020YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02711   Min.   :0.002615  
##  1st Qu.:0.04562   1st Qu.:0.007546  
##  Median :0.05241   Median :0.010198  
##  Mean   :0.05447   Mean   :0.012182  
##  3rd Qu.:0.06076   3rd Qu.:0.014479  
##  Max.   :0.13803   Max.   :0.054705
SummaryUp30030YrCST50 <- Up30030YrCST50 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 50 Scen Subset, 30Yr treas")
## [1] "Up300, 50 Scen Subset, 30Yr treas"
summary(SummaryUp30030YrCST50[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02871   Min.   :0.004714  
##  1st Qu.:0.04657   1st Qu.:0.007135  
##  Median :0.05213   Median :0.009912  
##  Mean   :0.05449   Mean   :0.011603  
##  3rd Qu.:0.06142   3rd Qu.:0.013966  
##  Max.   :0.09663   Max.   :0.042839
SummaryUp30030YrCST200 <- Up30030YrCST200 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 200 Scen Subset, 30Yr treas")
## [1] "Up300, 200 Scen Subset, 30Yr treas"
summary(SummaryUp30030YrCST200[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.03193   Min.   :0.004058  
##  1st Qu.:0.04529   1st Qu.:0.007280  
##  Median :0.05225   Median :0.010460  
##  Mean   :0.05474   Mean   :0.012282  
##  3rd Qu.:0.06140   3rd Qu.:0.014175  
##  Max.   :0.10043   Max.   :0.045334
SummaryUp30030YrCST500 <- Up30030YrCST500 %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 500 Scen Subset, 30Yr treas")
## [1] "Up300, 500 Scen Subset, 30Yr treas"
summary(SummaryUp30030YrCST500[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02989   Min.   :0.003039  
##  1st Qu.:0.04589   1st Qu.:0.007373  
##  Median :0.05329   Median :0.010055  
##  Mean   :0.05418   Mean   :0.011735  
##  3rd Qu.:0.06040   3rd Qu.:0.014182  
##  Max.   :0.10416   Max.   :0.054475
SummaryUp30030YrCST1K <- Up30030YrCST1K %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 1,000 Scen Subset, 30Yr treas")
## [1] "Up300, 1,000 Scen Subset, 30Yr treas"
summary(SummaryUp30030YrCST1K[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02900   Min.   :0.002911  
##  1st Qu.:0.04611   1st Qu.:0.007380  
##  Median :0.05314   Median :0.010309  
##  Mean   :0.05512   Mean   :0.012262  
##  3rd Qu.:0.06144   3rd Qu.:0.014611  
##  Max.   :0.11568   Max.   :0.049213
SummaryUp30030YrCST <- Up30YrCST %>%
select(Scenario,Interest_Rate) %>%
group_by(Scenario) %>%
summarise(Avg_IntRate = mean(Interest_Rate), Standard_Deviation = sd(Interest_Rate))
print("Up300, 10,000 Scens, 30Yr treas")
## [1] "Up300, 10,000 Scens, 30Yr treas"
summary(SummaryUp30030YrCST[,2:3])
##   Avg_IntRate      Standard_Deviation
##  Min.   :0.02768   Min.   :0.002646  
##  1st Qu.:0.04627   1st Qu.:0.007499  
##  Median :0.05305   Median :0.010177  
##  Mean   :0.05505   Mean   :0.012125  
##  3rd Qu.:0.06136   3rd Qu.:0.014412  
##  Max.   :0.13701   Max.   :0.054475

Summarize this data in a table, this will be used for data vis as well

Standard_Dev_300 <- data.frame (Scen_Number  = c(50,200,500,1000,10000),
                  Three_Month = c(mean(SummaryUp3003mCST50$Standard_Deviation),
                            mean(SummaryUp3003mCST200$Standard_Deviation),
                            mean(SummaryUp3003mCST500$Standard_Deviation),
                            mean(SummaryUp3003mCST1K$Standard_Deviation),
                            mean(SummaryUp3003mCST$Standard_Deviation)),
                  Six_Month = c(mean(SummaryUp3006mCST50$Standard_Deviation),
                            mean(SummaryUp3006mCST200$Standard_Deviation),
                            mean(SummaryUp3006mCST500$Standard_Deviation),
                            mean(SummaryUp3006mCST1K$Standard_Deviation),
                            mean(SummaryUp3006mCST$Standard_Deviation)),
                  One_Year = c(mean(SummaryUp3001YrCST50$Standard_Deviation),
                            mean(SummaryUp3001YrCST200$Standard_Deviation),
                            mean(SummaryUp3001YrCST500$Standard_Deviation),
                            mean(SummaryUp3001YrCST1K$Standard_Deviation),
                            mean(SummaryUp3001YrCST$Standard_Deviation)),
                  Three_Year = c(mean(SummaryUp3003YrCST50$Standard_Deviation),
                            mean(SummaryUp3003YrCST200$Standard_Deviation),
                            mean(SummaryUp3003YrCST500$Standard_Deviation),
                            mean(SummaryUp3003YrCST1K$Standard_Deviation),
                            mean(SummaryUp3003YrCST$Standard_Deviation)),
                Five_Year = c(mean(SummaryUp3005YrCST50$Standard_Deviation),
                            mean(SummaryUp3005YrCST200$Standard_Deviation),
                            mean(SummaryUp3005YrCST500$Standard_Deviation),
                            mean(SummaryUp3005YrCST1K$Standard_Deviation),
                            mean(SummaryUp3005YrCST$Standard_Deviation)),
                  Seven_Year = c(mean(SummaryUp3007YrCST50$Standard_Deviation),
                            mean(SummaryUp3007YrCST200$Standard_Deviation),
                            mean(SummaryUp3007YrCST500$Standard_Deviation),
                            mean(SummaryUp3007YrCST1K$Standard_Deviation),
                            mean(SummaryUp3007YrCST$Standard_Deviation)),
                  Ten_Year = c(mean(SummaryUp30010YrCST50$Standard_Deviation),
                            mean(SummaryUp30010YrCST200$Standard_Deviation),
                            mean(SummaryUp30010YrCST500$Standard_Deviation),
                            mean(SummaryUp30010YrCST1K$Standard_Deviation),
                            mean(SummaryUp30010YrCST$Standard_Deviation)),
                  Twenty_Year = c(mean(SummaryUp30020YrCST50$Standard_Deviation),
                            mean(SummaryUp30020YrCST200$Standard_Deviation),
                            mean(SummaryUp30020YrCST500$Standard_Deviation),
                            mean(SummaryUp30020YrCST1K$Standard_Deviation),
                            mean(SummaryUp30020YrCST$Standard_Deviation)),
                  Thirty_Year = c(mean(SummaryUp30030YrCST50$Standard_Deviation),
                            mean(SummaryUp30030YrCST200$Standard_Deviation),
                            mean(SummaryUp30030YrCST500$Standard_Deviation),
                            mean(SummaryUp30030YrCST1K$Standard_Deviation),
                            mean(SummaryUp30030YrCST$Standard_Deviation))
                  )

rownames(Standard_Dev_300) <-  c("Subset_50", "Subset_200", "Subset_500", "Subset_1K", "Full_10K")
print(Standard_Dev_300)
##            Scen_Number Three_Month  Six_Month   One_Year Three_Year  Five_Year
## Subset_50           50  0.01620955 0.01582196 0.01514206 0.01339187 0.01255482
## Subset_200         200  0.01772165 0.01731316 0.01659000 0.01465317 0.01366951
## Subset_500         500  0.01627001 0.01589315 0.01523114 0.01351482 0.01269050
## Subset_1K         1000  0.01739476 0.01699193 0.01628297 0.01441184 0.01348293
## Full_10K         10000  0.01720026 0.01679954 0.01609465 0.01423902 0.01332019
##            Seven_Year   Ten_Year Twenty_Year Thirty_Year
## Subset_50  0.01213941 0.01185719  0.01163129  0.01160315
## Subset_200 0.01314495 0.01275146  0.01236658  0.01228177
## Subset_500 0.01227823 0.01199589  0.01176428  0.01173511
## Subset_1K  0.01299968 0.01264945  0.01232352  0.01226212
## Full_10K   0.01284363 0.01250023  0.01218245  0.01212467
Standard_Dev_t_300 <- t(Standard_Dev_300)
Standard_Dev_t_300 <- as.data.frame(Standard_Dev_t_300)
Standard_Dev_t_300$Tenor <- c(0,0.25, 0.5, 1, 3, 5, 7, 10, 20, 30)


Standard_Dev_plot_300 <- melt(Standard_Dev_t_300,value.name = "Interest_Rate", id = "Tenor")
v <-ggplot(Standard_Dev_t_300 )+
   # geom_line(aes(color="#ecfacf")) +
  geom_line(aes(x=Tenor, y=Subset_50,color="#ecfacf"))+
    geom_line(aes(x=Tenor, y=Subset_200,color="#7aefcb")) +
    geom_line(aes(x=Tenor, y=Subset_500,color="#efe3f2")) +
    geom_line(aes(x=Tenor, y=Subset_1K,color="#9892f1")) +
    geom_line(aes(x=Tenor, y=Full_10K,color="#ed92be")) +
    xlab("Tenor") + #ylab("Interest Rate") +
    scale_y_continuous(name="Standard Deviations", labels = scales::percent, limits = c(0.01,         0.02)) +
    ggtitle("Standard Deviations by Subset +300bps") +
    theme(legend.position = "none") 

ggplotly(v)

Even in a +300bps environment, I’m not convinced that more scenarios implies more accurate PBR Reserve modeling