さまざまな分野で威力を発揮するPythonは、ファイナンスの分野でも重要なテクノロジーとして急成長を遂げています。本書は、Pythonを使った金融工学の初歩的な基本事項からアルゴリズム取引やデリバティブ分析までカバーし、必要なプログラミング、機械学習や深層学習を利用したデータ分析、統計などについて、数理と実用面から詳しく解説します。「データ駆動型アプローチ」と「AIファーストファイナンス」を軸に、これからのファイナンスに必要な戦略と実践力を体得できることを目的とします。
Pythonによるファイナンス 第2版
―データ駆動型アプローチに向けて
Yves Hilpisch 著、黒川 利明 訳、中妻 照雄 技術監修
- TOPICS
- Programming , Database , Python
- 発行年月日
- 2019年12月
- PRINT LENGTH
- 656
- ISBN
- 978-4-87311-890-1
- 原書
- Python for Finance, 2nd Edition
- FORMAT
- Print PDF
目次
目次 日本語版まえがき まえがき 第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 クラスの使用法 訳者あとがき 索引