Пример #1
0
    def test_universe_equal(self):
        universe1 = Universe('custom', ['zz500'])
        universe2 = Universe('custom', ['zz500'])
        self.assertEqual(universe1, universe2)

        universe1 = Universe('custom', ['zz500'])
        universe2 = Universe('custom', ['zz800'])
        self.assertNotEqual(universe1, universe2)

        filter_cond = LAST('x') > 1.
        universe1 = Universe('custom', ['zz500'], filter_cond=filter_cond)
        universe2 = Universe('custom', ['zz500'], filter_cond=filter_cond)
        self.assertEqual(universe1, universe2)

        universe1 = Universe('custom', ['zz500'], filter_cond=LAST('x') > 1.)
        universe2 = Universe('custom', ['zz500'], filter_cond=LAST('x') > 2.)
        self.assertNotEqual(universe1, universe2)
Пример #2
0
    def __init__(self):

        self.closes = CLOSE()
        self.mul = LAST('multiplier')
        self.preMul = LAST('multiplier').shift(1)
        self.instrumentID = LAST('instrumentID')
        self.preInstrumentID = LAST('instrumentID').shift(1)
        self.preCloses = CLOSE().shift(1)
        self.openes = OPEN()
        self.lowes = LOW()
        self.highes = HIGH()

        # 计算指数的备用指标
        self.closeDLastClose = self.closes / self.preCloses - 1.
        self.closeDOpen = self.closes / self.openes - 1.
        self.closeDLow = self.closes / self.lowes - 1.
        self.highDClose = 1. - self.highes / self.closes

        # 定义指数的权重
        self.indexWeights = pd.Series([1., -2., 1.], index=['000016.zicn', '000300.zicn', '000905.zicn'])
    def __init__(self):

        self.closes = CLOSE()
        self.mul = LAST('multiplier')
        self.preMul = LAST('multiplier').shift(1)
        self.preCloses = CLOSE().shift(1)
        self.openes = OPEN()
        self.lowes = LOW()
        self.highes = HIGH()

        # 计算指数的备用指标
        self.closeDLastClose = self.closes / self.preCloses - 1.
        self.closeDOpen = self.closes / self.openes - 1.
        self.closeDLow = self.closes / self.lowes - 1.
        self.highDClose = 1. - self.highes / self.closes

        self.ih_amount = 28
        self.if_amount = 42
        self.ic_amount = 12

        # 定义指数的权重
        names = ['000016.zicn', '000300.zicn', '000905.zicn']
        self.indexWeights = SeriesValues(np.array([1., -2., 1.]),
                                         index=dict(zip(names, range(len(names)))))
Пример #4
0
    def test_universe_persistence(self):
        universe = Universe('custom', ['zz500'])
        univ_desc = universe.save()
        loaded_universe = Universe.load(univ_desc)

        self.assertEqual(universe.name, loaded_universe.name)
        self.assertListEqual(universe.base_universe,
                             loaded_universe.base_universe)

        universe = Universe('custom', ['zz500'], filter_cond=LAST('x') > 1.)
        univ_desc = universe.save()
        loaded_universe = Universe.load(univ_desc)

        self.assertEqual(universe.name, loaded_universe.name)
        self.assertListEqual(universe.base_universe,
                             loaded_universe.base_universe)
        self.assertEqual(str(universe.filter_cond),
                         str(loaded_universe.filter_cond))
Пример #5
0
    freq = '60b'
    universe = Universe('custom', ['ashare_ex'])
    batch = 1
    neutralized_risk = industry_styles
    risk_model = 'short'
    pre_process = [winsorize_normal, standardize]
    post_process = [standardize]
    warm_start = 3
    data_source = None
    horizon = map_freq(freq)

    engine = SqlEngine(data_source)

    fit_intercept = True
    kernal_feature = 'roe_q'
    regress_features = {kernal_feature: LAST(kernal_feature),
                        kernal_feature + '_l1': SHIFT(kernal_feature, 1),
                        kernal_feature + '_l2': SHIFT(kernal_feature, 2),
                        kernal_feature + '_l3': SHIFT(kernal_feature, 3)
                        }
    const_features = {kernal_feature: LAST(kernal_feature)}
    fit_target = [kernal_feature]

    data_meta = DataMeta(freq=freq,
                         universe=universe,
                         batch=batch,
                         neutralized_risk=neutralized_risk,
                         risk_model=risk_model,
                         pre_process=pre_process,
                         post_process=post_process,
                         warm_start=warm_start,
Пример #6
0
    from matplotlib.pylab import mpl

    plt.style.use('seaborn-whitegrid')
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['axes.unicode_minus'] = False

    start_date = '2017-01-01'
    end_date = '2018-05-17'
    freq = '10b'
    neutralized_risk = None
    universe = Universe('zz800')
    dask_client = Client('10.63.6.176:8786')

    alpha_factors = {
        'f1':
        CSQuantiles(LAST('ILLIQUIDITY') * LAST('NegMktValue'),
                    groups='sw1_adj'),
        'f2':
        CSQuantiles('con_pe', groups='sw1_adj')
    }

    weights = {'f1': 1., 'f2': 0.}

    # alpha_model = XGBTrainer(objective='reg:linear',
    #                          booster='gbtree',
    #                          n_estimators=300,
    #                          eval_sample=0.25,
    #                          features=alpha_factors)

    alpha_model = ConstLinearModel(features=alpha_factors, weights=weights)
Пример #7
0
    plt.style.use('seaborn-whitegrid')
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    """
    Back test parameter settings
    """

    benchmark_code = 905
    universe = Universe('zz800') + Universe('cyb')

    start_date = '2011-01-01'
    end_date = '2011-05-04'
    freq = '10b'
    neutralized_risk = None

    alpha_factors = {'ep_q_cs': CSQuantiles(LAST('ep_q'), groups='sw1_adj')}

    weights = dict(ep_q_cs=1.)

    alpha_model = ConstLinearModel(features=alpha_factors, weights=weights)

    data_meta = DataMeta(freq=freq,
                         universe=universe,
                         batch=1,
                         neutralized_risk=None,
                         pre_process=None,
                         post_process=None,
                         data_source=os.environ['DB_URI'])

    strategy = Strategy(alpha_model,
                        data_meta,