『Pythonによるファイナンス 第2版』の著者が、アルゴリズムトレードを始める上で必要な自動売買の基礎と、機械学習を本格的に導入するために必要なPythonの知識について解説します。具体的には、アルゴリズムトレード用の適切なPython環境の設定、データの取得、NumPy/pandasを使ったデータ分析、トレード戦略のバックテスト、市場予測、ストリーミングのリアルタイム処理等、アルゴリズムトレードのさまざまな側面にPythonを適用するさまざまな手法を紹介し、自動トレード戦略を効率よく構築、デプロイするために、どのような選択肢があるのかを提示します。本書で利用したサンプルコードはGitHubから利用可能です。
Pythonからはじめるアルゴリズムトレード
―自動売買の基礎と機械学習の本格導入に向けたPythonプログラミング
Yves Hilpisch 著、村上 振一郎 訳
- TOPICS
- Python
- 発行年月日
- 2022年04月
- PRINT LENGTH
- 368
- ISBN
- 978-4-87311-979-3
- 原書
- Python for Algorithmic Trading
- FORMAT
- Print PDF EPUB
目次
まえがき 1章 Pythonとアルゴリズムトレード 1.1 Pythonによるファイナンス 1.1.1 Pythonと擬似コード 1.1.2 NumPyとベクトル化 1.1.3 pandasとDataFrameクラス 1.2 アルゴリズムトレード 1.3 アルゴリズムトレードのためのPython 1.4 焦点と前提条件 1.5 トレード戦略 1.5.1 単純移動平均 1.5.2 モメンタム 1.5.3 平均回帰 1.5.4 機械学習と深層学習 1.6 まとめ 1.7 参考文献 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 参考文献 3章 金融データの処理 3.1 異なるデータソースから金融データを読み取る 3.1.1 データセット 3.1.2 Pythonを使ってCSVファイルを読み込む 3.1.3 pandasを使用してCSVファイルを読み込む 3.1.4 ExcelとJSONにエクスポートする 3.1.5 ExcelとJSONから読み込む 3.2 オープンデータソースの使用 3.3 Eikon Data API 3.3.1 構造化されたヒストリカルデータを取得する 3.3.2 構造化されていないヒストリカルデータを取得する 3.4 金融データを効率的に保存する 3.4.1 DataFrameオブジェクトを保存する 3.4.2 TsTablesの使用 3.4.3 SQLite3を使用してデータを保存する 3.5 結論 3.6 参考文献 3.7 Pythonスクリプト 4章 ベクトル化バックテストの習得 4.1 ベクトル化の利用 4.1.1 NumPyを使用したベクトル化 4.1.2 pandasを使用したベクトル化 4.2 単純移動平均を用いた戦略 4.2.1 基本を押さえる 4.2.2 アプローチの一般化 4.3 モメンタム戦略 4.3.1 基本を押さえる 4.3.2 アプローチの一般化 4.4 平均回帰戦略 4.4.1 基本を押さえる 4.4.2 アプローチの一般化 4.5 データスヌーピングとオーバーフィッティング 4.6 結論 4.7 参考文献・参考情報 4.8 Pythonスクリプト 4.8.1 SMA戦略のバックテストクラス 4.8.2 モメンタム戦略のバックテストクラス 4.8.3 平均回帰戦略のバックテストクラス 5章 機械学習を用いたマーケットの動きの予測 5.1 マーケット予測のための線形回帰の使用 5.1.1 線形回帰のおさらい 5.1.2 価格予測の基本的な考え方 5.1.3 指数の水準の予測 5.1.4 将来のリターンの予測 5.1.5 将来のマーケットの方向性を予測する 5.1.6 回帰に基づいた戦略のベクトル化バックテスト 5.1.7 アプローチの一般化 5.2 マーケットの動きを予測するために機械学習を使用する 5.2.1 scikit-learnを用いた線形回帰 5.2.2 簡単な分類問題 5.2.3 ロジスティック回帰を利用したマーケットの方向性の予測 5.2.4 アプローチの一般化 5.3 深層学習を利用したマーケットの動きの予測 5.3.1 単純な分類問題の再検討 5.3.2 ディープニューラルネットワークを使ってマーケットの方向性を予測する 5.3.3 異なるタイプの特徴量の追加 5.4 結論 5.5 参考文献・参考情報 5.6 Pythonスクリプト 5.6.1 線形回帰のバックテストクラス 5.6.2 分類アルゴリズムのバックテストクラス 6章 イベントベース・バックテストのためのクラスの作成 6.1 バックテストの基底クラス 6.2 ロングオンリーのバックテストクラス 6.3 ロングショートのバックテストクラス 6.4 結論 6.5 参考文献・参考情報 6.6 Pythonスクリプト 6.6.1 バックテストの基底クラス 6.6.2 ロングオンリーのバックテストクラス 6.6.3 ロングショートバックテストクラス 7章 リアルタイムデータとソケットを扱う 7.1 簡易ティックデータサーバの実行 7.2 簡易ティックデータクライアントとの接続 7.3 リアルタイムでのシグナル生成 7.4 Plotlyによるストリーミングデータの可視化 7.4.1 基礎知識 7.4.2 3つのリアルタイムストリーム 7.4.3 3つのストリームのための3つのサブプロット 7.4.4 ストリーミングデータを棒グラフで表示 7.5 結論 7.6 参考文献・参考情報 7.7 Pythonスクリプト 7.7.1 サンプルのティックデータサーバ 7.7.2 ティックデータクライアント 7.7.3 モメンタムオンラインアルゴリズム 7.7.4 バープロットのためのサンプルデータサーバ 8章 OandaでのCFDトレード 8.1 アカウントの作成 8.2 Oanda API 8.3 ヒストリカルデータの取得 8.3.1 トレード可能な商品の検索 8.3.2 分足でのモメンタム戦略のバックテスト 8.3.3 レバレッジと証拠金におけるファクタリング 8.4 ストリーミングデータを扱う 8.5 成行注文を出す 8.6 トレード戦略をリアルタイムで実行する 8.7 アカウント情報の取得 8.8 結論 8.9 参考文献・参考情報 8.10 Pythonスクリプト 9章 FXCMでのFXトレード 9.1 はじめに 9.2 データの取得 9.2.1 ティックデータの取得 9.2.2 ローソク足データの取得 9.3 APIの使用 9.3.1 ヒストリカルデータの取得 9.3.2 ストリーミングデータの取得 9.3.3 発注 9.3.4 アカウント情報 9.4 結論 9.5 参考文献・参考情報 10章 トレードオペレーションの自動化 10.1 資産管理 10.1.1 二項設定でのケリー基準 10.1.2 株式と指数に対するケリー基準 10.2 機械学習を用いたトレード戦略 10.2.1 ベクトル化バックテスト 10.2.2 最適レバレッジ 10.2.3 リスク分析 10.2.4 モデルオブジェクトの永続化 10.3 オンラインアルゴリズム 10.4 インフラストラクチャと運用 10.5 ロギングと監視 10.6 スクリーンショットを用いた各手順の通覧 10.6.1 Oandaアカウントの設定 10.6.2 ハードウェアのセットアップ 10.6.3 Python環境のセットアップ 10.6.4 コードのアップロード 10.6.5 コードの実行 10.6.6 リアルタイム監視 10.7 結論 10.8 参考文献・参考情報 10.9 Pythonスクリプト 10.9.1 自動トレード戦略 10.9.2 戦略の監視 付録A Python、NumPy、Matplotlib、pandas A.1 Pythonの基礎 A.1.1 データ型 A.1.2 データ構造 A.1.3 制御構造 A.1.4 Pythonのイディオム A.2 NumPy A.2.1 通常のndarrayオブジェクト A.2.2 ベクトル化演算 A.2.3 ブール演算 A.2.4 ndarrayメソッドとNumPy関数 A.2.5 ndarrayの作成 A.2.6 乱数 A.3 Matplotlib A.4 pandas A.4.1 DataFrameクラス A.4.2 数値演算 A.4.3 データの抽出 A.4.4 ブール演算 A.4.5 pandasを使ったプロット A.4.6 入出力 A.5 ケーススタディ A.6 結論 A.7 参考文献 索引