# Code Created by Paras Takkar
# Problem 1

solve_interest_rate <- function(x, t) {
  i <- x^(1/t) - 1
  return(i)
}

# Test the function with x = 5 and t = 15
x <- 5
t <- 15

rate <- solve_interest_rate(x, t)

cat("Interest rate:", rate, "\n")
Interest rate: 0.1132636 
# Verify by hand using k = 1000
k <- 1000
accumulated_value <- k * (1 + rate)^t

cat("Accumulated value of $1,000 after 15 years:", accumulated_value, "\n")
Accumulated value of $1,000 after 15 years: 5000 
# Code Created by Paras Takkar
# Problem 2
t <- as.Date(c("2024-01-01",
               "2024-02-01",
               "2024-04-01",
               "2024-06-01",
               "2024-08-01",
               "2024-10-01",
               "2024-11-01",
               "2024-12-31"))

B_t <- c(200000,
         205000,
         211000,
         214000,
         219000,
         225000,
         225500,
         231000)

W_t <- c(0,
         10000,
         -2000,
         -1500,
         4000,
         3500,
         1500,
         0)

df <- data.frame(t, B_t, W_t)

B_t_minus_1 <- c(NA, B_t[-length(B_t)])

B_before_flow <- B_t - W_t

r_t <- (B_before_flow / B_t_minus_1) - 1

df$B_t_minus_1 <- B_t_minus_1
df$r_t <- r_t

twrr_2024 <- prod(1 + r_t[-1]) - 1

df
cat("TWRR (decimal form):", twrr_2024, "\n")
TWRR (decimal form): 0.07221138 
cat("TWRR expressed as a percentage:", 100 * twrr_2024, "%\n")
TWRR expressed as a percentage: 7.221138 %
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQNCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KYGBge3J9DQojIENvZGUgQ3JlYXRlZCBieSBQYXJhcyBUYWtrYXINCiMgUHJvYmxlbSAxDQoNCnNvbHZlX2ludGVyZXN0X3JhdGUgPC0gZnVuY3Rpb24oeCwgdCkgew0KICBpIDwtIHheKDEvdCkgLSAxDQogIHJldHVybihpKQ0KfQ0KDQojIFRlc3QgdGhlIGZ1bmN0aW9uIHdpdGggeCA9IDUgYW5kIHQgPSAxNQ0KeCA8LSA1DQp0IDwtIDE1DQoNCnJhdGUgPC0gc29sdmVfaW50ZXJlc3RfcmF0ZSh4LCB0KQ0KDQpjYXQoIkludGVyZXN0IHJhdGU6IiwgcmF0ZSwgIlxuIikNCg0KDQojIFZlcmlmeSBieSBoYW5kIHVzaW5nIGsgPSAxMDAwDQprIDwtIDEwMDANCmFjY3VtdWxhdGVkX3ZhbHVlIDwtIGsgKiAoMSArIHJhdGUpXnQNCg0KY2F0KCJBY2N1bXVsYXRlZCB2YWx1ZSBvZiAkMSwwMDAgYWZ0ZXIgMTUgeWVhcnM6IiwgYWNjdW11bGF0ZWRfdmFsdWUsICJcbiIpDQpgYGANCg0KDQoNCg0KDQoNCmBgYHtyfQ0KIyBDb2RlIENyZWF0ZWQgYnkgUGFyYXMgVGFra2FyDQojIFByb2JsZW0gMg0KdCA8LSBhcy5EYXRlKGMoIjIwMjQtMDEtMDEiLA0KICAgICAgICAgICAgICAgIjIwMjQtMDItMDEiLA0KICAgICAgICAgICAgICAgIjIwMjQtMDQtMDEiLA0KICAgICAgICAgICAgICAgIjIwMjQtMDYtMDEiLA0KICAgICAgICAgICAgICAgIjIwMjQtMDgtMDEiLA0KICAgICAgICAgICAgICAgIjIwMjQtMTAtMDEiLA0KICAgICAgICAgICAgICAgIjIwMjQtMTEtMDEiLA0KICAgICAgICAgICAgICAgIjIwMjQtMTItMzEiKSkNCg0KQl90IDwtIGMoMjAwMDAwLA0KICAgICAgICAgMjA1MDAwLA0KICAgICAgICAgMjExMDAwLA0KICAgICAgICAgMjE0MDAwLA0KICAgICAgICAgMjE5MDAwLA0KICAgICAgICAgMjI1MDAwLA0KICAgICAgICAgMjI1NTAwLA0KICAgICAgICAgMjMxMDAwKQ0KDQpXX3QgPC0gYygwLA0KICAgICAgICAgMTAwMDAsDQogICAgICAgICAtMjAwMCwNCiAgICAgICAgIC0xNTAwLA0KICAgICAgICAgNDAwMCwNCiAgICAgICAgIDM1MDAsDQogICAgICAgICAxNTAwLA0KICAgICAgICAgMCkNCg0KZGYgPC0gZGF0YS5mcmFtZSh0LCBCX3QsIFdfdCkNCg0KQl90X21pbnVzXzEgPC0gYyhOQSwgQl90Wy1sZW5ndGgoQl90KV0pDQoNCkJfYmVmb3JlX2Zsb3cgPC0gQl90IC0gV190DQoNCnJfdCA8LSAoQl9iZWZvcmVfZmxvdyAvIEJfdF9taW51c18xKSAtIDENCg0KZGYkQl90X21pbnVzXzEgPC0gQl90X21pbnVzXzENCmRmJHJfdCA8LSByX3QNCg0KdHdycl8yMDI0IDwtIHByb2QoMSArIHJfdFstMV0pIC0gMQ0KDQpkZg0KY2F0KCJUV1JSIChkZWNpbWFsIGZvcm0pOiIsIHR3cnJfMjAyNCwgIlxuIikNCmNhdCgiVFdSUiBleHByZXNzZWQgYXMgYSBwZXJjZW50YWdlOiIsIDEwMCAqIHR3cnJfMjAyNCwgIiVcbiIpDQpgYGANCg0KDQoNCg0K