Exemple #1
0
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {
        'start_date': 20150101,
        'end_date': 20171001,
        'universe': '000300.SH',
        'fields': 'volume,turnover,float_mv,pb,total_mv',
        'freq': 1
    }

    dv.init_from_config(props, ds)
    dv.prepare_data()

    trade_status = dv.get_ts('trade_status')
    mask_sus = trade_status == '停牌'
    dv.append_df(mask_sus, 'suspended', is_quarterly=False)

    dv.add_formula('not_index_member', '!index_member', is_quarterly=False)

    dv.add_formula('limit_reached',
                   'Abs((open - Delay(close, 1)) / Delay(close, 1)) > 0.095',
                   is_quarterly=False)

    dv.save_dataview(dataview_folder)
Exemple #2
0
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {
        'start_date': 20150101,
        'end_date': 20170930,
        'universe': '000905.SH',
        'fields': ('turnover,float_mv,close_adj,pe,pb'),
        'freq': 1
    }

    dv.init_from_config(props, ds)
    dv.prepare_data()

    factor_formula = 'Cutoff(Standardize(turnover / 10000 / float_mv), 2)'
    dv.add_formula('TO', factor_formula, is_quarterly=False)

    factor_formula = 'Cutoff(Standardize(1/pb), 2)'
    dv.add_formula('BP', factor_formula, is_quarterly=False)

    factor_formula = 'Cutoff(Standardize(Return(close_adj, 20)), 2)'
    dv.add_formula('REVS20', factor_formula, is_quarterly=False)

    factor_formula = 'Cutoff(Standardize(Log(float_mv)), 2)'
    dv.add_formula('float_mv_factor', factor_formula, is_quarterly=False)

    factor_formula = 'Delay(Return(close_adj, 1), -1)'
    dv.add_formula('NextRet', factor_formula, is_quarterly=False)

    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #3
0
def save_data():
    """
    This function fetches data from remote server and stores them locally.
    Then we can use local data to do back-test.

    """
    dataview_props = {# Start and end date of back-test
                      'start_date': 20170101, 'end_date': 20171030,
                      # Investment universe and performance benchmark
                      'universe': UNIVERSE, 'benchmark': '000300.SH',
                      # Data fields that we need
                      'fields': 'total_mv,turnover',
                      # freq = 1 means we use daily data. Please do not change this.
                      'freq': 1}

    # RemoteDataService communicates with a remote server to fetch data
    ds = RemoteDataService()
    # Use username and password in data_config to login
    ds.init_from_config(data_config)
    
    # DataView utilizes RemoteDataService to get various data and store them
    dv = DataView()
    dv.init_from_config(dataview_props, ds)
    dv.prepare_data()
    dv.save_dataview(folder_path=dataview_store_folder)
Exemple #4
0
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {
        'start_date': 20160101,
        'end_date': 20171001,
        'universe': '000300.SH',
        'fields': 'volume,turnover',
        'freq': 1
    }

    dv.init_from_config(props, ds)
    dv.prepare_data()

    # for convenience to check limit reachers
    dv.add_formula('limit_reached',
                   'Abs((open - Delay(close, 1)) / Delay(close, 1)) > 0.095',
                   is_quarterly=False)
    dv.add_formula('mask_limit_reached',
                   'limit_reached > 0',
                   is_quarterly=False)

    dv.add_formula('mask_index_member',
                   '!(index_member > 0)',
                   is_quarterly=False)

    trade_status = dv.get_ts('trade_status')
    mask_sus = trade_status == u'停牌'
    dv.append_df(mask_sus, 'mask_sus', is_quarterly=False)

    # dv.add_formula('size', '', is_quarterly=False)

    dv.save_dataview(dataview_folder)
Exemple #5
0
def test_write():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    secs = '600030.SH,000063.SZ,000001.SZ'
    props = {
        'start_date': 20160601,
        'end_date': 20170601,
        'symbol': secs,
        'fields': 'open,close,high,low,volume,pb,net_assets,pcf_ncf',
        'freq': 1
    }

    dv.init_from_config(props, data_api=ds)
    dv.prepare_data()
    assert dv.data_d.shape == (281, 48)
    assert dv.dates.shape == (281, )
    # TODO
    """
    PerformanceWarning:
    your performance may suffer as PyTables will pickle object types that it cannot
    map directly to c-types [inferred_type->mixed,key->block1_values] [items->[('000001.SZ', 'int_income'), ('000001.SZ', 'less_handling_chrg_comm_exp'), ('000001.SZ', 'net_int_income'), ('000001.SZ', 'oper_exp'), ('000001.SZ', 'symbol'), ('000063.SZ', 'int_income'), ('000063.SZ', 'less_handling_chrg_comm_exp'), ('000063.SZ', 'net_int_income'), ('000063.SZ', 'oper_exp'), ('000063.SZ', 'symbol'), ('600030.SH', 'int_income'), ('600030.SH', 'less_handling_chrg_comm_exp'), ('600030.SH', 'net_int_income'), ('600030.SH', 'oper_exp'), ('600030.SH', 'symbol')]]
    """

    dv.save_dataview(folder_path=daily_path)
def save_data():
    """
    This function fetches data from remote server and stores them locally.
    Then we can use local data to do back-test.
    """
    dataview_props = {'start_date': 20170101,  # Start and end date of back-test
                      'end_date': 20171030,
                      'universe': UNIVERSE,    # Investment universe and performance benchmark
                      'benchmark': '000905.SH',
                      'fields': 'high,low,close', # Data fields that we need
                      'freq': 1   # freq = 1 means we use daily data. Please do not change this.
                      }

    # RemoteDataService communicates with a remote server to fetch data
    ds = RemoteDataService()

    # Use username and password in data_config to login
    ds.init_from_config(data_config)
    
    # DataView utilizes RemoteDataService to get various data and store them
    dv = DataView()
    dv.init_from_config(dataview_props, ds)
    dv.prepare_data()

    # 以9日为周期的KD线为例。首先须计算出最近9日的RSV值,即未成熟随机值, 
    # 计算公式为 
    # 9日RSV=(C-L9)÷(H9-L9)×100 
    # 式中,C为第9日的收盘价;L9为9日内的最低价;H9为9日内的最高价。 
    # K值=2/3×前一日K值+1/3×当日RSV 
    # D值=2/3×前一日K值+1/3×当日RSV 
    # J指标的计算公式为: J=3D—2K 
    factor_formula = '2/3*50 + (close-Ts_Min(low,5))/(Ts_Max(high,5)-Ts_Min(low,5)*100)'
    dv.add_formula()

    dv.save_dataview(folder_path=dataview_store_folder)
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {
        'start_date': 20170101,
        'end_date': 20171001,
        'universe': '000300.SH',
        'fields': ('float_mv,pb,pe_ttm,sw2'),
        'freq': 1
    }

    dv.init_from_config(props, ds)
    dv.prepare_data()

    factor_formula = 'GroupQuantile(-float_mv, sw2, 10)'
    dv.add_formula('rank_mv', factor_formula, is_quarterly=False)

    factor_formula = 'GroupQuantile(If(pb >= 0.2, pb, 100), sw2, 10)'
    dv.add_formula('rank_pb', factor_formula, is_quarterly=False)

    factor_formula = 'GroupQuantile(If(pe_ttm >= 3, pe_ttm, 9999.0), sw2, 10)'
    dv.add_formula('rank_pe', factor_formula, is_quarterly=False)

    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #8
0
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    props = {'start_date': 20150101, 'end_date': 20170930, 'universe': '000905.SH',
             'fields': ('tot_cur_assets,tot_cur_liab,inventories,pre_pay,deferred_exp,'
                        'eps_basic,ebit,pe,pb,float_mv,sw1'),
             'freq': 1}
    
    dv.init_from_config(props, ds)
    dv.prepare_data()
    
    factor_formula = 'pe < 30'
    dv.add_formula('pe_condition', factor_formula, is_quarterly=False)
    factor_formula = 'pb < 3'
    dv.add_formula('pb_condition', factor_formula, is_quarterly=False)
    factor_formula = 'Return(eps_basic, 4) > 0'
    dv.add_formula('eps_condition', factor_formula, is_quarterly=True)
    factor_formula = 'Return(ebit, 4) > 0'
    dv.add_formula('ebit_condition', factor_formula, is_quarterly=True)
    factor_formula = 'tot_cur_assets/tot_cur_liab > 2'
    dv.add_formula('current_condition', factor_formula, is_quarterly=True)
    factor_formula = '(tot_cur_assets - inventories - pre_pay - deferred_exp)/tot_cur_liab > 1'
    dv.add_formula('quick_condition', factor_formula, is_quarterly=True)
    
    dv.add_formula('mv_rank', 'Rank(float_mv)', is_quarterly=False)
    
    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #9
0
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {'start_date': 20150101, 'end_date': 20170930, 'universe': '000905.SH',
             'fields': ('turnover,float_mv,close_adj,pe,pb'),
             'freq': 1}

    dv.init_from_config(props, ds)
    dv.prepare_data()

    factor_formula = 'Cutoff(Standardize(turnover / 10000 / float_mv), 2)'
    dv.add_formula('TO', factor_formula, is_quarterly=False)

    factor_formula = 'Cutoff(Standardize(1/pb), 2)'
    dv.add_formula('BP', factor_formula, is_quarterly=False)

    factor_formula = 'Cutoff(Standardize(Return(close_adj, 20)), 2)'
    dv.add_formula('REVS20', factor_formula, is_quarterly=False)

    factor_formula = 'Cutoff(Standardize(Log(float_mv)), 2)'
    dv.add_formula('float_mv_factor', factor_formula, is_quarterly=False)

    factor_formula = 'Delay(Return(close_adj, 1), -1)'
    dv.add_formula('NextRet', factor_formula, is_quarterly=False)

    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #10
0
def save_data():
    """
    This function fetches data from remote server and stores them locally.
    Then we can use local data to do back-test.

    """
    dataview_props = {
        'start_date': 20170101,  # Start and end date of back-test
        'end_date': 20171030,
        'universe': UNIVERSE,  # Investment universe and performance benchmark
        'benchmark': '000300.SH',
        'fields': 'total_mv,turnover',  # Data fields that we need
        'freq':
        1  # freq = 1 means we use daily data. Please do not change this.
    }

    # RemoteDataService communicates with a remote server to fetch data
    ds = RemoteDataService()

    # Use username and password in data_config to login
    ds.init_from_config(data_config)

    # DataView utilizes RemoteDataService to get various data and store them
    dv = DataView()
    dv.init_from_config(dataview_props, ds)
    dv.prepare_data()
    dv.save_dataview(folder_path=dataview_store_folder)
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {
        'start_date': 20150101,
        'end_date': 20171001,
        'universe': '000300.SH',
        'fields': 'volume,turnover,float_mv,pb,total_mv',
        'freq': 1
    }

    dv.init_from_config(props, ds)
    dv.prepare_data()

    # for convenience to check limit reachers
    dv.add_formula('limit_reached',
                   'Abs((open - Delay(close, 1)) / Delay(close, 1)) > 0.095',
                   is_quarterly=False)

    dv.add_formula('random', 'StdDev(volume, 20)', is_quarterly=False)
    dv.add_formula('momentum', 'Return(close_adj, 20)', is_quarterly=False)
    # dv.add_formula('size', '', is_quarterly=False)

    dv.save_dataview(dataview_folder)
Exemple #12
0
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)

    dv = DataView()

    props = {
        'start_date':
        20170101,
        'end_date':
        20171030,
        'universe':
        '000300.SH',
        'fields': (
            'open,high,low,close,vwap,volume,turnover,sw1,'
            # + 'pb,net_assets,'
            + 'eps_basic,total_mv,tot_profit,int_income'),
        'freq':
        1
    }

    dv.init_from_config(props, ds)
    dv.prepare_data()

    factor_formula = 'close >= Delay(Ts_Max(close, 20), 1)'  # 20 days new high
    factor_name = 'new_high'
    dv.add_formula(factor_name, factor_formula, is_quarterly=False)

    dv.add_formula('total_profit_growth',
                   formula='Return(tot_profit, 4)',
                   is_quarterly=True)

    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #13
0
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    props = {'start_date': 20160101, 'end_date': 20171001, 'universe': '000300.SH',
             'fields': 'volume,turnover',
             'freq': 1}
    
    dv.init_from_config(props, ds)
    dv.prepare_data()
    
    # for convenience to check limit reachers
    dv.add_formula('limit_reached', 'Abs((open - Delay(close, 1)) / Delay(close, 1)) > 0.095', is_quarterly=False)
    dv.add_formula('mask_limit_reached', 'limit_reached > 0', is_quarterly=False)
    
    dv.add_formula('mask_index_member', '!(index_member > 0)', is_quarterly=False)
    
    trade_status = dv.get_ts('trade_status')
    mask_sus = trade_status == u'停牌'
    dv.append_df(mask_sus, 'mask_sus', is_quarterly=False)
    
    # dv.add_formula('size', '', is_quarterly=False)
    
    dv.save_dataview(dataview_folder)
Exemple #14
0
def add(formula, name):
    dv = DataView()
    dv.load_dataview(folder_path=dataview_dir_path)
    dv.add_formula(name,
                   formula,
                   is_quarterly=False,
                   formula_func_name_style='lower')
    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #15
0
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    print(DataView)
    props = {'start_date': 20170501, 'end_date': 20171001, 'universe': '000016.SH',
             'fields': 'volume,pb,pe,ps,float_mv,sw1',
             'freq': 1}

    dv.init_from_config(props, ds)
    dv.prepare_data()

    dv.save_dataview(dataview_folder)
Exemple #16
0
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    props = {'start_date': 20160101, 'end_date': 20171001, 'universe': '000300.SH',
             'fields': 'volume,turnover',
             'freq': 1}
    
    dv.init_from_config(props, ds)
    dv.prepare_data()
    
    dv.save_dataview(dataview_folder)
Exemple #17
0
def store_ic_weight():
    """
    Calculate IC weight and save it to file
    """
    dv = DataView()

    dv.load_dataview(folder_path=dataview_dir_path)

    factorList = ['TO', 'BP', 'REVS20', 'float_mv_factor']

    orthFactor_dic = {}

    for factor in factorList:
        orthFactor_dic[factor] = {}

    # add the orthogonalized factor to dataview
    for trade_date in dv.dates:
        snapshot = dv.get_snapshot(trade_date)
        factorPanel = snapshot[factorList]
        factorPanel = factorPanel.dropna()

        if len(factorPanel) != 0:
            orthfactorPanel = Schmidt(factorPanel)
            orthfactorPanel.columns = [x + '_adj' for x in factorList]

            snapshot = pd.merge(left=snapshot,
                                right=orthfactorPanel,
                                left_index=True,
                                right_index=True,
                                how='left')

            for factor in factorList:
                orthFactor_dic[factor][trade_date] = snapshot[factor]

    for factor in factorList:
        dv.append_df(pd.DataFrame(orthFactor_dic[factor]).T,
                     field_name=factor + '_adj',
                     is_quarterly=False)
    dv.save_dataview(dataview_dir_path)

    factorList_adj = [x + '_adj' for x in factorList]

    jutil.save_json(factorList_adj, custom_data_path)

    w = get_ic_weight(dv)

    store = pd.HDFStore(ic_weight_hd5_path)
    store['ic_weight'] = w
    store.close()
Exemple #18
0
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {'start_date': 20170201, 'end_date': 20171001, 'universe': '000300.SH',
             'fields': ('float_mv,sw2,sw1'),
             'freq': 1}

    dv.init_from_config(props, ds)
    dv.prepare_data()

    factor_formula = 'GroupQuantile(float_mv, sw1, 10)'
    dv.add_formula('gq30', factor_formula, is_quarterly=False)

    dv.save_dataview(folder_path=dataview_dir_path)
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {'start_date': 20170901, 'end_date': 20171129, 'universe': BENCHMARK,
             'fields': 'close,volume,sw1',
             'freq': 1}

    dv.init_from_config(props, ds)
    dv.prepare_data()

    dv.add_formula('ret', 'Return(close_adj, 20)', is_quarterly=False)
    dv.add_formula('rank_ret', 'Rank(ret)', is_quarterly=False)

    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #20
0
def download_data():
    dataview_props = {
        'start_date': 20080101,
        'end_date': 20180731,
        'universe': '000016.SH',
        'fields': 'open,close,high,low',
        'freq': 1
    }

    ds = RemoteDataService()
    ds.init_from_config(data_config)

    # DataView utilizes RemoteDataService to get various data and store them
    dv = DataView()
    dv.init_from_config(dataview_props, ds)
    dv.prepare_data()
    dv.save_dataview(folder_path=dataview_store_folder)
Exemple #21
0
    def save_data(self):
        """
        This function fetches data from remote server and stores them locally.
        Then we can use local data to do back-test.

        """
        # RemoteDataService communicates with a remote server to fetch data
        ds = RemoteDataService()

        # Use username and password in data_config to login
        ds.init_from_config(self.data_config)

        # DataView utilizes RemoteDataService to get various data and store them
        dv = DataView()
        dv.init_from_config(self.dataview_props, ds)
        dv.prepare_data()
        dv.save_dataview(folder_path=self.dataview_store_folder)
Exemple #22
0
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    props = {'start_date': start_date, 'end_date': end_date, 'universe': universe,
             'fields': 'roe_yearly,roa_yearly',
             'freq': 1}
    
    dv.init_from_config(props, ds)
    dv.prepare_data()
    
    dv.add_formula('roe_cond', 'roe_yearly >= 20', is_quarterly=True)
    dv.add_formula('roa_cond', 'roa_yearly >= 5', is_quarterly=True)
    dv.add_formula('cond', 'roe_cond && roa_cond', is_quarterly=True)
    
    dv.save_dataview(folder_path=dataview_folder)
Exemple #23
0
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    props = {'start_date': 20170101, 'end_date': 20171001, 'universe': '000300.SH',
             'fields': 'pe_ttm,net_profit_incl_min_int_inc',
             'freq': 1}
    
    dv.init_from_config(props, ds)
    dv.prepare_data()
    
    factor_formula = 'Return(net_profit_incl_min_int_inc, 4)'
    factor_name = 'net_profit_growth'
    dv.add_formula(factor_name, factor_formula, is_quarterly=True)
    
    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #24
0
def test_q():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    secs = '600030.SH,000063.SZ,000001.SZ'
    props = {'start_date': 20160609, 'end_date': 20170601, 'symbol': secs,
             'fields': ('open,close,'
                        + 'pb,net_assets,'
                        + 'total_oper_rev,oper_exp,'
                        + 'cash_paid_invest,'
                        + 'capital_stk,'
                        + 'roe'), 'freq': 1}
    
    dv.init_from_config(props, data_api=ds)
    dv.prepare_data()
    dv.save_dataview(folder_path=quarterly_path)
Exemple #25
0
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {'start_date': start_date, 'end_date': end_date,
             'fields': 'sw1',
             'symbol': my_symbols,
             'freq': 1}

    dv.init_from_config(props, ds)
    dv.prepare_data()

    # set the benchmark
    res, _ = ds.daily(benchmark, start_date=dv.start_date, end_date=dv.end_date)
    dv._data_benchmark = res.set_index('trade_date').loc[:, ['close']]

    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #26
0
def store_ic_weight():
    """
    Calculate IC weight and save it to file
    """
    dv = DataView()

    dv.load_dataview(folder_path=dataview_dir_path)

    factorList = ['TO', 'BP', 'REVS20', 'float_mv_factor']

    orthFactor_dic = {}

    for factor in factorList:
        orthFactor_dic[factor] = {}

    # add the orthogonalized factor to dataview
    for trade_date in dv.dates:
        snapshot = dv.get_snapshot(trade_date)
        factorPanel = snapshot[factorList]
        factorPanel = factorPanel.dropna()

        if len(factorPanel) != 0:
            orthfactorPanel = Schmidt(factorPanel)
            orthfactorPanel.columns = [x + '_adj' for x in factorList]

            snapshot = pd.merge(left=snapshot, right=orthfactorPanel,
                                left_index=True, right_index=True, how='left')

            for factor in factorList:
                orthFactor_dic[factor][trade_date] = snapshot[factor]

    for factor in factorList:
        dv.append_df(pd.DataFrame(orthFactor_dic[factor]).T, field_name=factor + '_adj', is_quarterly=False)
    dv.save_dataview(dataview_dir_path)

    factorList_adj = [x + '_adj' for x in factorList]

    jutil.save_json(factorList_adj, custom_data_path)

    w = get_ic_weight(dv)

    store = pd.HDFStore(ic_weight_hd5_path)
    store['ic_weight'] = w
    store.close()
Exemple #27
0
def test_save_dataview(sub_folder='test_dataview'):
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    props = {'start_date': 20150101, 'end_date': 20170930, 'universe': '000905.SH',
             'fields': ('float_mv,tot_shrhldr_eqy_excl_min_int,deferred_tax_assets,sw2'),
             'freq': 1}
    
    dv.init_from_config(props, ds)
    dv.prepare_data()
    
    factor_formula = 'Quantile(-float_mv,5)'
    dv.add_formula('rank_mv', factor_formula, is_quarterly=False)
    
    factor_formula = 'Quantile(float_mv/(tot_shrhldr_eqy_excl_min_int+deferred_tax_assets), 5)'
    dv.add_formula('rank_pb', factor_formula, is_quarterly=False)
    
    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #28
0
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {
        'start_date': 20170901,
        'end_date': 20171129,
        'universe': BENCHMARK,
        'fields': 'close,volume,sw1',
        'freq': 1
    }

    dv.init_from_config(props, ds)
    dv.prepare_data()

    dv.add_formula('ret', 'Return(close_adj, 20)', is_quarterly=False)
    dv.add_formula('rank_ret', 'Rank(ret)', is_quarterly=False)

    dv.save_dataview(folder_path=dataview_dir_path)
def save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    props = {'start_date': 20150101, 'end_date': 20171001, 'universe': '000300.SH',
             'fields': 'volume,turnover,float_mv,pb,total_mv',
             'freq': 1}
    
    dv.init_from_config(props, ds)
    dv.prepare_data()

    trade_status = dv.get_ts('trade_status')
    mask_sus = trade_status == '停牌'
    dv.append_df(mask_sus, 'suspended', is_quarterly=False)

    dv.add_formula('not_index_member', '!index_member', is_quarterly=False)

    dv.add_formula('limit_reached', 'Abs((open - Delay(close, 1)) / Delay(close, 1)) > 0.095', is_quarterly=False)
    
    dv.save_dataview(dataview_folder)
Exemple #30
0
def download_data():
    dataview_props = {
        'start_date': 20120101,
        'end_date': 20181231,
        'universe': '000905.SH',
        #   'symbol':'600030.SH,600104.SH',
        'fields': 'open,close,high,low,close_adj,volume',
        'freq': 1
    }

    ds = RemoteDataService()
    ds.init_from_config(data_config)

    # DataView utilizes RemoteDataService to get various data and store them
    dv = DataView()
    dv.init_from_config(dataview_props, ds)
    dv.prepare_data()

    factor_formula = 'Delay(Return(close_adj, 2, 0), -2)'
    dv.add_formula('future_return_2',
                   factor_formula,
                   is_quarterly=False,
                   is_factor=False)
    factor_formula = 'Delay(Return(close_adj, 3, 0), -3)'
    dv.add_formula('future_return_3',
                   factor_formula,
                   is_quarterly=False,
                   is_factor=False)
    factor_formula = 'Delay(Return(close_adj, 4, 0), -4)'
    dv.add_formula('future_return_4',
                   factor_formula,
                   is_quarterly=False,
                   is_factor=False)
    factor_formula = 'Delay(Return(close_adj, 5, 0), -5)'
    dv.add_formula('future_return_5',
                   factor_formula,
                   is_quarterly=False,
                   is_factor=False)

    dv.save_dataview(folder_path=dataview_store_folder)
Exemple #31
0
def test_write():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    secs = '600030.SH,000063.SZ,000001.SZ'
    props = {'start_date': 20160601, 'end_date': 20170601, 'symbol': secs,
             'fields': 'open,close,high,low,volume,pb,net_assets,pcf_ncf',
             'freq': 1}

    dv.init_from_config(props, data_api=ds)
    dv.prepare_data()
    assert dv.data_d.shape == (281, 48)
    assert dv.dates.shape == (281, )
    # TODO
    """
    PerformanceWarning:
    your performance may suffer as PyTables will pickle object types that it cannot
    map directly to c-types [inferred_type->mixed,key->block1_values] [items->[('000001.SZ', 'int_income'), ('000001.SZ', 'less_handling_chrg_comm_exp'), ('000001.SZ', 'net_int_income'), ('000001.SZ', 'oper_exp'), ('000001.SZ', 'symbol'), ('000063.SZ', 'int_income'), ('000063.SZ', 'less_handling_chrg_comm_exp'), ('000063.SZ', 'net_int_income'), ('000063.SZ', 'oper_exp'), ('000063.SZ', 'symbol'), ('600030.SH', 'int_income'), ('600030.SH', 'less_handling_chrg_comm_exp'), ('600030.SH', 'net_int_income'), ('600030.SH', 'oper_exp'), ('600030.SH', 'symbol')]]
    """
    
    dv.save_dataview(folder_path=daily_path)
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {'start_date': 20170101, 'end_date': 20171001, 'universe': '000300.SH',
             'fields': ('float_mv,pb,pe_ttm,sw2'),
             'freq': 1}

    dv.init_from_config(props, ds)
    dv.prepare_data()

    factor_formula = 'GroupQuantile(-float_mv, sw2, 10)'
    dv.add_formula('rank_mv', factor_formula, is_quarterly=False)

    factor_formula = 'GroupQuantile(If(pb >= 0.2, pb, 100), sw2, 10)'
    dv.add_formula('rank_pb', factor_formula, is_quarterly=False)

    factor_formula = 'GroupQuantile(If(pe_ttm >= 3, pe_ttm, 9999.0), sw2, 10)'
    dv.add_formula('rank_pe', factor_formula, is_quarterly=False)

    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #33
0
def test_q():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    secs = '600030.SH,000063.SZ,000001.SZ'
    props = {
        'start_date':
        20160609,
        'end_date':
        20170601,
        'symbol':
        secs,
        'fields':
        ('open,close,' + 'pb,net_assets,' + 'total_oper_rev,oper_exp,' +
         'cash_paid_invest,' + 'capital_stk,' + 'roe'),
        'freq':
        1
    }

    dv.init_from_config(props, data_api=ds)
    dv.prepare_data()
    dv.save_dataview(folder_path=quarterly_path)
Exemple #34
0
def test_save_dataview(sub_folder='test_dataview'):
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {
        'start_date': 20150101,
        'end_date': 20170930,
        'universe': '000905.SH',
        'fields':
        ('float_mv,tot_shrhldr_eqy_excl_min_int,deferred_tax_assets,sw2'),
        'freq': 1
    }

    dv.init_from_config(props, ds)
    dv.prepare_data()

    factor_formula = 'Quantile(-float_mv,5)'
    dv.add_formula('rank_mv', factor_formula, is_quarterly=False)

    factor_formula = 'Quantile(float_mv/(tot_shrhldr_eqy_excl_min_int+deferred_tax_assets), 5)'
    dv.add_formula('rank_pb', factor_formula, is_quarterly=False)

    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #35
0
def test_save_dataview():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    #dataview参数选择
    props = {
        'start_date': 20080527,
        'end_date': 20180807,
        'universe': '000002.SH,399107.SZ',
        "benchmark": "000905.SH,000905.SH",
        'fields': ('open,close,volume,vwap,high,low,turnover'),
        'freq': 1
    }

    dv.init_from_config(props, ds)
    dv.prepare_data()
    #因子
    factor_formula = 'rank(volume)*(ts_sum(close, 5)/5)*(vwap-close)/(high-low)'
    dv.add_formula('alpha',
                   factor_formula,
                   is_quarterly=False,
                   formula_func_name_style='lower')
    dv.save_dataview(folder_path=dataview_dir_path)
Exemple #36
0
print(dv.get_ts('roe_pb').head())  #这里用get_ts的方法输入新的名称即可

#5_从数据服务添加新数据至本地
#先设置Config
data_config = {
    "remote.data.address":
    "tcp://data.tushare.org:8910",  #地址统一,暂不做修改
    "remote.data.username":
    "******",  #quantos账号(手机号码)
    #quantos账号的API令牌号码
    "remote.data.password":
    "******"
}
ds = RemoteDataService()  #DataService启动
ds.init_from_config(data_config)  #data_config启动

dv.add_field('eps_basic', ds)  #添加新数据(eps_basic)至本地(ds)
print(dv.get_ts('eps_basic').head())
A = dv.get_ts('eps_basic').head()  #get_ts为数据获取

dv.remove_field('eps_basic')  #删除数据(eps_basic)
dv.add_field('volume', ds)  #添加新数据至本地(ds)
A = dv.get_ts('volume').head()

dv.save_dataview('G:/data/hs300')  #保存
dv.save_dataview('G:/data/hs300_1')  #这相当于另存为

print(dv.fields)  #查看dv中取得的数据

dv.add_field('roe', ds)  #添加新数据至本地(ds)
Exemple #37
0
    "remote.trade.username":
    "******",
    "remote.trade.password":
    "******"
}

dataview_dir_path = '***'  #dataview存储路径
backtest_result_dir_path = '***'  #回测结果存储路径

api = DataApi(addr='tcp://data.quantos.org:8910')
api.login("phone", "token")

dv = DataView()
dv.load_dataview(folder_path=dataview_dir_path)
dv.add_field('turnover_ratio', ds)
dv.save_dataview(folder_path=dataview_dir_path)
dv.update_snapshot()

#在已经保存dataview之后,需要添加某项指标(dataview.py里面可以找这些指标,不是因子!),如turnover_ratio,使用这段代码,添加完之后下一次运行就可以注释掉


def my_selector(context, user_options=None):
    #筛选僵尸股和ST股
    df = context.dataview.data_inst['name']
    result = pd.DataFrame(df, columns=['ST'], index=df.index, dtype='bool')
    selector_volume = context.snapshot[
        'mean_turnover'] > 50000000  #这里要先add('ts_mean(turnover, 5)', 'mean_turnover')
    names = list(df)
    for i in range(len(df)):
        if 'ST' in names[i]:
            result['ST'][i] = False
Exemple #38
0
dv.append_df(alpha195_.run_formula(dv),'alpha195_')
dv.append_df(alpha42_.run_formula(dv),'alpha42_')
dv.append_df(alpha62_.run_formula(dv),'alpha62_')
dv.append_df(alpha64_.run_formula(dv),'alpha64_')
dv.append_df(alpha197_.run_formula(dv),'alpha197_')
dv.append_df(alpha211_.run_formula(dv),'alpha211_')
dv.append_df(alpha56_.run_formula(dv),'alpha56_')

factor_lis = ['alpha32_','alpha42_','alpha56_','alpha62_','alpha64_','alpha194','alpha195','alpha197','alpha211','pb','pe','roa','roe','pm','ETOP']

for each in factor_lis:
    assert(each in dv.fields)

factors = {name:dv.get_ts(name) for name in factor_lis}

dv.save_dataview('muti_factor/')


# In[87]:


import pandas as pd

id_zz500 = dp.daily_index_cons(api, "000300.SH", start, end)
id_hs300 = dp.daily_index_cons(api, "000905.SH", start, end)

columns_500 = list(set(id_zz500.columns)-set(id_hs300.columns))
def limit_up_down():
    trade_status = dv.get_ts('trade_status').fillna(0)
    mask_sus = trade_status == 0
    # 涨停