Pythonによるファイナンス 第2版

―データ駆動型アプローチに向けて

[cover photo]
TOPICS
Programming , Database , Python
発行年月日
PRINT LENGTH
656
ISBN
978-4-87311-890-1
原書
Python for Finance, 2nd Edition
FORMAT
Print PDF
Ebook
4,950円
Ebookを購入する
Print
4,950円

さまざまな分野で威力を発揮するPythonは、ファイナンスの分野でも重要なテクノロジーとして急成長を遂げています。本書は、Pythonを使った金融工学の初歩的な基本事項からアルゴリズム取引やデリバティブ分析までカバーし、必要なプログラミング、機械学習や深層学習を利用したデータ分析、統計などについて、数理と実用面から詳しく解説します。「データ駆動型アプローチ」と「AIファーストファイナンス」を軸に、これからのファイナンスに必要な戦略と実践力を体得できることを目的とします。

目次

目次

日本語版まえがき
まえがき

第1部  Pythonとファイナンス

1章 なぜファイナンスにPythonを使うのか
    1.1 プログラミング言語Python
        1.1.1 Pythonの大まかな歴史
        1.1.2 Pythonエコシステム
        1.1.3 Pythonのユーザ層
        1.1.4 科学スタック
    1.2 ファイナンスにおけるITテクノロジー
        1.2.1 ITテクノロジーコスト
        1.2.2 エネーブラーとしてのITテクノロジー
        1.2.3 参入障壁としてのテクノロジーと人材
        1.2.4 限りなく増加する速度、頻度、データ量
        1.2.5 リアルタイム分析の勃興
    1.3 ファイナンスのためのPython
        1.3.1 ファイナンスとPythonの構文
        1.3.2 Pythonによる効率と生産性
        1.3.3 プロトタイプからプロダクションへ
    1.4 データ駆動型ファイナンスとAIファーストファイナンス
        1.4.1 データ駆動型ファイナンス
        1.4.2 AIファーストファイナンス
    1.5 結論
    1.6 さらに学ぶために

2章 Pythonインフラストラクチャ
    2.1 パッケージマネージャconda
        2.1.1 Minicondaのインストール
        2.1.2 condaの基本操作
    2.2 仮想環境マネージャとしてのconda
    2.3 Dockerコンテナを使う
        2.3.1 Dockerイメージとコンテナ
        2.3.2 UbuntuのPython Dockerイメージを作る
    2.4 クラウドインスタンスを使う
        2.4.1 RSA公開/秘密鍵
        2.4.2 Jupyter Notebook設定ファイル
        2.4.3 PythonとJupyter Notebookのインストールスクリプト
        2.4.4 Dropletのセットアップのオーケストレーションスクリプト
    2.5 結論
    2.6 さらに学ぶために

第2部 基本の習得

3章 データ型とデータ構造
    3.1 基本データ型
        3.1.1 整数
        3.1.2 float(浮動小数点数)
        3.1.3 ブール値(真偽値、論理値)
        3.1.4 文字列
        3.1.5 トピックス:フォーマット出力
        3.1.6 トピックス:正規表現
    3.2 基本データ構造
        3.2.1 タプル
        3.2.2 リスト
        3.2.3 トピックス:制御構造
        3.2.4 トピックス:関数型プログラミング
        3.2.5 dict(辞書)
        3.2.6 set(集合)
    3.3 結論
    3.4 さらに学ぶために

4章 NumPyによる数値計算
    4.1 データ配列
        4.1.1 Pythonのリストによる配列
        4.1.2 Pythonの配列クラス
    4.2 通常のNumPy配列
        4.2.1 基本操作
        4.2.2 多次元配列
        4.2.3 メタ情報
        4.2.4 形とサイズの変更
        4.2.5 ブール値配列
        4.2.6 速度の比較
    4.3 NumPyの構造化配列
    4.4 ベクトル化コード
        4.4.1 基本のベクトル化
        4.4.2 メモリ配置
    4.5 結論
    4.6 さらに学ぶために

5章 pandasによるデータ分析
    5.1 DataFrameクラス
        5.1.1 DataFrameクラスの第1ステップ
        5.1.2 DataFrameクラスの第2ステップ
    5.2 基本的な分析
    5.3 基本的な可視化
    5.4 Seriesクラス
    5.5 GroupBy演算
    5.6 複合選択
    5.7 連結、結合、マージ
        5.7.1 連結
        5.7.2 結合
        5.7.3 マージ
    5.8 性能について
    5.9 結論
    5.10 さらに学ぶために

6章 オブジェクト指向プログラミング
    6.1 Pythonオブジェクトのオブジェクト指向
        6.1.1int 
        6.1.2list 
        6.1.3 ndarray
        6.1.4 DataFrame
    6.2 Pythonクラスの基本
    6.3 Pythonデータモデル
    6.4 Vectorクラス
    6.5 結論
    6.6 さらに学ぶために

第3部 金融データサイエンス

7章 データ可視化
    7.1 静的2Dプロット
        7.1.1 1次元データセット
        7.1.2 2次元データセット
        7.1.3 他のプロットスタイル
    7.2 静的3Dプロット
    7.3 インタラクティブ2Dプロット
        7.3.1 基本プロット
        7.3.2 ファイナンスのプロット
    7.4 結論
    7.5 さらに学ぶために

8章 金融時系列データ
    8.1 金融データ
        8.1.1 データのインポート
        8.1.2 要約統計量
        8.1.3 時間の経過に伴う変化
        8.1.4 リサンプリング
    8.2 ローリング統計
        8.2.1 概観
        8.2.2 テクニカル分析の例
    8.3 相関分析
        8.3.1 データ
        8.3.2 対数収益率
        8.3.3 OLS回帰
        8.3.4 相関
    8.4 高頻度データ
    8.5 結論
    8.6 さらに学ぶために

9章 入出力操作
    9.1 Pythonの基本I/O
        9.1.1 ディスクへのオブジェクト書き出し
        9.1.2 テキストファイルの読み書き
        9.1.3 SQLデータベースの処理
        9.1.4 NumPy配列の読み書き
    9.2 pandasのI/O
        9.2.1 SQLデータベースの処理
        9.2.2 SQLからpandasへの変換
        9.2.3 CSVファイルの処理
        9.2.4 Excelファイルの処理
    9.3 PyTablesを使ったI/O
        9.3.1 テーブル処理
        9.3.2 圧縮テーブルの処理
        9.3.3 配列の処理
        9.3.4 メモリ外計算
    9.4 TsTablesのI/O
        9.4.1 サンプルデータ
        9.4.2 データストレージ
        9.4.3 データの取得
    9.5 結論
    9.6 さらに学ぶために

10章 高性能Python
    10.1 ループ
        10.1.1 Python
        10.1.2 NumPy
        10.1.3Numba 
        10.1.4 Cython
    10.2 アルゴリズム
        10.2.1 素数
        10.2.2 フィボナッチ数
        10.2.3 円周率
    10.3 二項ツリー
        10.3.1 Python
        10.3.2 NumPy
        10.3.3Numba 
        10.3.4 Cython
    10.4 モンテカルロシミュレーション
        10.4.1 Python
        10.4.2 NumPy
        10.4.3Numba 
        10.4.4 Cython
        10.4.5 マルチプロセス
    10.5 再帰pandasアルゴリズム
        10.5.1 Python
        10.5.2Numba 
        10.5.3 Cython
    10.6 結論
    10.7 さらに学ぶために

11章 数学ツール
    11.1 近似
        11.1.1 回帰
        11.1.2 補間

    11.2 凸最適化
        11.2.1 大域最適化
        11.2.2 局所最適化
        11.2.3 制約付き最適化
    11.3 積分
        11.3.1 数値積分
        11.3.2 シミュレーション積分
    11.4 記号計算
        11.4.1 基本
        11.4.2 方程式
        11.4.3 微積分
        11.4.4 微分
    11.5 結論
    11.6 さらに学ぶために

12章 ストキャスティクス
    12.1 乱数
    12.2 シミュレーション
        12.2.1 確率変数
        12.2.2 確率過程
        12.2.3 分散減少法
    12.3 評価
        12.3.1 ヨーロピアンオプション
        12.3.2 アメリカンオプション
    12.4 リスク尺度
        12.4.1 バリューアットリスク(VaR)
        12.4.2 信用評価調整
    12.5 Pythonスクリプト
    12.6 結論
    12.7 さらに学ぶために

13章 統計
    13.1 正規性検定
        13.1.1 ベンチマークケース
        13.1.2 実世界データ
    13.2 ポートフォリオ最適化
        13.2.1 データ
        13.2.2 基本理論
        13.2.3 最適ポートフォリオ
        13.2.4 効率的フロンティア
        13.2.5 資本市場線
    13.3 ベイズ統計
        13.3.1 ベイズの公式
        13.3.2 ベイズ回帰
        13.3.3 2つの金融商品
        13.3.4 時間の経過に伴う推定更新
    13.4 機械学習
        13.4.1 教師なし学習
        13.4.2 教師あり学習
    13.5 結論
    13.6 さらに学ぶために

第4部 アルゴリズム取引

14章 FXCMトレーディングプラットフォーム
    14.1 開始
    14.2 データの取得
        14.2.1 ティックデータの取得
        14.2.2 ローソク足データの取得
    14.3 APIを使う
        14.3.1 過去のデータの取得
        14.3.2 ストリームデータの取得
        14.3.3 発注
        14.3.4 口座情報
    14.4 結論
    14.5 さらに学ぶために

15章 取引戦略
    15.1 単純移動平均
        15.1.1 データインポート
        15.1.2 取引戦略
        15.1.3 ベクトル化バックテスト
        15.1.4 最適化
    15.2 ランダムウォーク仮説
    15.3 線形最小二乗法
        15.3.1 データ
        15.3.2 回帰
    15.4 クラスタリング
    15.5 頻度アプローチ
    15.6 分類
        15.6.1 2つの二値特徴量
        15.6.2 5つの二値特徴量
        15.6.3 5つの離散化特徴量
        15.6.4 逐次訓練と試験の分離
        15.6.5 ランダム訓練と試験の分離
    15.7 深層ニューラルネットワーク
        15.7.1 scikit-learnのDNN
        15.7.2 TensorFlowのDNN
    15.8 結論
    15.9 さらに学ぶために

16章 自動取引
    16.1 資本管理
        16.1.1 二項設定のケリー基準
        16.1.2 株式と指数のケリー基準
    16.2 機械学習に基づいた取引戦略
        16.2.1 ベクトル化バックテスト
        16.2.2 最適レバレッジ
        16.2.3 リスク分析
        16.2.4 モデルオブジェクトの永続化
    16.3 オンラインアルゴリズム
    16.4 インフラストラクチャと運用
    16.5 ロギングと監視
    16.6 結論
    16.7 Pythonスクリプト
        16.7.1 自動取引戦略
        16.7.2 戦略監視
    16.8 さらに学ぶために

第5部 デリバティブ分析

17章 評価フレームワーク
    17.1 資産価格付けの基本定理
        17.1.1 簡単な例
        17.1.2 一般的な結果
    17.2 リスク中立割引
        17.2.1 日付のモデル化と処理
        17.2.2 定数短期金利
    17.3 市場環境
    17.4 結論
    17.5 さらに学ぶために

18章 ファイナンスモデルのシミュレーション
    18.1 乱数の生成
    18.2 ジェネリックシミュレーションクラス
    18.3 幾何ブラウン運動
        18.3.1 シミュレーションクラス
        18.3.2 ユースケース
    18.4 ジャンプ拡散
        18.4.1 シミュレーションクラス
        18.4.2 ユースケース
    18.5 平方根拡散
        18.5.1 シミュレーションクラス
        18.5.2 ユースケース
    18.6 結論
    18.7 さらに学ぶために

19章 デリバティブ評価
    19.1 ジェネリック評価クラス
    19.2 ヨーロピアンタイプ
        19.2.1 評価クラス
        19.2.2 ユースケース
    19.3 アメリカンタイプ
        19.3.1 最小二乗モンテカルロ
        19.3.2 評価クラス
        19.3.3 ユースケース
    19.4 結論
    19.5 さらに学ぶために

20章 ポートフォリオ評価
    20.1 デリバティブポジション
        20.1.1 クラス
        20.1.2 ユースケース
    20.2 デリバティブポートフォリオ
        20.2.1 クラス
        20.2.2 ユースケース
    20.3 結論
    20.4 さらに学ぶために

21章 市場に基づいた評価
    21.1 オプションデータ
    21.2 モデルキャリブレーション
        21.2.1 該当市場データ
        21.2.2 オプションのモデル化
        21.2.3 キャリブレーション手続き
    21.3 ポートフォリオ評価
        21.3.1 オプションポジションのモデル化
        21.3.2 オプションポートフォリオ
    21.4 Pythonコード
    21.5 結論
    21.6 さらに学ぶために

付録A 日付と時刻
    A.1 Python
    A.2 NumPy
    A.3 pandas

付録B BSMオプションクラス
    B.1 クラス定義
    B.2 クラスの使用法

訳者あとがき
索引