시작하기무료로 시작하기

uniroot 함수를 사용해 YTM 구하기

시행착오는 매우 번거로운 과정이에요. 대안으로, 이 작업을 대신 수행해 주는 알고리즘을 사용할 수 있습니다. 이번 경우, 문제의 해는 어떤 함수의 근을 찾는 것과 같습니다.

이 연습 문제에서는 uniroot() 함수를 사용해 근을 찾습니다.

uniroot() 함수를 사용하려면, 첫 번째 원소에 채권 가격(음수)을 두고, 나머지 원소에 채권에서 받을 것으로 예상되는 현금흐름(즉, 쿠폰과 원금 상환)을 담은 현금흐름 벡터 cf를 준비해야 합니다.

채권 가격은 $95.79이고, 액면가(par value)는 $100, 쿠폰 금리는 5%, 만기는 5년이라는 점을 기억하세요.

이 연습은 강의의 일부입니다

R로 배우는 채권 가치 평가와 분석

강의 보기

연습 안내

  • 초기 채권 가격(음수)과 만기까지의 지급액(양수)을 포함하는 현금흐름 벡터 cf를 생성하세요.
  • 미리 작성된 코드를 사용해 각 기간의 채권 가치를 계산하는 간단한 채권 가치평가 함수 bval()을 만드세요.
  • 미리 작성된 코드를 사용해 uniroot()ytm() 함수를 만드세요.
  • ytm()에 여러분의 cf 벡터를 전달해 채권의 만기수익률을 구하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Create cash flow vector
cf <- c(___, ___, ___, ___, ___, ___)

# Create bond valuation function
bval <- function(i, cf,
     t=seq(along = cf))
     sum(cf / (1 + i)^t)

# Create ytm() function using uniroot
ytm <- function(cf) {
    uniroot(bval, c(0, 1), cf = cf)$root
}

# Use ytm() function to find yield


코드 편집 및 실행