Python クオンツ金融ライブラリ

クオンツ金融の分野でよく使われる Python ライブラリを学びます。例えば:

  • zipline: バックテストと取引アルゴリズムの実装に使用するライブラリ。インストールコマンド:pip install zipline。

  • Quantlib: 金融商品の価格設定と金融計算の実行に使用するライブラリ。インストールコマンド:pip install Quantlib。

  • TA-Lib: テクニカル分析のためのライブラリ。インストールコマンド:pip install TA-Lib。

  • pyfolio: ポートフォリオのパフォーマンスを評価するためのライブラリです。zipline などのバックテストツールと統合でき、ポートフォリオの収益やリスクなどの分析ツールを提供します。インストールコマンド:pip install pyfolio。

  • statsmodels: 統計モデルを推定するためのライブラリで、線形回帰、時系列分析などを含みます。クオンツ金融では、取引戦略の構築とテストに使用できます。インストールコマンド:pip install statsmodels。


zipline

zipline は、クオンツ金融の研究とアルゴリズム取引のためのオープンソースフレームワークです。

これは Quantopian 社によって開発され、研究者や開発者に、クオンツ取引戦略を構築、テスト、実行するための便利なツールを提供することを目的としています。

zipline を使用する前に、このライブラリがインストールされていることを確認してください。次のコマンドでインストールできます:

conda install -c conda-forge zipline

ここでは、Anacondazipline をインストールして、後でおかしな問題が発生するのを防ぎます。

次に、quandl公式サイトにログインして登録し、API キーを取得します:https://data.nasdaq.com/account/profile。

次に API キーを設定し、データパッケージをダウンロードします。具体的なコマンドは次のとおりです:

set QUANDL_API_KEY=your_key

macOS システムでは次のコマンドを使用します:

export QUANDL_API_KEY=your_key-zZQN

データパッケージをダウンロード:

zipline ingest -b quandl

データパッケージを確認:

# zipline bundles
csvdir <no ingestions>
quandl 2023-12-09 06:02:03.178299
quandl 2023-12-09 05:59:04.273082
quandl 2023-12-09 05:54:57.277732
quandl 2023-12-09 05:52:15.532504
quandl 2023-12-09 03:32:03.853032
quantopian-quandl <no ingestions>

それでは、zipline を使って簡単なテストを行いましょう。

以下は、株式取引のバックテストを行うための簡単な Zipline 戦略スクリプトです:

実例

from zipline.api import order, record, symbol


def initialize(context):
    pass


def handle_data(context, data):
    order(symbol('AAPL'), 10)
    record(AAPL=data.current(symbol('AAPL'), 'price'))

上記は、各取引日に現在価格で Apple 社の株式を 10 株購入し、各取引日の AAPL の現在価格を記録する単純な戦略です。

  • order(symbol('AAPL'), 10):この行は、各取引日に現在価格で Apple(AAPL)の株式を 10 株購入することを示します。symbol('AAPL')AAPL の株式シンボルを取得するために使用されます。

  • record(AAPL=data.current(symbol('AAPL'), 'price')):この行は、各取引日の AAPL の現在価格を記録することを示します。data.current(symbol('AAPL'), 'price')現在の AAPL の株価を取得するために使用されます。

次に、以下のコマンドを実行します:

# zipline run -f my_strategy.py --start 2016-1-1 --end 2018-1-1 -o buyapple_out.pickle --no-benchmark
Simulated 503 trading days
 first open: 2016-01-04 14:30:00+00:00
 last close: 2017-12-29 21:00:00+00:00

実行に成功すると、buyapple_out.pickleファイルが生成されます。私たちはpickleモジュールを使用してそれを読み取ります。

コマンドの説明:

  • zipline run:Zipline を起動してバックテストを実行します。

  • -f my_strategy.py:戦略ファイルを指定します。この例では、my_strategy.pyあなたが作成した戦略を含む Python ファイルです。

  • --start 2016-1-1と--end 2018-1-1:バックテストの開始日と終了日を指定します。この例のバックテストの期間は、2016 年 1 月 1 日から 2018 年 1 月 1 日までです。

  • -o buyapple_out.pickle:出力ファイルの名前を指定します。この例では、バックテストの結果はbuyapple_out.pickleファイルとして保存されます。このファイルには、バックテストのさまざまな出力情報(取引記録、パフォーマンス指標など)が含まれます。

  • --no-benchmark:ベンチマークを無効にします。バックテストでは、戦略のパフォーマンスを比較するために何らかのベンチマークを使用することがあります。--no-benchmarkオプションを使用して、いかなるベンチマークも使用しないことを示します。

pickle モジュールは、オブジェクトのシリアライズとデシリアライズに使用され、オブジェクトをファイルに保存したり、ファイルからオブジェクトをロードしたりするのに便利です。

以下では、buyapple_out.pickle ファイルの内容を読み取る方法を示します:

実例

import pickle

# pickle ファイルのパスを指定
pickle_file_path = 'buyapple_out.pickle'

# pickle ファイルを読み取る
with open(pickle_file_path, 'rb') as file:
    buyapple_out_data = pickle.load(file)

# 読み取ったデータを出力する
print(buyapple_out_data)

出力内容は次のようになります:

                                        period_open              period_close  short_value          pnl  long_exposure  ...  max_leverage  excess_return treasury_period_return trading_days  period_label
2016-01-04 21:00:00+00:00 2016-01-04 14:31:00+00:00 2016-01-04 21:00:00+00:00          0.0      0.00000            0.0  ...      0.000000            0.0                    0.0            1       2016-01
2016-01-05 21:00:00+00:00 2016-01-05 14:31:00+00:00 2016-01-05 21:00:00+00:00  
その他の拡張