米国株式投資のシステムトレードプラットフォームである 「Quantopian」 を使用してPythonで売買アルゴリズムを開発します。
このページでは、「Pipeline」の基本的な扱い方を学びます。
Pipelineで出来ること
- 「指標(例:X日移動平均)」を定義してデータを時系列に取得
- 条件を指定して銘柄をフィルタリング(例:株価の上昇率100銘柄を取得)>>関連記事
- 最適ポートフォリオのアロケーションを計算
Pipelineで出来る事は、主に上記3つの機能です。
この記事では、「指標(終値)」を定義し、単純にプライスを取得する簡単なPipelineを定義します。
「Pipeline」を定義して実行
それでは、まずは、空の「Pipeline」を定義して、実行しましょう。
from quantopian.pipeline import Pipeline #Pipelineの定義 def make_pipeline(): return Pipeline() #Pipelineの実行 from quantopian.research import run_pipeline result = run_pipeline( make_pipeline(), start_date='2019-04-01', end_date='2019-04-01' ) #Pipelineの実行結果を表示 result.head(10)
実行結果
結果は、「日付」と「株式銘柄」をインデックスとしたpandasの「DataFrame」となります。
先頭の10行だけ表示しましたが、実際は、8688銘柄が含まれています。
解説
簡単に、コードの解説をします。
必要なモジュールのインポート
まず、「Pipeline」作成に必要なモジュールをインポートします。
from quantopian.pipeline import Pipeline
Pipelineの定義
次に、空の「pipeline」を定義します。
「make_pipeline」という名前で定義していますが、名前は好きなもので定義する事が出来ます。
def make_pipeline(): return Pipeline()
Pipelineの実行
次に、Pipelineを実行します。実行には、「run_pipeline」をインポートする必要があります。
「make_pipeline」を「2019-4-1」から「2019-4-1」の期間で実行します。
#Pipelineの実行 from quantopian.research import run_pipeline result = run_pipeline( make_pipeline(), start_date='2019-04-01', end_date='2019-04-01' )
結果を表示
空のPipelineの先頭10行を表示します。
「日付」と「株式銘柄」をインデックスとしたpandasの「DataFrame」となります。
#Pipelineの実行結果を表示 result.head(10)
株価を取得する「Pipeline」の実行
それでは、もう少しステップアップして、1日の株価情報を取得するPipelineを実行してみましょう。
# Import Pipeline class and USEquityPricing dataset from quantopian.pipeline import Pipeline from quantopian.pipeline.data import USEquityPricing def make_pipeline(): # Get latest closing price close_price = USEquityPricing.close.latest # Return Pipeline containing latest closing price return Pipeline( columns={ 'close_price': close_price, } ) # Execute pipeline created by make_pipeline between start_date and end_date from quantopian.research import run_pipeline pipeline_output = run_pipeline( make_pipeline(), start_date='2019-04-01', end_date='2019-04-01' ) # Display tail 10 rows pipeline_output.tail(10)
先ほどと違うのは、「USEquityPricing」データセットをインポートし、「’close_price’: close_price」として値を返す様にしている所です。
実行結果
解説
必要なモジュールのインポート
終値を取得するのに、「USEquityPricing」をインポートしています。
from quantopian.pipeline.data import USEquityPricing
Pipelineの定義
「close_price」に終値を格納し、「return Pipeline」の中で「‘close_price’: close_price」として値を返す様にしている所が先ほどとの変更点です。
def make_pipeline(): # Get latest closing price close_price = USEquityPricing.close.latest # Return Pipeline containing latest closing price return Pipeline( columns={ 'close_price': close_price, } )
参考ページ(公式チュートリアル)
Pipelineで終値とセンチメントスコア(Twitter)を取得
「Quantopian」学習のオススメ講座
「Python for Financial Analysis and Algorithmic Trading 」は、Pythonで金融分析やアルゴリズムトレーディングを作成するための講座です。
世界的に有名なUdemy講師であるJose氏が、「Quontopian」について動画で解説している稀有な講座です。
例えば、「ボリンジャーバンド」を活用したトレーディングアルゴリズムを作成する事が出来ます。