शुरू करेंमुफ़्त में शुरू करें

YTM खोजने के लिए uniroot फंक्शन का उपयोग करें

ट्रायल-एंड-एरर एक बहुत झंझट वाला तरीका है। बेहतर विकल्प है कोई ऐसा एल्गोरिदम उपयोग करना जो यह काम अपने-आप कर दे। इस खास मामले में, समस्या का हल किसी फंक्शन का रूट खोजने के बराबर है।

इस अभ्यास में, आप unrioot() फंक्शन का उपयोग करके रूट पाएँगे।

uniroot() फंक्शन के लिए हमें cash flows का एक वेक्टर cf सेटअप करना होता है, जिसमें पहला तत्व बॉन्ड की कीमत (निगेटिव संख्या) हो और बाकी तत्व वे cash flows हों जो आप बॉन्ड से पाने की उम्मीद करते हैं (अर्थात, कूपन और प्रिंसिपल भुगतान)।

ध्यान दें कि बॉन्ड की कीमत $95.79 है और बॉन्ड का पार वैल्यू $100, कूपन दर 5%, और मैच्योरिटी 5 साल है।

यह अभ्यास पाठ्यक्रम का हिस्सा है

R में बॉन्ड वैल्यूएशन और विश्लेषण

पाठ्यक्रम देखें

अभ्यास निर्देश

  • cash flows का एक वेक्टर cf बनाएँ, जिसमें शुरुआती बॉन्ड कीमत (निगेटिव) और मैच्योरिटी तक के भुगतान (पॉजिटिव) शामिल हों।
  • पहले से लिखे गए कोड का उपयोग करके एक सरल बॉन्ड वैल्यूएशन फंक्शन bval() बनाएँ, जो हर समय-काल में बॉन्ड का मूल्य गणना करता है।
  • पहले से लिखे गए कोड का उपयोग करके uniroot() के साथ ytm() फंक्शन बनाएँ।
  • अपने cf वेक्टर के साथ ytm() का उपयोग करके बॉन्ड का यील्ड टू मैच्योरिटी निकालें।

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

# 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


कोड संपादित करें और चलाएँ