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
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, 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")
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
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.
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")
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
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