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