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.
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,]
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
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
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)
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.
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.
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
Next, evaluate something with the subsets….maybe min, max, and std dev etc by subset and tenor. Do subsets chose widest range of scenarios?
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")
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
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