diff options
| -rw-r--r-- | R/curve_trades.R | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/R/curve_trades.R b/R/curve_trades.R new file mode 100644 index 00000000..179ad673 --- /dev/null +++ b/R/curve_trades.R @@ -0,0 +1,59 @@ +library(dplyr) +library(tidyr) +library(ggplot2) + +index.quotes <- tbl(src_postgres("serenitasdb", "debian", 5432, "serenitas_user"), "index_quotes") + +##ig26 +ig26 <- index.quotes %>% + filter(series == 26, index == 'IG') %>% + select(date, tenor, closeprice, modelprice, theta) %>% + arrange(desc(date)) + +ig26.close <- ig26 %>% + select(date, tenor, closeprice) %>% + collect() %>% + spread(tenor, closeprice) + +ig26.close <- ig26.close %>% + mutate(package = 3*`5yr`-2*`3yr`-`10yr`, + pnl = c(0, diff(package)), + cumpnl = cumsum(pnl)) + +ig26.close %>% + ggplot(aes(x=date)) + geom_line(aes(y=pnl)) + +ig26.close %>% + ggplot(aes(x=date)) + geom_line(aes(y=cumpnl)) + +##ig25 +ig25 <- index.quotes %>% + filter(series == 25, index == 'IG', tenor %in% c("3yr", "5yr", "10yr")) %>% + select(date, tenor, closeprice, modelprice, theta) %>% + arrange(desc(date)) + +ig25.close <- ig25 %>% + select(date, tenor, closeprice) %>% + collect() %>% + spread(tenor, closeprice) + +ig25.theta <- ig25 %>% + select(date, tenor, theta) %>% + collect() %>% + spread(tenor, theta) %>% + mutate(theta = 3*`5yr`-2*`3yr`-`10yr`) %>% + select(date, theta) + +ig25.close <- ig25.close %>% + mutate(package = 3*`5yr`-2*`3yr`-`10yr`, + r = (package-lag(package))/lag(package)) %>% + select(date, r) %>% left_join(ig25.theta) + +ig25.theta <- ig25.theta %>% + mutate(package = 3*`5yr`-2*`3yr`-`10yr`) + +ig25.close %>% + ggplot(aes(x=date)) + geom_line(aes(y=package-first(package))) + +ig25.close %>% + ggplot(aes(x=date)) + geom_line(aes(y=cumpnl)) |
