Notebook
In [1]:
import pandas as pd

from quantopian.pipeline import Pipeline
from quantopian.research import run_pipeline
from quantopian.pipeline.data import Fundamentals  
from quantopian.pipeline.filters import QTradableStocksUS, Q1500US
In [2]:
def make_pipeline(universe):
    base_universe=universe()
    
    return Pipeline(columns={'name': Fundamentals.short_name.latest,
                             'symbol': Fundamentals.symbol.latest,
                             'security_type': Fundamentals.security_type.latest,
                             'share_class_description': Fundamentals.share_class_description.latest,
                             'ev_to_ebitda': Fundamentals.ev_to_ebitda.latest},
                    screen=base_universe                             
                   )
In [3]:
def show_closed_end_funds(result):
    # Find Securities that are closed end funds
    mask = result['share_class_description'].str.startswith('CE')
    mask=mask.map(lambda x: False if x==None else x)
    return result[mask]

QTradeableStocksUS

A few closed end funds got pulled into this screen in the more recent time period.

In [4]:
result = run_pipeline(make_pipeline(QTradableStocksUS), '2018-04-30', '2018-04-30')
<string>:1: QuantopianWarning: Morningstar adjusted the calculation for the field 'ev_to_ebitda' starting on April 1, 2018.

The historical values for this field will surface from the vendor in mid-April 2018.

Until the historical data is updated in mid-April, your algorithm will see old (before April 1) and new (after April 1) definitions of the field in the same backtest.
In [5]:
result['share_class_description'].unique().categories
/usr/local/lib/python2.7/dist-packages/pandas/core/categorical.py:1764: FutureWarning: 
Setting NaNs in `categories` is deprecated and will be removed in a future version of pandas.
  return cat.set_categories(cat.categories.take(take_codes))
Out[5]:
Index([                                                  None,
                                                         u'B',
                                                   u'Class A',
                                                   u'Class B',
                                    u'Class A Limited Voting',
       u'CE with IsEquityFundamentalDataAvailable = 1 in Gid',
                                                         u'A',
                                                u'Non-Voting',
                                                     u'Shs A',
                                                         u'C',
                                                         u'P',
                                                         u'V'],
      dtype='object')
In [6]:
show_closed_end_funds(result)
Out[6]:
ev_to_ebitda name security_type share_class_description symbol
2018-04-30 00:00:00+00:00 Equity(3084 [GAB]) NaN Gabelli Equity Trust ST00000001 CE with IsEquityFundamentalDataAvailable = 1 i... GAB
Equity(20117 [NAD]) NaN Nuveen Quality Municipal ST00000001 CE with IsEquityFundamentalDataAvailable = 1 i... NAD
Equity(24013 [JPS]) NaN Nuveen Preferred Secs Inc ST00000001 CE with IsEquityFundamentalDataAvailable = 1 i... JPS
Equity(25655 [GDV]) NaN Gabelli Dividend & Income ST00000001 CE with IsEquityFundamentalDataAvailable = 1 i... GDV
Equity(26016 [TYG]) NaN Tortoise Energy ST00000001 CE with IsEquityFundamentalDataAvailable = 1 i... TYG
Equity(26660 [KYN]) NaN Kayne Anderson Mlp ST00000001 CE with IsEquityFundamentalDataAvailable = 1 i... KYN
Equity(27659 [ETW]) NaN Eaton Vance Tax-mangd Glo ST00000001 CE with IsEquityFundamentalDataAvailable = 1 i... ETW
Equity(44614 [DSL]) NaN DoubleLine Inc Solns Fund ST00000001 CE with IsEquityFundamentalDataAvailable = 1 i... DSL
In [7]:
result2 = run_pipeline(make_pipeline(QTradableStocksUS), '2017-04-30', '2017-04-30')
show_closed_end_funds(result2)
Out[7]:
ev_to_ebitda name security_type share_class_description symbol
2017-05-01 00:00:00+00:00 Equity(44614 [DSL]) NaN DoubleLine Inc Solns Fund ST00000001 CE with IsEquityFundamentalDataAvailable = 1 i... DSL
In [8]:
result3 = run_pipeline(make_pipeline(QTradableStocksUS), '2015-04-30', '2015-04-30')
show_closed_end_funds(result3)
Out[8]:
ev_to_ebitda name security_type share_class_description symbol

Q1500US

No closed end funds were found in the Q1500US.

In [9]:
result4 = run_pipeline(make_pipeline(Q1500US), '2018-04-30', '2018-04-30')
In [10]:
show_closed_end_funds(result4)
Out[10]:
ev_to_ebitda name security_type share_class_description symbol