はじめに

最新更新情報へ

< サイト開設の動機 >

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モデルの確率偏微分方程式から導出される解析解です。)

 

 

 

 

 

 

 

目次

Page Top に戻る

// // //