In this post we will solve the end of the chapter practice problems from chapter 1 of the book.

Here are the first 6 problems and their solutions in R

Problem 1A

Investment 1 and 2 have the same maturity and default risks. However investment 2 has low liquidity and therefore investment 2 has a higher interest rate of 0.5% to compensate for the liquidity risk. This is the liquidity risk premium.

Problem 1B

Investment 4 and 5 have the same maturity (8 years). We know from problem 1 the liquidity risk premiums is 0.5%. The interest rate difference between Investment 4 and 5, is 2.5%. Investment 5 has low liquidity and high default risk therefore it has a higher interest rate. Since we know 0.5% is the liquidity premium, we can attribute 2.5% - 0.5% = 2% as default risk premium.

Problem 1C

Investment 2 and 3 has the same liquidity and default risk, but investment 3 has a higher maturity hence it should have atleast 2.5% as the lower bound. Investment 3 and 4 has low default risk. But investment 3 has a lower maturity and lower liquidity. We know the liquidity premium is 0.5%, but we don’t know the compensation for extra year of maturity. Therefore we could expect the interest rate for investment 3 to be between 2.5% and 4.5%.

Problem 2

library(tidyverse)

savings <- 20000
interest <- 7/100
years <- 20
timeline <- rep(20000,years)

# Create a function to calculate the future value
# of payments

get_payment_fv <- function(x,y) {
  
  payment <- (1 + interest) ^ (years - y) * x
  return(payment)
  
}

payments <- map2_dbl(.x = timeline,.y = 1:years,
                 .f = get_payment_fv)

print(timeline)
##  [1] 20000 20000 20000 20000 20000 20000 20000 20000 20000 20000 20000
## [12] 20000 20000 20000 20000 20000 20000 20000 20000 20000
print(payments)
##  [1] 72330.55 67598.65 63176.30 59043.27 55180.63 51570.68 48196.90
##  [8] 45043.83 42097.04 39343.03 36769.18 34363.72 32115.63 30014.61
## [15] 28051.03 26215.92 24500.86 22898.00 21400.00 20000.00
cat("The couple will have", paste0("$",round(sum(payments),2)),
    "at the end of 20 years.")
## The couple will have $819909.85 at the end of 20 years.

Problem 3

cash_flow <- c(0, 0, 20000, 20000, 20000, 0, 0)
interest <- 9/100
years <- length(cash_flow)

payments <- map2_dbl(.x = cash_flow,
                     .y = 1:years,
                     .f = get_payment_fv)

cat("The client will have", paste0("$",round(sum(payments),2)),
    "at the end of 6 years.")
## The client will have $77894.21 at the end of 6 years.

Problem 4

college_fee <- 75000
interest <- 6/100
years <- 5

pv <- (1 + interest) ^ (-years) * college_fee

cat("The father will need to invest", paste0("$",round(pv,2)),
    "today to have $75000 in 5 years at 6%")
## The father will need to invest $56044.36 today to have $75000 in 5 years at 6%

Problem 5

interest <- 5/100
years <- 10

df <- tibble(year = 1:years,
       cf = rep(100000,10)) %>%
  mutate(pv = cf / (1 + interest)^ year)

print(df)
## # A tibble: 10 x 3
##     year     cf     pv
##    <int>  <dbl>  <dbl>
##  1     1 100000 95238.
##  2     2 100000 90703.
##  3     3 100000 86384.
##  4     4 100000 82270.
##  5     5 100000 78353.
##  6     6 100000 74622.
##  7     7 100000 71068.
##  8     8 100000 67684.
##  9     9 100000 64461.
## 10    10 100000 61391.
lump_sum <- sum(df$pv)

cat("The client should expect", paste0("$",round(lump_sum, 2)), "payment today.")
## The client should expect $772173.49 payment today.

Problem 6A

cf1 <- c(0,0,0,rep(20000,4))

interest <- 8/100

df <- tibble(year = 1:length(cf1),
             cf = cf1) %>%
  mutate(pv = cf / (1 + interest)^ year)

print(df)
## # A tibble: 7 x 3
##    year    cf     pv
##   <int> <dbl>  <dbl>
## 1     1     0     0 
## 2     2     0     0 
## 3     3     0     0 
## 4     4 20000 14701.
## 5     5 20000 13612.
## 6     6 20000 12603.
## 7     7 20000 11670.
pv <- sum(df$pv)


cat("We should be willing to pay",paste0("$",round(pv,2)),"for the first investment")
## We should be willing to pay $52585.46 for the first investment

Problem 6B

cf2 <- c(rep(20000,3), 30000)
interest <- 8/100

df <- tibble(year = 1:length(cf2),
             cf = cf2) %>%
  mutate(pv = cf / (1 + interest)^ year)

cat("We should be willing to pay",paste0("$",round(pv,2)),"for the second investment")
## We should be willing to pay $52585.46 for the second investment

Problems 7 to 15 and their solution in R

Problem 7

cf <- c(rep(0,2), rep(10000,4))

interest <- 8/100

df <- tibble(year = 1:length(cf),
             cf = cf) %>%
  mutate(pv = cf / (1 + interest)^ year)

print(df)
## # A tibble: 6 x 3
##    year    cf    pv
##   <int> <dbl> <dbl>
## 1     1     0    0 
## 2     2     0    0 
## 3     3 10000 7938.
## 4     4 10000 7350.
## 5     5 10000 6806.
## 6     6 10000 6302.
pv <- sum(df$pv)

cat("We should set aside", paste0("$",round(pv,2)), "today to pay for the college tuition")
## We should set aside $28396.15 today to pay for the college tuition

Problem 8

# This is a two part problem
# First calculate the PV of 
# Room and board required 
# before college starts

cf1 <- rep(20000,4)
interest <- 5/100

df1 <- tibble(year = 1:length(cf1),
       cf = cf1) %>%
  mutate(pv = cf / (1 + interest)^ year)

fv <- sum(df1$pv)

cat("The client will need", fv, 
    "before college starts.")
## The client will need 70919.01 before college starts.
# Now we need to calculate the
# payment needed to get this 
# Future value

# We will use the FV value of annuity formula

# FV = annuity((1 + r)^N - 1 / r)
# we need to make 17 payments

annuity <- fv / (((1 + interest)^17 - 1) / 0.05)

cat("The parent will need to make", paste0("$",round(annuity,2)), "to save for room and board")
## The parent will need to make $2744.5 to save for room and board

Problem 9

# First we need to calculate the
# Inflation adjusted cost of college
# in the future

inflation <- 0.05
tuition_today <- 7000
college_start_years <- 18

tuition_fv_year1 <- (1 + inflation) ^ college_start_years * tuition_today

cat("Tuition will be", paste0("C$",round(tuition_fv_year1,2), 
                              " for the first year, 18 years from now."))
## Tuition will be C$16846.33 for the first year, 18 years from now.
# Now lets calculate the tuition payments for the next 3 years
# Year 0 is 
df <- tibble(year = 1:4,
             tuition = c(tuition_fv_year1, rep(0,3))) %>%
  mutate(tuition = (1 + inflation)^(year - 1) * tuition_fv_year1)
print(df)
## # A tibble: 4 x 2
##    year tuition
##   <int>   <dbl>
## 1     1  16846.
## 2     2  17689.
## 3     3  18573.
## 4     4  19502.
# Now we need to PV these payments at
# beginning of year 17

interest <- 6/100 # Expected returns

df <- df %>%
  mutate(pv = tuition / (1 + interest) ^ year)


fv_total_tuition <- sum(df$pv)

# Now its an annuity problem as before

annuity <- fv_total_tuition / (((1 + interest)^17 - 1) / interest)
annuity
## [1] 2221.579
cat("The couple will need to save", paste0("$",round(annuity,2)), "each year for the expected college tuition.")
## The couple will need to save $2221.58 each year for the expected college tuition.

Problem 10

C. expected inflation.

Problem 11

C. Liquidity

Problem 12

(1 + 0.04/365)^365 - 1
## [1] 0.04080849

A. daily

Problem 13

(1+0.07 / 4) ^ (4 * 6) * 75000
## [1] 113733.2

A. $113733

Problem 14

100000 / (1 + 0.025 / 52) ^ 52
## [1] 97531.58

B. 97532

Problem 15

# Get the Effective annual rate
rate <- (1 + 0.03 / 365) ^ 365 - 1

# Get the months
# needed to quadruple the PV

log(1000000 / 250000) /  log(1 + rate) * 12
## [1] 554.5405

A. 555

Problems 16 to 22 and their solution in R

Problem 16

# 3% continuously compounding
# for 4 years

continuous_compounding <- exp(0.03 * 4) * 1000000

daily_compounding <- (1 + 0.03 / 365) ^ (4 * 365) * 1000000

continuous_compounding - daily_compounding
## [1] 5.55994

B. €6

Problem 17

rate <- 4/100
pmt <- 300
years <- 5

pv <- (pmt / rate * (1 - 1/(1 + rate)^years)) * (1 + rate)

pv
## [1] 1388.969

B. $1389

Problem 18

quarterly_div <- 2
yearly_div <- quarterly_div * 4

# PV a year from now

fv <- yearly_div / 0.06

# Current price

pv <- fv / (1 + 0.06)
pv
## [1] 125.7862

B. $126

Problem 19

rate <- 4/100
ear <- (1 + rate / 2) ^ 2

  df <- tibble(year = 1:4,
               years_remaining = 4:1,
               cf = c(4000, 8000, 7000, 10000)) %>%
  mutate(fv = cf * ((1 + 0.02) ^ ((years_remaining - 1) * 2)))

df
## # A tibble: 4 x 4
##    year years_remaining    cf     fv
##   <int>           <int> <dbl>  <dbl>
## 1     1               4  4000  4505.
## 2     2               3  8000  8659.
## 3     3               2  7000  7283.
## 4     4               1 10000 10000
fv <- sum(df$fv)

fv
## [1] 30446.91

B. $30447

Problem 20

# continuously

cont <- exp(0.075 * 6) * 500000

# daily

d <- (1 + 0.07 / 365) ^ (6 * 365) * 500000

# Semiannually

s <- (1 + 0.08 / 2) ^ (6 * 2) * 500000

tibble(continuously = cont,
       daily = d,
       semiannually = s)
## # A tibble: 1 x 3
##   continuously   daily semiannually
##          <dbl>   <dbl>        <dbl>
## 1      784156. 760950.      800516.

C. 8.0% compounded semiannually

Problem 21

perp_payment <- 2000 / (0.06 / 12)

perp_payment
## [1] 4e+05

C. greater than the lump sum

Problem 22

ordinary_annuity <- tibble(year = 1:10,
       cf = 2000) %>%
  mutate(pv = cf / (1 + 0.05) ^ year) %>%
  summarise(s = sum(pv)) %>%
  .[[1]]

annuity_due <- ordinary_annuity * 1.05
annuity_due
## [1] 16215.64

B. 16216

Problems 23 to 28 and their solution in R

Problem 23

rate <- 6/100
pmt <- 50000
years <- 4
# PV of ordinary annuity
# This is also the future value

fv <- (pmt / rate * (1 - 1/(1 + rate)^years))

# Calculate the PV

pv <- fv / (1 + rate) ^ 17
pv
## [1] 64340.85

B. 64341

Problem 24

rate <- 12/100

tibble(year = c(1,2,5),
       cf = c(100000, 150000, -10000)) %>%
  mutate(pv = cf / (1 + rate) ^ year) %>%
  summarise(s = sum(pv)) %>%
  .[[1]]
## [1] 203190.5

B. 203191

Problem 25

rate <- 0.06/12
n <- 12 * 5

pv_factor <- (1 - (1/(1+rate) ^ n)) / rate

payment <- 200000 / pv_factor

payment
## [1] 3866.56

B. 3866

Problem 26

rate <- 0.06 / 4
n = 4 * 10

25000 / (((1 + rate) ^ n - 1) / rate)
## [1] 460.6775

A. 460.68

(50000 / (1 + 0.04)^20) * (1 + 0.04) ^ 5
## [1] 27763.23

B. $27763

Problem 28

Answer choices are

  • 21670
  • 22890
  • 22950
p <- 0.035 * 20000
p
## [1] 700
rate <- 0.02/12
n <- 4 * 12

fv_payments <- tibble(years_remaining = 3:0,
       cf = p) %>%
  mutate(n = years_remaining * 12) %>%
  mutate(fv = (1 + rate) ^ n * cf) %>%
  summarise(s = sum(fv))


20000 + fv_payments
##          s
## 1 22885.92

B. 22890