مواد پر جائیں
لائبریری کی تمام دستاویزات

انٹرپولیٹڈ ییلڈ کرو سے ڈسکاؤنٹ فیکٹر حاصل کریں

مضمون Quant Q&A · مصنف: Mike

خلاصہ

دستاویز دکھاتی ہے کہ QuantLib ڈسکاؤنٹ کرو بنانے کے لیے استعمال ہونے والی درج شدہ میچورٹیز کے درمیان تاریخوں کے ڈسکاؤنٹ فیکٹر کیسے حاصل کیے جائیں۔ سواپ ریٹ کے اِن پٹس سے ٹکڑوں میں لاگ لینیئر ڈسکاؤنٹ کرو بنانے کے بعد مثال آئندہ تاریخوں کا سلسلہ تیار کرتی اور ہر تاریخ کے لیے کرو کا ڈسکاؤنٹ طریقہ چلاتی ہے۔ حاصل شدہ قدریں کرو کا باقاعدہ وقفوں والا نمونہ بناتی ہیں، جسے تاریخوں کے ساتھ دکھایا جا سکتا ہے۔

مثالی کوڈ پانچ سال کے وقفوں سے نمونے لیتا ہے، حالانکہ سوال میں نصف سال کے وقفے مانگے گئے ہیں؛ تاریخوں کے درمیان چھ ماہ کا فاصلہ رکھ کر یہی طریقہ اپنایا جا سکتا ہے۔ دوسرا جواب بنیادی نکتہ واضح کرتا ہے: کرو کسی بھی مطلوبہ تاریخ کا ڈسکاؤنٹ فیکٹر دے سکتا ہے، اس لیے نتیجہ اصل کرو نوڈز تک محدود رکھنے کی ضرورت نہیں۔ مثال مصنوعی سویڈش کرونا سواپ ڈیٹا استعمال کرتی اور آخری اِن پٹ میچورٹی کے بعد تخمینہ بڑھانے کی اجازت دیتی ہے۔ لہٰذا نتیجہ مارکیٹ کے ثبوت کے بجائے API کے استعمال کو دکھاتا ہے؛ آگے بڑھائے گئے تخمینے کرو کے مفروضوں اور ترتیب پر منحصر ہیں۔

اہم خیالات

  • بنائی گئی ڈسکاؤنٹ کرو اپنے اِن پٹ میچورٹی نوڈز کے درمیان تاریخوں کے لیے ڈسکاؤنٹ فیکٹر دے سکتی ہے۔
  • مطلوبہ تاریخوں کا وقفہ منتخب کریں اور ہر تاریخ کے لیے کرو سے قدر حاصل کریں۔
  • مثال پانچ سال کے وقفوں سے نمونے لیتی ہے؛ تاریخ کا وقفہ بدل کر نصف سال کے نمونے حاصل کیے جا سکتے ہیں۔
  • آخری کرو نوڈ کے بعد کے ڈسکاؤنٹ فیکٹر تخمینے کو آگے بڑھانے کی ترتیبات پر منحصر ہو سکتے ہیں؛ اسی مناسبت سے ان کی تشریح کریں۔

ٹیگز

مکمل متن
# QuantLib Python - Discount Factor Interpolation within curve nodes


# QuantLib Python - Discount Factor Interpolation within curve nodes












Generated a discount curve, dCurve.PiecewiseLogLinearDiscount() using input par rate for terms (.5Y, 1Y, 2Y, 3Y, 5Y, 7Y, 10Y, 15Y, 20Y, 30Y) and output discount curve matching the input term structure. Any suggestions on how to output the discount factor curve on a .5Y interval term structure up to 30Y?

## Answer by Xiarpedia (score 1)

https://quant.stackexchange.com/a/77563

Based on your question I created the following curve example:

```
import QuantLib as ql
import pandas as pd

# Set the evaluation date
ql.Settings.instance().evaluationDate = ql.Date(30, 12, 2022)
# Declare a store variable for the helpers
helpers = []
# Create the attributes of the swap
calendar = ql.Sweden()
frequency = ql.Annual
convention = ql.ModifiedFollowing
# Synthetic market data
daycount = ql.Thirty360(ql.Thirty360.BondBasis)
index = ql.IborIndex(
    "MyIndex",
    ql.Period("3M"),
    2,
    ql.SEKCurrency(),
    calendar,
    ql.Following,
    False,
    daycount,
)

tenor = ["4Y", "5Y", "6Y", "7Y", "8Y", "9Y", "10Y", "12Y", "15Y", "20Y", "25Y", "30Y"]
quotes = [
    3.33,
    3.2775,
    3.235,
    3.205,
    3.1775,
    3.1525,
    3.1325,
    3.095,
    3.0275,
    2.92,
    2.815,
    2.6925,
]
for r, m in zip(quotes, tenor):
    rate = ql.QuoteHandle(ql.SimpleQuote(r / 100.0))
    tenor = ql.Period(m)
    helpers.append(
        ql.SwapRateHelper(
            rate, tenor, calendar, frequency, convention, daycount, index
        )
    )
curve = ql.PiecewiseLogLinearDiscount(0, calendar, helpers, ql.Actual365Fixed())
curve.enableExtrapolation()
dates, rates = zip(*curve.nodes())
```

Which leaves me at the stage you are at. We can then interpolate on a 5 year interval as following:

```
# Interpolate on a 5Y interval
nodes = []
start_date = ql.Date(30, 12, 2022)
while True:
    start_date += ql.Period("5Y")
    nodes.append(start_date)
    if start_date > ql.Date(30, 12, 2053):
        break
discount_factors = [curve.discount(d) for d in nodes]
display(pd.DataFrame(dict({"Date": nodes, "Discount Factor": discount_factors})))
```

Which results in:

|  | Date | Discount Factor |
| 0 | December 30th, 2027 | 0.851205 |
| 1 | December 30th, 2032 | 0.735589 |
| 2 | December 30th, 2037 | 0.641855 |
| 3 | December 30th, 2042 | 0.567462 |
| 4 | December 30th, 2047 | 0.508218 |
| 5 | December 30th, 2052 | 0.464726 |
| 6 | December 30th, 2057 | 0.424997 |

## Answer by Luigi Ballabio (score 0)

https://quant.stackexchange.com/a/77564

You can pass any date you like to the `discount` method of the curve you built. It will return the corresponding discount factor.

ماخذ کا حوالہ دیتے ہوئے مکمل متن دکھایا گیا ہے، ماخذ کے لائسنس کے تحت۔ لائسنس: CC BY-SA 4.0 (Stack Exchange)

یہ خلاصہ اصل ماخذ سے Stratmill کے تحقیقی ایجنٹ نے لکھا ہے؛ یہ ماخذ کی نقل نہیں۔