示例#1
0
def test_mean_reversion_5day_sector_neutral_smoothed(fn):
    column_name = 'Mean_Reversion_5Day_Sector_Neutral_Smoothed'
    start_date_str = '2015-01-05'
    end_date_str = '2015-01-07'

    # Build engine
    trading_calendar = get_calendar('NYSE')
    bundle_data = bundles.load(project_helper.EOD_BUNDLE_NAME)
    engine = project_helper.build_pipeline_engine(bundle_data,
                                                  trading_calendar)

    # Build pipeline
    universe_window_length = 2
    universe_asset_count = 4
    universe = AverageDollarVolume(
        window_length=universe_window_length).top(universe_asset_count)
    pipeline = Pipeline(screen=universe)

    run_pipeline_args = {
        'pipeline': pipeline,
        'start_date': pd.Timestamp(start_date_str, tz='utc'),
        'end_date': pd.Timestamp(end_date_str, tz='utc')
    }
    fn_inputs = {
        'window_length': 3,
        'universe': universe,
        'sector': project_helper.Sector()
    }
    fn_correct_outputs = OrderedDict([
        ('pipline_out',
         pd.DataFrame([
             0.44721360, 1.34164079, -1.34164079, -0.44721360, 1.34164079,
             0.44721360, -1.34164079, -0.44721360, 0.44721360, 1.34164079,
             -1.34164079, -0.44721360
         ],
                      engine.run_pipeline(**run_pipeline_args).index,
                      [column_name]))
    ])

    print('Running Integration Test on pipeline:')
    print('> start_dat = pd.Timestamp(\'{}\', tz=\'utc\')'.format(
        start_date_str))
    print('> end_date = pd.Timestamp(\'{}\', tz=\'utc\')'.format(end_date_str))
    print('> universe = AverageDollarVolume(window_length={}).top({})'.format(
        universe_window_length, universe_asset_count))
    print('> factor = {}('.format(fn.__name__))
    print('    window_length={},'.format(fn_inputs['window_length']))
    print('    universe=universe,')
    print('    sector=project_helper.Sector())')
    print('> pipeline.add(factor, \'{}\')'.format(column_name))
    print('> engine.run_pipeline(pipeline, start_dat, end_date)')
    print('')

    pipeline.add(fn(**fn_inputs), column_name)
    assert_output(engine.run_pipeline,
                  run_pipeline_args,
                  fn_correct_outputs,
                  check_parameter_changes=False)
def test_mean_reversion_5day_sector_neutral_smoothed(fn):
    column_name = 'Mean_Reversion_5Day_Sector_Neutral_Smoothed'
    start_date_str = '2015-01-05'
    end_date_str = '2015-01-07'

    # Build engine
    trading_calendar = get_calendar('NYSE')
    bundle_data = bundles.load(project_helper.EOD_BUNDLE_NAME)
    engine = project_helper.build_pipeline_engine(bundle_data, trading_calendar)

    # Build pipeline
    universe_window_length = 2
    universe_asset_count = 4
    universe = AverageDollarVolume(window_length=universe_window_length).top(universe_asset_count)
    pipeline = Pipeline(screen=universe)

    run_pipeline_args = {
        'pipeline': pipeline,
        'start_date': pd.Timestamp(start_date_str, tz='utc'),
        'end_date': pd.Timestamp(end_date_str, tz='utc')}
    fn_inputs = {
        'window_length': 3,
        'universe': universe,
        'sector': project_helper.Sector()}
    fn_correct_outputs = OrderedDict([
        (
            'pipline_out', pd.DataFrame(
                [0.44721360, 1.34164079, -1.34164079, -0.44721360,
                 1.34164079, 0.44721360, -1.34164079, -0.44721360,
                 0.44721360, 1.34164079, -1.34164079, -0.44721360],
                engine.run_pipeline(**run_pipeline_args).index,
                [column_name]))])

    print('Running Integration Test on pipeline:')
    print('> start_dat = pd.Timestamp(\'{}\', tz=\'utc\')'.format(start_date_str))
    print('> end_date = pd.Timestamp(\'{}\', tz=\'utc\')'.format(end_date_str))
    print('> universe = AverageDollarVolume(window_length={}).top({})'.format(
        universe_window_length, universe_asset_count))
    print('> factor = {}('.format(fn.__name__))
    print('    window_length={},'.format(fn_inputs['window_length']))
    print('    universe=universe,')
    print('    sector=project_helper.Sector())')
    print('> pipeline.add(factor, \'{}\')'.format(column_name))
    print('> engine.run_pipeline(pipeline, start_dat, end_date)')
    print('')

    pipeline.add(fn(**fn_inputs), column_name)
    assert_output(engine.run_pipeline, run_pipeline_args, fn_correct_outputs, check_parameter_changes=False)
示例#3
0
# ## Build Pipeline Engine
# We'll be using Zipline's pipeline package to access our data for this project. To use it, we must build a pipeline engine. Run the cell below to build the engine.

# In[5]:


from zipline.pipeline import Pipeline
from zipline.pipeline.factors import AverageDollarVolume
from zipline.utils.calendars import get_calendar


universe = AverageDollarVolume(window_length=120).top(500) 
trading_calendar = get_calendar('NYSE') 
bundle_data = bundles.load(project_helper.EOD_BUNDLE_NAME)
engine = project_helper.build_pipeline_engine(bundle_data, trading_calendar)


# ### View Data
# With the pipeline engine built, let's get the stocks at the end of the period in the universe we're using. We'll use these tickers to generate the returns data for the our risk model.

# In[6]:


universe_end_date = pd.Timestamp('2016-01-05', tz='UTC')

universe_tickers = engine    .run_pipeline(
        Pipeline(screen=universe),
        universe_end_date,
        universe_end_date)\
    .index.get_level_values(1)\
示例#4
0
def test_mean_reversion_5day_sector_neutral_smoothed(fn):
    column_name = "Mean_Reversion_5Day_Sector_Neutral_Smoothed"
    start_date_str = "2015-01-05"
    end_date_str = "2015-01-07"

    # Build engine
    trading_calendar = get_calendar("NYSE")
    bundle_data = bundles.load(project_helper.EOD_BUNDLE_NAME)
    engine = project_helper.build_pipeline_engine(bundle_data,
                                                  trading_calendar)

    # Build pipeline
    universe_window_length = 2
    universe_asset_count = 4
    universe = AverageDollarVolume(
        window_length=universe_window_length).top(universe_asset_count)
    pipeline = Pipeline(screen=universe)

    run_pipeline_args = {
        "pipeline": pipeline,
        "start_date": pd.Timestamp(start_date_str, tz="utc"),
        "end_date": pd.Timestamp(end_date_str, tz="utc"),
    }
    fn_inputs = {
        "window_length": 3,
        "universe": universe,
        "sector": project_helper.Sector(),
    }
    fn_correct_outputs = OrderedDict([(
        "pipline_out",
        pd.DataFrame(
            [
                0.44721360,
                1.34164079,
                -1.34164079,
                -0.44721360,
                1.34164079,
                0.44721360,
                -1.34164079,
                -0.44721360,
                0.44721360,
                1.34164079,
                -1.34164079,
                -0.44721360,
            ],
            engine.run_pipeline(**run_pipeline_args).index,
            [column_name],
        ),
    )])

    print("Running Integration Test on pipeline:")
    print("> start_dat = pd.Timestamp('{}', tz='utc')".format(start_date_str))
    print("> end_date = pd.Timestamp('{}', tz='utc')".format(end_date_str))
    print("> universe = AverageDollarVolume(window_length={}).top({})".format(
        universe_window_length, universe_asset_count))
    print("> factor = {}(".format(fn.__name__))
    print("    window_length={},".format(fn_inputs["window_length"]))
    print("    universe=universe,")
    print("    sector=project_helper.Sector())")
    print("> pipeline.add(factor, '{}')".format(column_name))
    print("> engine.run_pipeline(pipeline, start_dat, end_date)")
    print("")

    pipeline.add(fn(**fn_inputs), column_name)
    assert_output(
        engine.run_pipeline,
        run_pipeline_args,
        fn_correct_outputs,
        check_parameter_changes=False,
    )