Notebook
In [1]:
from quantopian.pipeline import Pipeline
from quantopian.research import run_pipeline
from quantopian.pipeline.data import morningstar
from quantopian.pipeline.filters.morningstar import Q500US
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.factors import SimpleMovingAverage,ExponentialWeightedMovingAverage
from quantopian.pipeline import CustomFactor,CustomFilter
import numpy as np
import pandas as pd
In [2]:
class StdDev(CustomFactor):
    def compute(self, today, asset_ids, out, values):
        # Calculates the column-wise standard deviation, ignoring NaNs
        out[:] = numpy.nanstd(values, axis=0)
In [ ]:
 
In [3]:
class SPY_Close_Price(CustomFactor):  
    '''  
    One can use any inputs from any assets and set any factor outputs based upon them.  
    In this case, simply return the close price of SPY for every asset.  
    '''  
    inputs = [USEquityPricing.close]  
    window_length = 1  
    def compute(self, today, assets, out, close):

        spy_index = np.where(assets == 8554)   # 8554 is the SID of SPY  
        # index -1 gets the latest price row. spy_index gets the SPY column.  
        out[:] = np.log(close[-1, spy_index])  
In [25]:
 
In [6]:
def make_pipeline():
    Asset_Px = (USEquityPricing.open.latest + USEquityPricing.high.latest + USEquityPricing.low.latest + USEquityPricing.close.latest)*0.25
    Asset = np.log(Asset_Px)
    Underlying = SPY_Close_Price()
    Px = Underlying/Asset
    #FastMA = SimpleMovingAverage(inputs=[Px], window_length=8)
    #SlowMA = SimpleMovingAverage(inputs=[Px], window_length=34)
    #Diff = np.abs(FastMA - SlowMA)
    #AvgDiff = SimpleMovingAverage(inputs=[Diff], window_length=110)
    #Diff_StdDev = StdDev(inputs=[Diff], window_length=110)
    
    #RM_LimitLow= SlowMA + (AvgDiff + Diff_StdDev * 1.618)
    #RM_LimitUpp= SlowMA + (AvgDiff + Diff_StdDev * 2.618)
    
    
    return Pipeline(
        columns={
            'RM_LimitLow': Px,
            #'RM_LimitUpp': FastMA
        },
        screen=Q500US()
    )
In [7]:
result = run_pipeline(make_pipeline(), '2015-05-05', '2015-05-05')
result
Out[7]:
RM_LimitLow
2015-05-05 00:00:00+00:00 Equity(2 [ARNC]) 2.023047
Equity(24 [AAPL]) 1.101138
Equity(62 [ABT]) 1.390643
Equity(67 [ADSK]) 1.319860
Equity(76 [TAP]) 1.244351
Equity(114 [ADBE]) 1.235138
Equity(122 [ADI]) 1.289778
Equity(128 [ADM]) 1.367796
Equity(161 [AEP]) 1.322639
Equity(168 [AET]) 1.141007
Equity(185 [AFL]) 1.289681
Equity(216 [HES]) 1.238749
Equity(239 [AIG]) 1.317590
Equity(328 [ALTR]) 1.408126
Equity(337 [AMAT]) 1.788594
Equity(357 [TWX]) 1.202161
Equity(368 [AMGN]) 1.051943
Equity(438 [AON]) 1.166158
Equity(448 [APA]) 1.266456
Equity(455 [APC]) 1.178230
Equity(460 [APD]) 1.071420
Equity(559 [ASH]) 1.101854
Equity(630 [ADP]) 1.200254
Equity(660 [AVP]) 2.555106
Equity(679 [AXP]) 1.228333
Equity(693 [AZO]) 0.820169
Equity(698 [BA]) 1.077248
Equity(700 [BAC]) 1.918444
Equity(734 [BAX]) 1.261159
Equity(739 [BBBY]) 1.252346
... ...
Equity(41730 [ZG]) 1.169932
Equity(41872 [VER]) 2.406482
Equity(42118 [GRPN]) 2.759033
Equity(42173 [DLPH]) 1.204048
Equity(42230 [TRIP]) 1.219679
Equity(42270 [KORS]) 1.294093
Equity(42436 [SLCA]) 1.478763
Equity(42596 [YELP]) 1.457002
Equity(42788 [PSX]) 1.216762
Equity(42815 [SPLK]) 1.272885
Equity(42950 [FB]) 1.224817
Equity(43127 [NOW]) 1.244537
Equity(43202 [PANW]) 1.064862
Equity(43405 [KRFT]) 1.207032
Equity(43495 [AMBA]) 1.235363
Equity(43505 [ICPT]) 0.961632
Equity(43510 [WDAY]) 1.188944
Equity(43512 [FANG]) 1.214668
Equity(43694 [ABBV]) 1.284311
Equity(43721 [SCTY]) 1.304553
Equity(44060 [ZTS]) 1.405514
Equity(44645 [VOYA]) 1.424279
Equity(44747 [DATA]) 1.165422
Equity(44917 [MNK]) 1.128565
Equity(45451 [FEYE]) 1.419576
Equity(45815 [TWTR]) 1.468810
Equity(45971 [AAL]) 1.373374
Equity(45993 [HLT]) 1.579655
Equity(47208 [GPRO]) 1.368399
Equity(47430 [MBLY]) 1.403011

500 rows × 1 columns

In [66]:
def make_pipeline():
    Asset_Px = (USEquityPricing.open.latest + USEquityPricing.high.latest + USEquityPricing.low.latest + USEquityPricing.close.latest)*0.25
    Asset = np,log(Asset_Px)
    
    Underlying = np.log(symbols('SPY'))
    Px = Underlying/Asset
    FastMA = ExponentialWeightedMovingAverage(inputs=[Px], window_length=8)
    SlowMA = SimpleMovingAverage(inputs=[Px], window_length=34)
    Diff = np.abs(FastMA - SlowMA)
    AvgDiff = SimpleMovingAverage(inputs=[Diff], window_length=110)
    Diff_StdDev = StdDev(inputs=[Diff], window_length=110)
    
    RM_LimitLow= SlowMA + (AvgDiff + Diff_StdDev * 1.618)
    RM_LimitUpp= SlowMA + (AvgDiff + Diff_StdDev * 2.618)
    
     return Pipeline(
        columns={
            'Asset_Px': Asset_Px,
            'Asset': Asset
        },
        screen=Q500US()
    )
  File "<ipython-input-66-cf6cd145f01c>", line 15
    return Pipeline(
    ^
IndentationError: unexpected indent
In [ ]:
 
In [91]:
def make_pipeline():
    Asset_Px = (USEquityPricing.open.latest + USEquityPricing.high.latest + USEquityPricing.low.latest + USEquityPricing.close.latest)*0.25
    Asset = np.log(Asset_Px)
    SPY = symbols('SPY').sid
    Underlying = np.log(USEquityPricing[(USEquityPriceing.sid==SPY)].close.latest)
     
    return Pipeline(
        columns={
            'Asset_Px': Asset_Px,
            'Asset': Underlying
        },
        screen=Q500US()
    )
In [6]:
result = run_pipeline(make_pipeline(), '2015-05-05', '2015-05-05')
result

UnboundLocalErrorTraceback (most recent call last)
<ipython-input-6-97e936fabd7c> in <module>()
----> 1 result = run_pipeline(make_pipeline(), '2015-05-05', '2015-05-05')
      2 result

<ipython-input-5-4ec1c11ac1d0> in make_pipeline()
      3     Asset = np.log(Asset_Px)
      4     include_filter = SidInList(sid_list = (8554))
----> 5     Underlying = Underlying(mask=include_filter)
      6 
      7 

UnboundLocalError: local variable 'Underlying' referenced before assignment
In [ ]:
from quantopian.pipeline import Pipeline
from quantopian.research import run_pipeline
from quantopian.pipeline.filters.morningstar import Q500US
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.factors import SimpleMovingAverage
from quantopian.pipeline import CustomFactor
import numpy as np

class StdDev(CustomFactor):
    def compute(self, today, asset_ids, out, values):
        # Calculates the column-wise standard deviation, ignoring NaNs
        out[:] = numpy.nanstd(values, axis=0)


def make_pipeline():
    
    FastMA = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=8)
    SlowMA = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=34)
    Diff = np.abs(FastMA - SlowMA)
    AvgDiff = SimpleMovingAverage(inputs=[Diff], window_length=110)
    Diff_StdDev = StdDev(inputs=[Diff], window_length=110)
   
    return Pipeline(
        columns={
            'AvgDiff': AvgDiff,
            'Diff_StdDev': Diff_StdDev
        },
        screen=Q500US()
    )
In [ ]:
class StdDev(CustomFactor):
    def compute(self, today, asset_ids, out, values):
        # Calculates the column-wise standard deviation, ignoring NaNs
        out[:] = numpy.nanstd(values, axis=0)




class SPY_Close_Price(CustomFactor):  
    '''  
    One can use any inputs from any assets and set any factor outputs based upon them.  
    In this case, simply return the close price of SPY for every asset.  
    '''  
    inputs = [USEquityPricing.close]  
    window_length = 1  
    def compute(self, today, assets, out, close):

        spy_index = np.where(assets == 8554)   # 8554 is the SID of SPY  
        # index -1 gets the latest price row. spy_index gets the SPY column.  
        out[:] = np.log(close[-1, spy_index])  



def make_pipeline():
    Asset_Px = (USEquityPricing.open.latest + USEquityPricing.high.latest + USEquityPricing.low.latest + USEquityPricing.close.latest)*0.25
    Asset = np.log(Asset_Px)
    Underlying = SPY_Close_Price()
    Px = Underlying/Asset
    FastMA = SimpleMovingAverage(inputs=[Px], window_length=8)
    SlowMA = SimpleMovingAverage(inputs=[Px], window_length=34)
    Diff = np.abs(FastMA - SlowMA)
    AvgDiff = SimpleMovingAverage(inputs=[Diff], window_length=110)
    Diff_StdDev = StdDev(inputs=[Diff], window_length=110)
    
    RMLow= SlowMA + (AvgDiff + Diff_StdDev)
    RMUpp= SlowMA + (AvgDiff + Diff_StdDev)
    
    
    return Pipeline(
        columns={
            'RMLow': RMLow,
            'RMUpp': RMUpp
        },
        screen=Q500US()
    )