2.12. ファクターの結合¶
ファクターは組込み数学演算子(+、-、*など)のいずれかを使い、別のファクターやスカラ値と結合できます。 これにより、複数のファクターを結合させた複雑な式を簡単にかけます。 例えば2つの異なるファクターの平均を取るファクターの作成はシンプルに:
>>> f1 = SomeFactor(...)
>>> f2 = SomeOtherFactor(...)
>>> average = (f1 + f2) / 2.0
と書けます。
このレッスンでは、10日間平均ファクターと30日間平均ファクターを組み合わせた relative_difference
ファクターを計算するパイプラインを作成します。
いつもと同じく、import文から始めます:
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つのファクターが必要です:
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
)を計算するファクターを作成します。
percent_difference = (mean_close_10 - mean_close_30) / mean_close_30
この例を見ると、 percent_difference
はより単純なファクターの組み合わせによって構成されていますが、依然として Factor
です。
percent_difference
をパイプラインの列として追加できます。
それでは percent_difference
を列に持つ(終値平均を計算するファクターは列に加えません)パイプラインを作成する make_pipeline
を定義しましょう:
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
}
)
新しい出力がどのようになっているか確認します:
result = run_pipeline(make_pipeline(), '2015-05-05', '2015-05-05')
result
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
次のレッスンでは、フィルタについて学習します。