【感想あり】ファイナンスに興味ある人がC++プログラミングを独学するのにおすすめの本【随時更新】

はじめに

本記事では、プログラミング言語のC++を学ぶのにおすすめの本を紹介する。

C++は実行速度が速いことから現在もクオンツ業務の現場でよく使われている。

今回は初心者向けから金融工学に興味のある方向けまで、いろんなコンセプトのおすすめ本を紹介する。

[1]

新・これならわかるC++

これならわかるC++―挫折しないプログラミング入門 CD-ROM付 (ブルーバックス)

初心者の1冊目におすすめなのがこちら。

  • オブジェクト指向、テンプレート、ポインタなど、重要な文法に焦点を絞って解説している。
  • シンプルなサンプルコードを使ってわかりやすく説明されており、初心者でも挫折しにくいはず。
  • 文法を網羅的に解説しているわけではないが、自分の手でコードを書いて、動くプログラムを作成することで学んでいける。
  • 特に初心者は、文法を網羅的に解説している分厚い本で学ぶのは、絶対に避けるべきである。この本のようにコンパクトな教材を使い、コードは短いがきちんと動くプログラムを、とにかくたくさん作る、というのが大事だ。
  • 新版が出ているようだが、いずれにせよ内容は古典的なものなので、旧版を買っても特に問題はないだろう。

[2]

ロベールのC++入門講座

C++の書籍の中でも非常に有名な本がこちら。

  • サンプルコードがなぜそのような挙動をするのか、という背後の仕組みを丁寧に解説している
  • まずは1冊目の本で、とにかく動くプログラムをいくつも作り、だいたいの雰囲気がわかった人が、それぞれの文法の仕組みを理解するために、2冊目以降でこの本を読むのがよい
  • 文法が網羅的に解説されている分厚い本なので、読破するというよりはつまみ食いで読んでいくのが現実的だろう。
  • この本の元になっているWebサイト「ロベールのC++教室」というものがあり、興味のある人はまずこちらのサイトを見てみると良いだろう。サイトにおいても説明が小分けにページ分けされていて、各ページの最初と最後に要点がまとまっているのがよい。Webサイト版が自分に合いそうなら、体系的に詳しくまとまっている書籍版を買うことを検討する、という感じで良いだろう
  • 文法の理屈を説明している本なので、初心者が1冊目に読む本ではない

[3]

Numerical Methods in Finance with C++ (Mastering Mathematical Finance)

デリバティブ評価の数値計算プログラムを書きながらC++の文法を解説している入門書。特に新人クオンツには強くおすすめする。

  • サンプルコードの重要な行に番号がふってあり、その下の解説パートで各番号に対してコードの説明が書いてある。コードのどこで何をやっているのかがわかりやすい
  • 実務ですぐ必要となるような、優先順位の高い文法に絞って解説している。実務で最低限必要な内容を最短ルートで学べるはずだ。
  • 内容は、二項ツリーとアメリカンオプション、非線型方程式ソルバーとインプライドボラティリティ、モンテカルロ法と経路依存バスケットオプション、PDE解法とアメリカンオプションなど。
  • デリバティブ評価の数値解法も同時に学びたい人にはおすすめ。逆にデリバティブ評価に興味ない人にはおすすめしない

[4]

C++ Design Patterns and Derivatives Pricing (Mathematics, Finance and Risk)

こちらはMark Joshiによる名著。同僚の外人クオンツはたいていこれを持っていて、かつ、かなり読み込んでいるようだ。

  • [3]と同様のコンセプトで取り扱っているトピックも[3]と似ている。デリバティブ評価のプログラムを書きながらC++を学んでいこう、というもの
  • 特徴は、C++の文法だけではなく、デザインパターンも学べるという点。デザインパターンは、プログラムをよりよく設計するための「型」であり、どのプログラミング言語にも応用できる汎用的な知識である。
  • 説明の仕方は、入門者向けというよりは、ある程度C++を書いたことのある人向け、という印象。ざっくり全体像がわかる入門書を1冊目で読んだ後、2冊目以降でこの本を読むと、なるほどと腹落ちする箇所が多い

まとめ

  • 今回はC++を学ぶのにおすすめの本を紹介した。
  • 初心者の1冊目としては[1]が挫折しにくいので良いだろう。
  • 簡単な入門書でC++の学習経験がある人がステップアップする場合は、[2]をつまみ食いでも良いので少しずつ進めるとよい。
  • デリバティブ評価にも興味がある人は、[3], [4]がおすすめ。C++の入門者であれば[3]が良いだろう。

こちらの記事もおすすめ