ファクターの結合 ------------------------- ファクターは組込み数学演算子(+、-、\*など)のいずれかを使い、別のファクターやスカラ値と結合できます。 これにより、複数のファクターを結合させた複雑な式を簡単にかけます。 例えば2つの異なるファクターの平均を取るファクターの作成はシンプルに: :: >>> f1 = SomeFactor(...) >>> f2 = SomeOtherFactor(...) >>> average = (f1 + f2) / 2.0 と書けます。 このレッスンでは、10日間平均ファクターと30日間平均ファクターを組み合わせた ``relative_difference`` ファクターを計算するパイプラインを作成します。 いつもと同じく、import文から始めます: .. code:: ipython2 from quantopian.pipeline import Pipeline from quantopian.research import run_pipeline from quantopian.pipeline.data.builtin import USEquityPricing from quantopian.pipeline.factors import SimpleMovingAverage 今回は、10日間移動平均と30日間移動平均の2つのファクターが必要です: .. code:: ipython2 mean_close_10 = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=10) mean_close_30 = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=30) では、``mean_close_30`` ファクターと ``mean_close_10`` ファクターを使って相対変化( ``percent_difference`` )を計算するファクターを作成します。 .. code:: ipython2 percent_difference = (mean_close_10 - mean_close_30) / mean_close_30 この例を見ると、 ``percent_difference`` はより単純なファクターの組み合わせによって構成されていますが、依然として ``Factor`` です。 ``percent_difference`` をパイプラインの列として追加できます。 それでは ``percent_difference`` を列に持つ(終値平均を計算するファクターは列に加えません)パイプラインを作成する ``make_pipeline`` を定義しましょう: .. code:: ipython2 def make_pipeline(): mean_close_10 = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=10) mean_close_30 = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=30) percent_difference = (mean_close_10 - mean_close_30) / mean_close_30 return Pipeline( columns={ 'percent_difference': percent_difference } ) 新しい出力がどのようになっているか確認します: .. code:: ipython2 result = run_pipeline(make_pipeline(), '2015-05-05', '2015-05-05') result .. raw:: html
percent_difference | ||
---|---|---|
2015-05-05 00:00:00+00:00 | Equity(2 [AA]) | 0.017975 |
Equity(21 [AAME]) | -0.002325 | |
Equity(24 [AAPL]) | 0.016905 | |
Equity(25 [AA_PR]) | 0.021544 | |
Equity(31 [ABAX]) | -0.019639 | |
Equity(39 [DDC]) | 0.074730 | |
Equity(41 [ARCB]) | 0.007067 | |
Equity(52 [ABM]) | 0.003340 | |
Equity(53 [ABMD]) | -0.024682 | |
Equity(62 [ABT]) | 0.014385 | |
Equity(64 [ABX]) | 0.046963 | |
Equity(66 [AB]) | 0.013488 | |
Equity(67 [ADSK]) | -0.003921 | |
Equity(69 [ACAT]) | -0.007079 | |
Equity(70 [VBF]) | 0.005507 | |
Equity(76 [TAP]) | -0.008759 | |
Equity(84 [ACET]) | -0.056139 | |
Equity(86 [ACG]) | 0.010096 | |
Equity(88 [ACI]) | -0.022089 | |
Equity(100 [IEP]) | 0.011293 | |
Equity(106 [ACU]) | 0.003306 | |
Equity(110 [ACXM]) | -0.029551 | |
Equity(112 [ACY]) | -0.057763 | |
Equity(114 [ADBE]) | 0.009499 | |
Equity(117 [AEY]) | 0.012543 | |
Equity(122 [ADI]) | 0.009271 | |
Equity(128 [ADM]) | 0.015760 | |
Equity(134 [SXCL]) | NaN | |
Equity(149 [ADX]) | 0.007232 | |
Equity(153 [AE]) | -0.112999 | |
... | ... | |
Equity(48961 [NYMT_O]) | NaN | |
Equity(48962 [CSAL]) | 0.000000 | |
Equity(48963 [PAK]) | 0.000000 | |
Equity(48969 [NSA]) | 0.000000 | |
Equity(48971 [BSM]) | 0.000000 | |
Equity(48972 [EVA]) | 0.000000 | |
Equity(48981 [APIC]) | 0.000000 | |
Equity(48989 [UK]) | 0.000000 | |
Equity(48990 [ACWF]) | 0.000000 | |
Equity(48991 [ISCF]) | 0.000000 | |
Equity(48992 [INTF]) | 0.000000 | |
Equity(48993 [JETS]) | 0.000000 | |
Equity(48994 [ACTX]) | 0.000000 | |
Equity(48995 [LRGF]) | 0.000000 | |
Equity(48996 [SMLF]) | 0.000000 | |
Equity(48997 [VKTX]) | 0.000000 | |
Equity(48998 [OPGN]) | NaN | |
Equity(48999 [AAPC]) | 0.000000 | |
Equity(49000 [BPMC]) | 0.000000 | |
Equity(49001 [CLCD]) | NaN | |
Equity(49004 [TNP_PRD]) | 0.000000 | |
Equity(49005 [ARWA_U]) | NaN | |
Equity(49006 [BVXV]) | NaN | |
Equity(49007 [BVXV_W]) | NaN | |
Equity(49008 [OPGN_W]) | NaN | |
Equity(49009 [PRKU]) | NaN | |
Equity(49010 [TBRA]) | NaN | |
Equity(49131 [OESX]) | NaN | |
Equity(49259 [ITUS]) | NaN | |
Equity(49523 [TLGT]) | NaN |
8235 rows × 1 columns