レッスン2から11は、research環境で実行します。researchを利用可能な状態にするためにはJupyter notebookを新規作成するか、"Get Notebook"をクリックすることでこのレッスンのnotebookバージョンを複製することができます。 もしあなたががまだresearch環境に不慣れであれば Introduction to Research レクチャーから始めるか、 documentation に目を通しておくことをお薦めします。

2.5. パイプラインを作成する

いくつかのimport文を追加するところから始めましょう。まず始めに、 Pipeline クラスをインポートします。

from quantopian.pipeline import Pipeline

新しいセルの中で、パイプラインを作成するための関数を定義します。 関数の中にパイプラインの作成を内包することによって、後ほど紹介する、より複雑なパイプラインを構築するための土台が出来上がります。 ここで、以下の関数は単純に空のパイプラインを返します。

def make_pipeline():
    return Pipeline()

新しいセルで make_pipeline() を実行することにより、パイプラインをインスタンス化しましょう:

my_pipe = make_pipeline()

2.6. パイプラインを実行する

空のパイプラインを参照する my_pipe を作成しました。これを実行し、どのようになっているかを見てみましょう。 ただし、パイプラインを実行する前に run_pipeline をインポートする必要があります。 これは research 環境だけで使える関数で、指定した期間を通してパイプラインを実行することを可能にします。

from quantopian.research import run_pipeline

では run_pipeline を使いパイプラインを1日(2015-05-05)だけ実行してその中身を表示してみましょう。 なお、第2引数と第3引数はそれぞれシミュレーションの「開始日付」と「終了日付」です。

result = run_pipeline(my_pipe, '2015-05-05', '2015-05-05')

run_pipeline を実行すると、日付と証券でインデックスされた pandas DataFrame が返ってきます。 空のパイプラインがどのようになっているか見てみましょう。

result
2015-05-05 00:00:00+00:00 Equity(2 [AA])
Equity(21 [AAME])
Equity(24 [AAPL])
Equity(25 [AA_PR])
Equity(31 [ABAX])
Equity(39 [DDC])
Equity(41 [ARCB])
Equity(52 [ABM])
Equity(53 [ABMD])
Equity(62 [ABT])
Equity(64 [ABX])
Equity(66 [AB])
Equity(67 [ADSK])
Equity(69 [ACAT])
Equity(70 [VBF])
Equity(76 [TAP])
Equity(84 [ACET])
Equity(86 [ACG])
Equity(88 [ACI])
Equity(100 [IEP])
Equity(106 [ACU])
Equity(110 [ACXM])
Equity(112 [ACY])
Equity(114 [ADBE])
Equity(117 [AEY])
Equity(122 [ADI])
Equity(128 [ADM])
Equity(134 [SXCL])
Equity(149 [ADX])
Equity(153 [AE])
...
Equity(48961 [NYMT_O])
Equity(48962 [CSAL])
Equity(48963 [PAK])
Equity(48969 [NSA])
Equity(48971 [BSM])
Equity(48972 [EVA])
Equity(48981 [APIC])
Equity(48989 [UK])
Equity(48990 [ACWF])
Equity(48991 [ISCF])
Equity(48992 [INTF])
Equity(48993 [JETS])
Equity(48994 [ACTX])
Equity(48995 [LRGF])
Equity(48996 [SMLF])
Equity(48997 [VKTX])
Equity(48998 [OPGN])
Equity(48999 [AAPC])
Equity(49000 [BPMC])
Equity(49001 [CLCD])
Equity(49004 [TNP_PRD])
Equity(49005 [ARWA_U])
Equity(49006 [BVXV])
Equity(49007 [BVXV_W])
Equity(49008 [OPGN_W])
Equity(49009 [PRKU])
Equity(49010 [TBRA])
Equity(49131 [OESX])
Equity(49259 [ITUS])
Equity(49523 [TLGT])

8236 rows × 0 columns

空のパイプラインは列データを持たないDataFrameを出力しています。今回の場合、パイプラインは2015年5月5日に対して8000超(上の表では途中中断) の証券からなるインデックスを持っていますが、列データを何も持っていません。

以降のレッスンでは、パイプラインの出力に対してどのように列を追加していくのか、どのようにフィルタをかけて証券を絞り込んでいくのかをみていきます。