曲線全体を4つの数で
市場は米国債の利回りを3か月から30年までの10の満期で気配しますが、銀行はあらゆる日付の金利を必要とします。この総仕上げでは、ネルソン・シーゲル・モデルの4つの数、つまり長期の水準 β₀、傾き β₁、こぶ β₂、年単位の減衰の長さ λ で曲線全体を表します。scipy.optimize.least_squares で気配にキャリブレーションし、曲線は λ について線形でないため複数の λ から出発して、コストが最小の当てはめを採用します。当てはめた曲線からフォワードレートを読み取り、瞬間フォワード曲線を integrate.quad で積分して割引係数 D(T)=e^(-A/100) を求めます。A はフォワード曲線の下の面積(%)です。
同じ曲線で債券を価格付けします。各キャッシュフローはそれぞれの満期の利回りで割り引き、P=Σcᵢ e^(-y(tᵢ)tᵢ/100) です。最終利回りは価格を再現する唯一の利率で、optimize.brentq で求めます。オプションも同じ要領で、インプライド・ボラティリティは bs_call(σ)-価格 の根で、これも brentq で求めます。実際のオプション気配は共有データに含まれないので、スマイルは提供された bs_call で自分で作った価格でテストし、スマイル σ(m)=a+b m+c m²(m=ln(K/S) は対数マネーネス)を最小二乗法で当てはめます。各関数は独立した基準解に対してランダムな入力で採点され、最後のテストは実際の米国債ファイルで研究全体を実行します。
y(τ)=β₀+β₁g+β₂ (g-e^(-x)), x=τ/λ, g=(1-e^(-x))/x, D(T)=e^(-A/100)
実際の曲線が語ること2026年10月9日、10本の気配利回りは、β₀=5.75%、β₁=-1.52、β₂≈0、λ=2.7 年の曲線で、平均 7.3 bp の誤差で再現されます。5年から10年のフォワードレートは 5.64%、10年の割引係数は 0.586、年率5%・10年の債券の価格は 96.70(利回り 5.29%)です。市場がパニックだった2020年3月31日は、水準が 1.87%、当てはめ誤差はわずか 1.7 bp、5〜10年フォワードは 1.02%、10年の割引係数は 0.931、同じ債券の利回りは 0.67% でした。
- 複数の出発点からキャリブレーションする:減衰の長さのせいで当てはめは非線形になり、1つの出発点では悪い曲線で止まることがある。
- 別の経路で確かめる:積分したフォワード曲線から得た割引係数は、利回りから得たものと一致するはず。
- 根が市場を価格付ける:最終利回りとインプライド・ボラティリティは、どちらも価格誤差に brentq を適用して求める根。
ラボ:採点される内容
- ある日の気配曲線5点
- ネルソン・シーゲル利回り10点
- 曲線のキャリブレーション15点
- フォワードレート10点
- フォワードから割引係数10点
- 曲線からの債券価格10点
- 最終利回り10点
- インプライド・ボラティリティ10点
- 2次のスマイル10点
- キャリブレーション全体10点