はじめに

最新更新情報へ

< サイト開設の動機 >

1980年代に、初めてスワップのビジネスに携わり、それ以降、キャリアの大半をデリバティブズのトレーディングとリスク管理で過ごしました。キャリアをスタートした当時、最初のスワップ取引が開始されてから、まだ数年しかたっていませんでしたが、すでに、様々なスワップやオプションが取引され、それをバックにした様々な金融商品が開発され、取引されていました。 

その後のデリバティブズ市場の規模拡大と多様性進化のスピードは驚くべきもので、それにキャッチアップするのに、相当苦労しました。 次々に開発される新種商品、その価格計算に使われる新しいモデル、モデルから価格計算アルゴリズムを導出する数学、その価格計算のアルゴリズムを実装するプログラミング技術、次々に変わる規制環境など、実務で必要となる知識は広範でかつ難解でした。80年代当時は、参考になる文献もあまり無く、あっても難解で、相当苦労しましたが、次第にネットで、論文やわかりやすい解説などの情報が豊富になり、これに非常に助けられました。 

これが、このサイトを開設した動機のひとつです。これまでネットからのフリーの情報に相当助けられたので、これからこの分野に進まれる方に、自分も僅かでも役に立てればと考えました。 

< 金融工学 >

このサイトで取扱おうとしているのは、金融工学の内、Quants Financeと呼ばれる分野です。Quants Financeとは、一言で言えば、ミクロ的な金融商品の価格計算の方法を探求している分野です。マクロ的なポートフォリオ理論では、様々な投資家のリスク指向をベースに、「リスクプレミアムを含めた期待リターンが均衡する価格」として証券の価格が決まるという考え方です。それに対し、Quants Financeでは、個別の金融商品ごとに、キャッシュフローの期待値の現在価値を、主観的で投資家ごとに異なるリスクプレミアムを考えずに、客観的なパラメータだけで求めようとするものです。 

株式や債券といった現物証券の価格は市場で決まりますが、それらを対象資産とするデリバティブズの価格は、基本的に次の式を使って求めます。  

\[  金融商品の価格 =\sum CashFlow_i (T_i) \times Probability(CashFlow_i) \times DiscountFactor(T_i) \]

金利スワップのように、各\(CashFlow_i\) が確定的と見做せるものは、\(Probability(CashFlow_i)=1\) として現在価値を計算するだけです。一方、オプションのように、\(CashFlow_i\) の発生が確定的で無い場合は、そのCash Flowの発生確率を掛けて期待値を計算し、その現在価値が価格になります。Quants Financeはまさに、このDiscount Factor と発生確率 の導出方法を探求している分野です。 

< ”実務で使える”とは >

Quants Financeの理論をもとに導出されたキャッシュフローの発生確率やDiscount Factor使って、実際に金融商品の価格を計算したり、リスク量を計測したりするには、 

  1. キャッシュフローの発生確率や、Discount Factorを計算するアルゴリズムを、プログラムでコンピューター上に実装すること。
  2. Cash Flowの金額と時期を、取引慣行や個別契約に従って、正確に計算すること

の2点が必要です。 

この2点に重点を置いた日本語の解説があまり無かったので、主にそこに注力したサイトにしたいと考えています。 

従って、想定しているAudienceは、実務でこれからデリバティブズのトレーディングやリスク管理の業務に携わろうとしている人です。従って、スワップやオプションといったデリバティブズの基本的な知識は既に持っておられるという前提です。オプションモデルから価格計算のアルゴリズムを導出するには、数値解析、確率解析、線形代数などの知識も必要になりますが、その辺は、その分野の専門書やインターネットサイトを参考にして下さい。私自身、数学の専門家ではないので、詳しい解説はその方面の専門家の方におまかせします。ここでは、数学的に厳密な証明をするのではなく、極力、直感で理解できるような解説につとめます。 

< サイトの構成 >

サイトを、基礎編、上級編、実務編に分けました。 

基礎編は、金融工学における最も基本的な概念である“金利”からスタートし、金利の期間構造、スワップ、オプション、リスク量の計測について、基本的な概念を解説しています。 

上級編と実務編は、これから順次アップしていきます。 

上級編では、様々なイールドカーブ構築方法や、オプションモデルについて、Short Rate ModelやLibor Market Modelについて、さらにクレジットデリバティブズについても解説できればと考えています。 

実務編では、オープンソースとして公開されているQuantLibを使って、Quantsモデルをプログラムに実装する方法について解説したいと考えています。QuantLibは、高度なオブジェクト指向プログラミングの手法を取り、金融商品、イールドカーブ、オプションモデル、計算アルゴリズムなどを抽象化したClass Libraryを提供しており、そこで提供されている部品(オブジェクト)を組み立てるだけで、様々な金融商品の価格計算が可能になります。また、日数計算方法や、休日の取扱いなど、実務での取引慣行もオブジェクトモデル化されており、そのまま実務でも使えるClass Libraryになっています。但し、内容を理解するには、C++、解析、線形代数、商品知識について、ある程度高いレベルの知識が必要です。 

具体的な項目は、左側のサイドバーにある目次を参照して下さい。未定稿の部分もかなりありますが、月に1~2件のペースで埋めていく予定です。 

最後に、このサイトでは日本語訳が固まっていない専門用語や概念や人物名は、基本的に英語をそのまま使っています。例えば、CalibrationとかVolatility Smile/SkewとかStochastic Volatilityとかは、英語のまま使うようにしています。下手に日本語にしても意味が判りにくくなるし、英語で馴染んだ方が、今後、英語の文献を読む時に楽になると思います。実際にネットで手に入る金融工学に関する文献のほとんどが英語なので。 

2019年2月 

< 更新:2019年3月 >

上級編、1.イールドカーブ のチャプターの内、1.1. Interpolation のセクション 1.1.1 から 1.1.7 まで追加しました。 様々なInterpolation法の内、初歩的な線形補間から、かなり高度な、Tension Spline法や、Monotone Convex Spline法、Minimalist Quadratic Interpolator法などを紹介しています。 これらは、基礎編で紹介した3種類のInterpolationの方法の内、Bootstrapping + Interpolation法の中で使われるInterpolationの方法で、生成されたイールドカーブは、デリバティブズの価格評価に使われます。 いずれの方法も、長所と短所があり、どの方法が最善かは、評価されるデリバティブズポートフォリオの特性や、原データとなるLIBORやスワップ金利といったベンチマーク商品の価格の信頼性、流動性に依存します。  

< 更新:2019年4月 >

実践編トップ 及び 実践編 1 QuantLibを使ってみる の内、1.1 インストール、 1.2.1 Exampleを試す:イントロダクション、1.2.2 EquityOption :シンプルな株式オプションの価格計算、 を追加しました。実践編は、C++言語で書かれたオープンソースライブラリであるQuantLibを中心に、金融工学で研究されている様々なモデルと価格計算アルゴリズムが、どのようにプログラムコードに落とされているかを解説します。少なくともC++のシンタックスと、オブジェクト指向プログラミングの考え方について一定レベルの知識が必要です。。 

< 更新:2019年4月 >

実践編 Implementing QuantLibの和訳の内、I Introduction、 II Financial Instruments and Pricing Enginesを追加しました。QunatLibプロジェクトの中心メンバーである、Luigi Ballaio氏の著作である”Implementing QuantLib"を、同氏の許可を得て、和訳し掲載しています。原文は、同氏のWebサイトや、LeanPubで閲覧可能です。Chapter III以降も順次掲載していきます。 

< 更新:2019年5月 >

上級編 イールドカーブーInterpolationの内、セクション "1.1.8 Turn of Year 期末越えレートの取扱い" を追加しました。これまで紹介したSmoothingを行うInterpolation法を使うと、本来ジャンプしているのが自然な期末越えのフォワードレートまで無理やりSmoothingしてしまい、かえっておかしな事になります。それを回避する為の、極めて実務的な対応方法を紹介しています。 

実践編 Implementing QuantLib の和訳の内、III Term Structuresを追加しました 

< 更新:2019年6月 >

上級編 イールドカーブ - Interpolation の ”Multi-Curve対応” を追加しました。”イントロダクション”のセクションでは、Forecasting Curve とDiscounting Curve を分ける理由、同一通貨の同一インデックスのキャッシュフローについてDiscounting Curve が複数存在する事を、どう正当化するか、Multi-Curve対応をする事による新たな課題の発生、についてまとめています。”Multi-Curvesの構築”のセクションでは、カレンシースワップやOISベーシススワップのレートを使って、どのようにDiscounting CurveとForecasting Curveを構築するかについてまとめています。 

実践編-QuantLibを使ってみるーExampleの中の ”MulticurveBootstrapping : イールドカーブの構築、およびシンプルなスワップの商品生成と時価評価”を追加しました。 この Example コードは、Index Curve と Discounting Curveを分けて、シンプルな金利スワップの価格評価を行っています。イールドカーブは、デリバティブズの価格評価にとって最も重要なパーツであり、そのパーツの構築に Example コードの大半を使っています。  

実践編ーImplementing QuantLib の和訳ーChapter IV Cash Flows and Coupons を追加しました。上記Example ”MulticurveBootstrapping”で使われている Swap Instrumentオブジェクトの主要部品である、Coupon Cash Flow について、詳細に解説されています。すべての金融商品はキャッシュフローの集合と見做せるので、このオブジェクトがどのように設計されているか理解するのは、非常に重要かと思います。 

< 更新:2019年7月 >

実践編ーImplementing QuantLib の和訳ーChapter V Parameterized models and calibration を追加しました。オプションモデルとなる確率偏微分方程式において、ドリフト項と拡散項の係数パラメータを、市場データにフィットさせる必要があるものは多数あります。その一連の操作・アルゴリズムを、QuantLibが、どのようにオブジェクトモデル化しているか、詳しく解説されています。 

実践編ーImplementing QuantLib の和訳ーChapter VI The Monte Carlo Framework を追加しました。モンテカルロシミュレーションを使ったオプション価格の導出は、直感で最も理解しやすいものの、コンピューター上で、そのシミュレーションを実行していくプロセスは、非常に複雑で、かつ計算時間がかかります。QuantLibのオブジェクトモデル・ライブラリを使って、それらを効率よく行う為のフレームワークについて解説されています。 

 

< 更新:2019年8月 >

上級編ーオプション評価法とArbitrage Pricing Theory を追加しました。 オプションの価格評価に関する基本定理(Fundamental Theory of Asset Pricing)は、どの文献を読んでも、非常に抽象的な数学の概念を使って定理を証明しており、かなり難解です。そこで使われている、証券市場モデル、Self-Financing Trading Strategy、Arbitrage Free、Attainable、といった概念を、実際の市場で起こっている現象と照らし合わせながら、実務家の人が理解しやすいように、解説してみました。ニュメレールと同値マルチンゲール測度の関係も、直感でイメージできるような説明を試みました。 この理論は、オプション理論の入り口にありながら、最初に立ちはだかる巨大な難関です。これを参考に、そこを、できるだけスムーズに突破できればと思います。 

< 更新:2019年9月 >

実践編ーImplementing QuantLib の和訳ーChapter VII The Tree Framework を追加しました。2項Treeあるいは3項Treeモデルのように、確率過程を離散的で単純化したモデルは、アメリカンオプションのように、オプション期間の途中で行使可能であったり、Callable Bondのように、満期までにクーポン期日、オプション期日など、様々なイベントが発生する場合に、極めて強力なモデルです。モデルは、確率変数の遷移先が2つあるいは3つしか無いというように、確率過程を極端に単純化しているものの、離散時間の間隔をだんだん短くしていくと、(対数)正規分布に分布収束していくので、このモデルを使って導出されるオプション価格も、実務上、十分使用に耐えるレベルの精度に収束させる事は可能です。
  このChapterは、QuantLibのなかで、Treeを使った価格計算アルゴリズムが、どのようにオブジェクトモデル化されているかを解説しています。具体的には、時間軸上の離散的な資産価格を管理するDiscretizedAssetクラスと、時間軸を遡って、その価格を計算していくアルゴリズムを提供するLatticeクラスが協働して、価格計算機能を提供しています。 

< 更新:2019年9月 >

実践編ーQuantLibを使ってみるーExample の中の"Bonds: 債券オブジェクトの構築と価格計算"を追加しました。債券オブジェクトを生成する上での重要な部品は、イールドカーブ、金利Index、クーポン支払日のスケジュール、Couponの配列、Coupon Pricerなどがあります。Exampleのコードの分析を通じて、これらの部品を、どうのうに組み立て、債券オブジェクトと価格エンジンを構築していくかが、ある程度イメージできると思います。 

 

< 更新:2019年10月 >

実践編ーImplementing QuantLib の和訳ーChapter VIII The Finite-Difference Framework 及び Chapter IX Conclusion を追加しました。

Chapter VIII で紹介されている有限差分法は、オプション価格の数値解を求める手法の中では、モンテカルロシミュレーションよりは計算時間が早く、かつ複雑なオプション行使条件を持つオプションにも柔軟に対応可能な方法で、実務でも幅広く使われています。偏微分方程式を有限差分法を使って近似解を求める方法は、かなり難解で、それをC++のプログラムコードに落とし込んだものを理解するのは、さらに難解です。有限差分法にあまり馴染みのない方は、まずそれに関する理解から始めることをお勧めします。ネットで検索すれば、簡単なものから詳細な解説まで、相当多数のサイトが発見できると思います。その後で、QuantLibのソースコードを参照しながら、本Chapterを読みすすめて下さい。 

< 更新:2019年12月 >

実践編ーImplementing QuantLib の和訳ー Appendix A: Odds and Ends 及び Appendix B: Code Conventions を追加しました。 

Appendixでは、QuantLibで使われている様々なオブジェクトモデルについて、やや詳しい解説がされています。また いくつかのデザインパターンについても解説が為されています。 

これで、一応 ーImplementing QuantLib の和訳ーは終了です。 完璧な翻訳などあり得ないので、読みにくかったり、著者の意図を正確に翻訳できなかった部分も多くあると思います。それを補う為に、訳者注として、私の解説を若干加えている部分もありますが、それでも不十分かも知れません。そういう場合は、常に原典に当たって下さい。 

また、下にあるFooterに、照会用のメールアドレスを記載していますので、ご遠慮なく質問して下さい。 

< 更新:2020年2月 >

上記編 3. 「基本的な金利オプション」を追加しました。基本的な金利オプションであるCAPとSwaptionについて、Blackモデルを使った解析解の導出方法を解説しています。金利の確率変動をモデル化する場合、無限の点の集合であるイールドカーブの確率的挙動をどのように表現するかという、非常に難しい課題があります。その課題に対応する為に、Quants Financeの世界では、Short Rate ModelファミリーとLibor Market Modelファミリーの2種類の期間構造モデルが、発展してきました。複雑なオプションであれば、価格計算に、どうしても期間構造モデルが必要になります。しかしその前に、極めてシンプルな金利オプションであれば、1個のフォワード金利の確率過程をモデル化するだけで、価格式を導出する事が可能です。いわゆるBlackモデルが、その代表的なモデルで、実務で広く使われているオプション価格式(いわゆるBlackの公式)は、Blackモデルの確率偏微分方程式から導出される解析解です。)

< 更新:2020年10月 >

前回更新から半年以上空いてしまいましたが、上級編 ”Short Rate Models”を追加しました。とりあえず、Short Rate Modelsと呼ばれるグループの概観、および、Short Rate Modelの嚆矢となったVasicekモデルについて、解説しています。 

Short Rate Modelは、イールドカーブ全体の確率過程を記述する、Term-Structureモデルです。Term-Structureモデルには、Libor Market Modelのグループと、Short Rate Modelのグループに大きく分けられます。実務で使われているTerm-Structureモデルは、圧倒的にLibor Market Modelのグループですが、Short Rate Modelのグループも、計算速度が速いというメリットがあるので、リスク管理の分野で使われるケースがあるようです。Short Rate Modelのグループは、その解析プロセスで、かなり難関な数学的テクニックを使っており、理解は容易ではありません。それもあり、主にアカデミクスで発展していったモデルです。 

今回、Short Rate Modelについて、解説しようと、文献を読み直した所、その難解な解析のプロセスを理解するのに、相当苦戦し、時間がかかってしまいました。それもあり、前回の更新から相当時間がたってしまいました。 

< 更新:2020年10月 >

Short Rate Modelの内、Hull-Whiteモデルについての解説を加えました。Hull-Whiteモデルは、Short Rate Modelの中で、最も実務で使われたモデルのひとつです。Hull-Whiteモデルは、Vasicekモデルと同様、瞬間短期金利の確率過程を、中心回帰するガウス過程と仮定しましたが、それをArbitrage Freeとなるように修正したものです。

とりあえず、モデルからゼロクーポン債価格の解析解を導出するプロセス、およびヨーロピアンオプションの価格式を導出するプロセスを解説しています。 

特に、モデルがArbitrage Freeの条件を満たすように、中心回帰レベルを決めるプロセスを解説しています。かなり難解な解析プロセスを、できるだけわかり易くなるように解説したつもりですが、読み返してみると、それでも難解でした。質問のある方は、Footerにメールアドレスを貼り付けているので、ご自由にご照会下さい。 

< 更新:2020年11月 >

Hull-Whiteモデルを使った、3項ツリーの構築を追加しました。3項ツリーを構築するアルゴリズム、特に、rの過程がArbitrage Freeとなるような調整方法を解説。さらに、3項ツリーを使ったバーミューダン・スワップションの価格計算アルゴリズムを解説しています。 

バーミューダン・スワップションは、その価格計算が複雑であるにもかかわらず、最も広範に取引されている金利デリバティブズです。金融工学が大きく発展する以前から、債券のCall OptionやPut Optionといた形で、存在していました。そもそもTerm-Structureモデルは、バーミューダン・スワップションの価格計算を目的として発達していったと言っても過言ではありません。Term-Structureモデルの中でも、Short Rate Modelは、LIBOR Market Modelと比べて、3項ツリーを使って、より簡便にバーミューダン・スワップションの価格計算ができる点が強みです。厳密な価格計算ではなく、大雑把でもいいから高速で価格やリスク量を計算する必要がある場面(VARの計算やCVAの計算など)では、Short Rate Modelが、引き続き主流を占めています。

< 更新:2020年12月 >

Hull-Whiteモデルのパラメータを、3項ツリーを使ってCalibrationする方法の解説を追加しました。Calibrationされるべきパラメータは、中心回帰強度パラメータ \(a(t)\) と、拡散係数パラメータ \(\sigma _r(t)\) になります。いずれもPiecewise Constantなパラメータと仮定すると、パラメータの数が一挙に増えるので、Calibrationの方法も、解析解を使った場合と大分変ってきます。その内、中心回帰強度パラメータについては、実務では、若干おざなりな取扱いを受けています。その辺の理由も解説しています。 

< 更新:2021年1月 >

寄り道: より複雑で表現力の高いモデルの説明へ進む前に、一旦寄り道をして、期待値の導出方法について簡単にまとめました。期待値の導出方法については、一般的に馴染みのあるのは、各確率変数に、その発生確率をかけて合計する方法です。 しかし、Affine Term Structure ModelやStochastic Volatilityモデルなどは、確率変数の分布をあえて正規分布からずらして、歪みを持たせる場合、確率密度関数が解析的に求まらない場合が殆どです。そういった場合、一般的な期待値の導出方法が使えません。そのようなモデルでは、全く別の方法で期待値を導出しています。ひとつは、ファインマン・カッツの公式を使って、特別な形の偏微分方程式の解として求める方法で、もうひとつは、特性関数をフーリエ変換、逆変換して導出する方法です。いずれも、一般には馴染みがなく、かなり難解な数学のテクニックを使っています。 Affine Term Structure ModelやStochastic Volatilityモデルの説明に移る前に、これらの期待値を導出する方法を簡単にまとめてみました。 

< 更新:2021年1月 >

久しぶりに、”実践編:QuantLibを使ってみる”で、CallableBonds.vsxprojの コード解析を追加しました。Call Option付き債券に内包しているオプションは、金利オプションとクレジットスプレッドオプションの性格を持っていますが、実務では金利オプション部分にのみ着目して、その価値を計算し、それを勘案した債券の利回り・スプレッド(OAS:Option Adjusted Spread)を計算します。一般の投資家は、通常の債券利回りと、OASを比較し、債券の割安・割高を判断します。金利オプションの価値計算には、バーミューダン型の金利オプションが計算できるアルゴリズムが必要です。このExample Codeでは、Hull-Whiteモデルによる3項Treeのアルゴリズムを使って、Call Optionの価値を計算しています。 

< 更新:2021年2月 >

”実践編:QuantLibを使ってみる”で、BermudanSwaption.vcxprojのコード解析を追加しました。ここでは、3種類のShort Rate Model(G2++、Hull-White、Black-Karasinskiモデル)を使って、バーミューダン・スワップションの価格計算を行っています。Short Rate Modelを使うには、モデルパラメータ(中心回帰レベル、中心回帰強度、Volatilityパラメータ)を、市場データにCalibrationする必要があります。前のCallableBondsの例では、適当なパラメータ値を、外生的に与えて価格計算をしていましたが、ここでは、ヨーロピアン・スワップションの市場データを用意して、それにモデルをCalibrationしてパラメータを導出しています。パラメータが特定されれば、それを使って価格計算を行います。バーミューダン・スワップションのような Exotic なデリバティブズの価格は、解析解で求まる事はまずありません。この例では、各モデルを使って、有限差分法や、3項Treeといった数値解析のアルゴリズムを使って価格計算を行っています。 

< 更新:2021年3月 >

"上級編:Short Rate Model(後編):Affine Term Structure Model"を追加しました。
Affine Term Structure Model は、瞬間短期金利の拡散過程を記述するモデルにおいて、ドリフト項係数と、拡散項係数の2乗、の関数形を、いずれも短期金利 r(t) の Affine 関数(1次関数)としています。そうする事で、ゼロクーポン債価格式が解析的に求まり、かつ r(t) がマイナスになることを回避できるようになっています。アカデミクスの世界で多くの研究論文が出されているようですが、実務では殆ど使われていないのではないかと思います。理由は、Volatility Skew の表現力は、Hull-WhiteモデルやCIRモデル(平方根過程モデル)よりは優れているものの、劇的に優れている訳では無く、一方で、パラメータが増えた為に、Calibrationプロセスが非常に複雑でやっかいになっている為かと思います。また、ゼロクーポン債価格式を導出する、解析のプロセスは、かなり難解な数学テクニックを使っており、実務家が理解するのは容易ではありません。そうではあっても、その数学的テクニック(ファインマン・カッツの公式を使って、偏微分方程式を解くことによりゼロクーポン債価格式を導出する方法など)は、他のモデルでも応用されている事もあり、それを理解するために、あえて解説を試みました。 相当難解なプロセスなので、すでにアップしている”寄り道:期待値演算の方法”も、事前にご覧下さい。 

< 更新:2021年4月 >

"上級編:Short Rate Model(後編): 対数正規型のShort Rate Model”を追加しました。対数正規型でArbitrage Free の Short Rate Modelは、Hull-Whiteモデルと同時期の1990年頃に登場し、実務でも使われていました。 Black-Derman-Toyや、それを改良したBlack-Karasinskiモデルが、ポピュラーなモデルです。Hull-Whiteモデルでは、短期金利がマイナスになる可能性があり、当時それが大きな問題として指摘されていましたが、対数正規型では、マイナス金利の可能性が排除されます。その代わり、ゼロクーポン債価格や、ヨーロピアンオプション価格の解析解が求まらず、Tree構造や有限差分法などの数値的な近似解を求めるアルゴリズムを使う必要がありました。しかし、対数正規型では、拡散係数(Volatility関数)が、金利水準 r(t) に、相互に依存する事から、Calibrationのアルゴリズムは、Hull-Whiteモデルと比べて、はるかに複雑で、計算時間も、Hull-Whiteモデルのべき乗のオーダーで大きくならざるを得ませんでした。 近年、主要先進国で、超低金利、あるいはマイナス金利が常態化し、対数正規型は、逆に市場の実態ににフィットしなくなり、現在、実務でそのままの形で使われる事は無いと思います。という事で、解説も、簡単に済ませています。

< 更新:2021年6月 >

上級編に Markov Functional Model(マルコフ汎関数モデル)を追加しました。マルコフ汎関数モデルは、他のモデルと比べると、非常にユニークな方法で、オプション価格を導出しており、私見では、そもそもこれを”モデル”と呼んでいいのか疑問です。Black-Scholes モデルや、Short Rate Model や、Libor Market Model は、すべて、市場価格や金利などの確率変数の、将来にわたる不確実な価格の変動を、確率微分方程式の形でモデル化し、それを解析(積分)する形で、将来の確率分布を導出します。さらに、その確率分布を使って、将来のキャッシュフロー(Payoff)の期待値を導出します。一方、マルコフ汎関数モデルは、オプションの対象資産となる商品の確率過程を直接記述するのではなく、基準材となるニュメレール(最長期のゼロクーポン債価格)の確率分布を使って、ニュメレールとの相対価格の期待値演算からオプション価格を求めます。また、ニュメレール価格の確率分布も、モデルを解析(積分)して求めるのではなく、ヨーロピアンオプションの市場価格に内包しているフォワード金利の確率分布から導出します。アプローチとしては、LIBOR-SWAPカーブから、Bootstrapping-Interpolation法を使って、Discount Curveや、Forward Rate Curveを求める方法に似ています。ただ、ゼロクーポン債価格(イールドカーブ)を、時間軸だけではなく、オプションのストライク軸についても求めるので、3次元空間上の曲面で求める事になります。アルゴリズムは、イールドカーブのBootstrapping-Interpolation法(相当複雑なアルゴリズムですが)よりも、遥かに複雑です。 

< 更新:2021年7月 >

”実践編:QuantLibを使ってみる”で、Gaussian1dModels.vcxprojのコード解析を追加しました。この Example コードは、ガウス Short Rate Model(Hull-Whiteモデル) と Markov Functional Model(マルコフ汎関数モデル)を使った価格エンジンで、金利オプションを対象としたバーミューダ・スワップションと、CMS を対象としたバーミューダ・スワップションの価格評価を行っています。 

< 更新:2022年1月 >

長らく更新できてませんでしたが、これからLibor Market Modelの解説をスタートします。Libor Market Modelは、Short Rate Modelのグループと対極を成すTerm Structure Modelのグループです。1990年代後半に、世に紹介されました。Libor Market Modelは、実際に観測可能なLiborのシリーズを確率変数とし、それが相関を持ちながら確率変動していく様子を、表現力豊かに記述できます。瞬間短期金利という抽象的な確率変数をモデル化したShort Rate Modelのグループより、実務家にとっては理解しやすく、またCAPやSwaptionの価格評価として広く使われているBlack Modelとも相性がよく、実務では、エキゾチックなデリバティブズの価格評価に、Libor Market Modelを使うのが主流になっています。一方で、多変数(変数の数は80~160にもなります)のモデルで、価格計算はモンテカルロシミュレーションに頼る事になり、計算時間が非常にかかるという難点を持っています。また、多くの確率変数のVolatility関数や相関係数をパラメータとして設定する必要があり、データ準備やCalibrationのプロセスなど、価格計算の為の事前準備に膨大な作業が必要となります。 さらに、当初の古典的なLibor Market Modelは、Volatility SmileやSkewなどを表現できない事と、マイナス金利に対応できない事から、今のような超低金利環境が常態化している状況下では、もはやそのままの形では使えなくなっています。 

今回は、とりあえずLibor Market Modelの簡単な紹介と、このモデルを理解する上で避けて通る事ができない”測度変換”について解説したいと思います。 

< 更新:2022年2月 >

前回紹介した、”測度変換の公式”を使って、LMMの(連立)確率微分方程式(Stochastic Differential Equations”SDE”)において、大半の LIBOR の SDE に発生するドリフト項の導出方法について、解説します。LMMは、複数個(80~160個)の確率変数の同時分布を求めるものです。その際、確率測度は複数の同値マルチンゲール測度の中から一つに特定する必要がありますが、その測度下で実際にマルチンゲールになるのは、せいぜい一個のLiborのみで、他のLiborのSDEには、ドリフト項が発生します。そのドリフト項は、測度変換の公式を使って解析的に求まります。今回は、その導出方法を解説するとともに、このドリフト項の経済的意味づけについても、解説します。 

< 更新:2022年4月 >

古典的なLibor Market Model(”LMM”)について解説します。古典的なLMMh、Liborのシリーズが、互いに相関を持ちながら、幾何ブラウン運動をする様子を表しています。LMMは、その後、Stochastic Volatility や Local Volatilityのファクターを取り入れ、Volatility Smileカーブを表現できるよう改良されていきましたが、ここでは、それらのファクターを入れず、シンプルな幾何ブラウン運動するモデルについて、解説します。古典的なLMMでは拡散項係数は、主にVolatilityの期間構造と、その時間経過による推移を表現できるように定義されています。さらに、Libor間の相関の情報も組み入れられています。Volatilityの期間構造については、ベンチマークとなるCAP/FloorやSwaptionに内包されている情報を取り出し、Volatility関数のパラメータをCalibrationします。

< 更新:2022年5月 >

古典的なLibor Market Model("LMM")は、複数のフォワードLiborが相関を持ちながら幾何ブラウン運動すると仮定するモデルですが、そのモデルの重要なファクターであるフォワードLibor間の相関行列の導出方法を解説します。その導出方法は、過去のイールドカーブデータから、統計的に求める方法と、イールドカーブスプレッドオプションの市場価格に内包されている相関の情報を取り出す方法の2通りあります。後者は、信頼のおけるスプレッドオプション価格が取得できる事が条件になりますが、限定的です。おそらく、大半の証券会社は、前者の方法を取っていると思います。過去データから、統計的に取得した相関の情報は、ノイズが相当含まれており、そのままでは使えません。これを、何等かのパラメトリックな関数を使ってスムーズ化する必要があります。さらに、LMMで必要とする相関の情報は、LMMで使われるブラウン運動の次元が3~5程度なので、過去データから得られる相関行列を、大幅にランクダウンして近似する必要があります。こういったプロセスについて、解説しています。 

< 更新:2022年6月 >

LMM のパラメータのCalibrationアルゴリズムに関する解説を追加しました。LMM のCalibrationについては、Calibration 対象となるベンチマーク商品について、考え方が大きく2つに分れています。ひとつは、Cap/Floor と Swaption の両方を広くCalibrationターゲットとして含める考え方です。もうひとつは、Cap/Floorに限定してCalibrationすべきとする考え方です。前者は、LMM で価格評価する対象の多くが、Cap/Floorの性格と、Swaptionの性格の両方を兼ね備えており、そのリスクヘッジに両方の商品を使う事が予想される事から、両方にCalibrationすべきという考え方です。後者は、そもそもLMMはLiborをモデル化したもので、Liborを対象資産とするオプションはCap/Floorのみで、Liborを対象としていないSwaptionにはCalibrationすべきで無いという考え方です。前者は、Calibration対象を広く取ることで、市場価格とモデル価格の誤差が大きくなりがちで、その結果、ヘッジ戦略がうまくいかないリスクが大きくなります。後者は、Cap/Floorについては、モデル価格と市場価格を完全に一致させる事が可能で、ヘッジ戦略がより安定しますが、LMMでSwaptionを評価しようとすると、価格乖離は前者より大きくなります。後者は、Swaptionは、Swap Market Modelで評価すべきという考え方とも結びつきます。この2つの相反する考え方は、いずれが正しいかという問題ではなく、価格評価しようとするエキゾチックデリバティブズのポートフォリオの性格を見ながら、その中間を探すような対応になると思います。 ここでは、この両者の考え方に柔軟に対応できる、Andersen-Piterbarg が紹介しているCalibrationアルゴリズムについて解説します。  

 

< 更新:2022年10月 >

Libor Market Modelのセクションに、モンテカルロシミュレーションの解説を追加しました。LMMのようなマルチファクターモデルで、ドリフト項係数やVolatility関数が複雑な関数形をとっている場合、将来の確率変数の分布を解析的に求めるのは不可能です。そのような場合、数値解を求める事になりますが、通常、有限差分法あるいはモンテカルロシミュレーションが使われます。有限差分法は、ファクター数がせいぜい2~3に限られており、かつPayoff関数が経路依存型になっていない場合に限られます。それに対し、モンテカルロシミュレーションは、ほぼすべての問題で対応可能です。モンテカルロシミュレーションの問題は、計算時間が非常にかかるという点で、金融実務で使う際、価格計算に 1 分以上かかるようでは、非常に使いづらく、10 分以上かかるようでは使い物になりません。モンテカルロシミュレーションの原理は、対数の法則と中心極限定理にあり、理屈はそれほど難しくありません。しかし、計算時間の短縮という実践的な課題への対応には、数学やIT工学の様々なテクニックが必要で、その理解は容易ではありません。今回は、そういった計算時間短縮のテクニックを中心に簡単に解説しました。 

 

< 更新:2022年12月 >

モンテカルロシミュレーション法について、離散化バイアスの発生と、その対応方法についての解説を加えました。と 

 

< 更新:2023年1月 >

モンテカルロシミュレーション法について、アメリカンタイプのオプションへの対応方法についての解説を加えました。もともとモンテカルロシミュレーションは、アメリカンタイプやバーミューダンタイプのオプションの価格評価には不向きで、それらは、有限差分法や、3項モデル、3項モデルなどの方法を使うべきとされてきました。しかし、LMM のようなマルチファクターモデルで、かつ扱う確率変数の数が最大で 80~160 にもなる場合は、逆に、有限差分法や2項モデルでは対応できません。そこで、MCSで、アメリカンタイプのオプションへも対応できるような方法がいくつか提案されてきました。特に、Longstaff-Schwartzらによって提案された回帰分析を使ったテクニックは、多様な商品に対応できるので、2000年ころから、MCSにおけるアメリカンタイプのオプションへの対応方法といて、主流になってきました。このセクションでは、それも含め、いくつかのテクニックを紹介します。 

 

< 更新:2023年4月 >

前回の更新から少し時間が空いてしまいましたが、モンテカルロシミュレーション法を使った、リスク感応度(Greeks)の計算方法についてのセクションを加えました。モンテカルロシミュレーション(MCS)を使う必要がある商品は、価格評価モデルが複雑であったり、確率変数の数が多かったりして、価格式の解析解が求まらず、かつ他の数値解の方法も使えないようなものです。そういった商品では、リスク感応度の計算もMCSに頼らざるを得ません。しかし、そのようなケースでは、確率変数の数が多かったり、パラメータの数が多かったりして、計測すべき感応度の数が非常に多くなり、非常に計算時間がかかり、実務上大きな課題になっています。しかも、MCSによる感応度計算は、推定誤差の問題があり、精確な感応度の計測は、簡単ではありません。 MCSによる感応度の計算方法は、大きく分けて3通りあります。ひとつは有限差分近似法(Finanite Difference MethodまたはPerutrbation Method)で、パラメータを少しずらして、価格を2回計算し、有限差分商を感応度の近似値として求めるものです。この方法は、非常に汎用的で、おそらく、実務で最も使われている方法かと思います。しかし、感応度の計算に時間がかかるのと、推定誤差がある点が、問題として認識されています。2つめの方法は、Path-Wise Derivative法と呼ばれているテクニックで、MCSでシミュレーションされたサンプル経路ごとに、Payoff関数をパラメータで微分し(従って、Payoff関数が確率1で微分可能である事が必要条件です。)、そのサンプル平均で、感応度を近似する方法です。この方法は、通常、有限差分商を使う方法より計算負荷が小さくて済みますが、一方で、Digital OptionやBarrier Optionのように、Payoff関数が非連続な場合は、正しい値が導出されず、使えません。3つめの方法は、Likelihood Ratio Methodと呼ばれるテクニックで、MCSでシミュレーションされたサンプル経路ごとに、確率密度関数をパラメータで微分し、それをPayoff関数に作用させて感応度を求めるテクニックです。この方法は、確率密度関数が解析的に求まるようなケースでしか使えませんが、Payoff関数が非連続であっても使えるので、Digital Optionなどにも対応可能です。LMMのように、マルチファクターモデルで、確率変数の同時確率密度関数が解析的に求まらないケースも、あるテクニックを使って近似的に確率密度関数を導出し、それを使ってLikelihood Ratio Methodを使う方法も紹介されています。  

 

< 更新:2023年10月 >

前回の更新から半年もたってしまいましたが、ようやく次のセクションの更新が終わりました。今回は、Local Volatility ModelとStochastic Volatility Modelについて解説します。これまで、Black Scholes ModelやBlack Model,あるいはShort Rate ModelやLMMなど、実務で広く使われているポピュラーなモデルについて解説してきました。これらのモデルは、基本的に、対象資産価格(あるいはインデックス)の確率分布が、正規分布あるいは対数正規分布になると仮定するものです。これらのモデルは、若干問題はあるものの、解析の容易さや、実務家での使用感の良さから、非常に強力なモデルとして、実務で幅広く使われています。その若干の問題のひとつが、実際に市場で観測される確率分布が、完全な正規分布からは歪んでおり、それを把握して、モデルとして表現できない点です。その確率分布の歪みに対応するモデルとして、1990年代に登場したのが、Local Volatility ModelやStochastic Volatility Modelになります。確率分布が、(対数)正規分布からずれた場合、確率密度関数を解析的に求めるのは非常に難しく、そういった場合に期待値をどうやって求めるのかという難題があります。DupireやHestonなどにより紹介された、初期のシンプルなLocal Volatility ModelやStochastic Volatility Modelであっても、期待値演算において、非常に難解な数学のテクニックが使われており、理解するのは容易ではありません。ここでは、これらのモデルの特徴およびヨーロピアンオプション価格導出の為の解析のテクニックについて解説します。 

 

< 更新:2023年11月 >

"実践編 : QuantLibを使ってみる"の イントロダクション、ダウンロードーインストールービルド、 及び”EquityOptionプロジェクトの解説” を、アップデートしました。
当初、このページを作成したのは、2019年頃でしたが、その後、QunatLibの新しいバージョンが、どんどん登場し、またC++の開発環境であるVisual Studio ー Viasual C++ も、新しいバージョンになってきました。特に、QunatLibの最新のバージョンでは、c++03 から c++11 への移行が進んでおり、それに合わせて、解説内容を見直しました。 特に、EquityOptionプロジェクトの解説は、自分で読み直すと、細部の解説が多すぎて非常に読みにくかったので、構成を大幅に見直しました。本文では要点を絞り、細部の説明は、Appendix:へリンクを貼って飛べるようにしました。 

 

< 更新:2023年12月 >

"実践編 : QuantLibを使ってみる"の ”MulticurveBootstrappingプロジェクトの解説” を、アップデートしました。
当初、このページを作成したのは、2019年頃でしたが、その後、QunatLibの新しいバージョンが、どんどん登場し、またC++の開発環境であるVisual Studio ー Viasual C++ も、新しいバージョンになってきました。特に、QunatLibの最新のバージョンでは、c++03 から c++11 への移行が進んでおり、それに合わせて、解説内容を見直しました。 前回の解説は、自分で読み直すと、細部の解説が多すぎて非常に読みにくかったので、構成を大幅に見直しました。本文では要点を絞り、細部の説明は、Appendix:へリンクを貼って飛べるようにしました。 

 

< 更新:2024年1月 >

"実践編 : QuantLibを使ってみる"の ”Bondsプロジェクトの解説” を、アップデートしました。
  当初2019年頃にアップしたものを、その後のQunatLibのバージョンアップにあわせて見直し、修正しました。 このプロジェクトは、QuantLibが用意している債券クラス(Bondクラス)の オブジェクトを3種類生成し、その価格や経過利息などの計算を行っています。3種類のBondクラスオブジェクトと、その主要部品であるSchedule、Coupon,Indexクラスなどについて解説しています。

目次

Page Top に戻る

// // //