Example #1
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)
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)
Example #3
0
def test_dataview_universe():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    props = {'start_date': 20170227, 'end_date': 20170327, 'universe': '000016.SH',
             # 'symbol': 'rb1710.SHF,rb1801.SHF',
             'fields': ('open,high,low,close,vwap,volume,turnover,'
                        + 'sw1,zz2,'
                        + 'roe,net_assets,'
                        + 'total_oper_rev,oper_exp,tot_profit,int_income'
                        ),
             'freq': 1}
    
    dv.init_from_config(props, ds)
    dv.prepare_data()
    
    data_bench = dv.data_benchmark.copy()
    dv.data_benchmark = data_bench
    
    try:
        dv.data_benchmark = data_bench.iloc[3:]
    except ValueError:
        pass
    
    dv.remove_field('roe,net_assets')
    dv.remove_field('close')
Example #4
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': '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)
Example #5
0
def get_dv(start=20170101, end=20180101):
    import jaqs_fxdayu
    jaqs_fxdayu.patch_all()
    from jaqs.data import DataView
    from jaqs_fxdayu.data.dataservice import LocalDataService

    import warnings
    warnings.filterwarnings("ignore")

    factor_list = [
        'alpha60', 'alpha61', 'SRMI', 'OperatingProfitGrowRate',
        'InterestCover_J', 'ROECut', 'StaticPE_J', 'VOL60'
    ]
    check_factor = ','.join(factor_list)

    dataview_folder = r'../data'
    ds = LocalDataService(fp=dataview_folder)

    ZZ800_id = ds.query_index_member("000906.SH", start, end)
    stock_symbol = list(set(ZZ800_id))

    dv_props = {
        'start_date': start,
        'end_date': end,
        'symbol': ','.join(stock_symbol),
        'fields': check_factor,
        'freq': 1,
        "prepare_fields": True
    }

    dv = DataView()
    dv.init_from_config(dv_props, data_api=ds)
    dv.prepare_data()
    return dv
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)
Example #7
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)
Example #8
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)
Example #9
0
def get_dv(start=20170101, end=20180101):
    import warnings
    warnings.filterwarnings("ignore")
    try:
        import jaqs_fxdayu
        jaqs_fxdayu.patch_all()
        from jaqs.data import DataView
        from jaqs_fxdayu.data.dataservice import LocalDataService
    except ImportError as e:
        _handle_import_exception(e)

    ds = LocalDataService(fp=get_data_root())

    ZZ800_id = ds.query_index_member("000906.SH", start, end)
    stock_symbol = list(set(ZZ800_id))

    dv_props = {
        'start_date': start,
        'end_date': end,
        'symbol': ','.join(stock_symbol),
        'fields': "",
        'freq': 1,
        "prepare_fields": True
    }

    dv = DataView()
    dv.init_from_config(dv_props, data_api=ds)
    dv.prepare_data()
    hs300_benchmark = dv.data_api.daily("000300.SH",
                                        dv.extended_start_date_d,
                                        dv.end_date,
                                        fields='trade_date,close')
    dv.data_benchmark = hs300_benchmark[0][['trade_date',
                                            'close']].set_index('trade_date')
    return dv
Example #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 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)
Example #11
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)
Example #12
0
def get_dv(start = 20170101,end = 20180101):
    import jaqs_fxdayu
    jaqs_fxdayu.patch_all()
    from jaqs.data import DataView
    from jaqs_fxdayu.data.dataservice import LocalDataService

    import warnings
    warnings.filterwarnings("ignore")

    #--------------------------------------------------------

    #define
    factor_list  = ['BBI', 'net_profit', 'tot_shrhldr_eqy_excl_min_int'
        # ,'EPS','PE','PS','ACCA','CTOP','MA10RegressCoeff12','AR','BR','ARBR','np_parent_comp_ttm','total_share','bps'
                    ]
    check_factor = ','.join(factor_list)

    dataview_folder = r'../data'
    ds = LocalDataService(fp=dataview_folder)

    ZZ800_id = ds.query_index_member("000906.SH", start, end)
    stock_symbol = list(set(ZZ800_id))

    dv_props = {'start_date': start, 'end_date': end, 'symbol':','.join(stock_symbol),
             'fields': check_factor,
             'freq': 1,
             "prepare_fields": True}

    dv = DataView()
    dv.init_from_config(dv_props, data_api=ds)
    dv.prepare_data()
    return dv
Example #13
0
def get_dv(start = 20170101,end = 20180101): 
    import jaqs_fxdayu
    jaqs_fxdayu.patch_all()
    from jaqs.data import DataView
    from jaqs_fxdayu.data.dataservice import LocalDataService
    
    import warnings
    warnings.filterwarnings("ignore")
    
    #--------------------------------------------------------
    
    #define
    factor_list   = [ 'alpha190', 'alpha96', 'DebtEquityRatio', 'NetAssetGrowRate',
     'SharpeRatio120', 'RC12' ,'InformationRatio20']
    check_factor = ','.join(factor_list)
    
    dataview_folder = r'../data'
    ds = LocalDataService(fp = dataview_folder)
    
    ZZ800_id = ds.query_index_member("000906.SH", start, end)
    stock_symbol = list(set(ZZ800_id))
    
    dv_props = {'start_date': start, 'end_date': end, 'symbol':','.join(stock_symbol),
             'fields': check_factor,
             'freq': 1,
             "prepare_fields": True}
    
    dv = DataView()
    dv.init_from_config(dv_props, data_api=ds)
    dv.prepare_data()
    return dv
Example #14
0
def get_dv(start = 20170101,end = 20180101): 
    import jaqs_fxdayu
    jaqs_fxdayu.patch_all()
    from jaqs.data import DataView
    from jaqs_fxdayu.data.dataservice import LocalDataService
    
    import warnings
    warnings.filterwarnings("ignore")
    
    #--------------------------------------------------------
    
    #define
    factor_list  = ['TSEPToTotalCapital','alpha107','TRIX5_J','OperatingRevenueGrowRate_J','LossVariance60','BIAS60_J','alpha110','DIZ_J']
    check_factor = ','.join(factor_list)
    
    dataview_folder = r'E:/data/data'
    ds = LocalDataService(fp = dataview_folder)
    
    ZZ800_id = ds.query_index_member("000906.SH", start, end)
    stock_symbol = list(set(ZZ800_id))
    
    dv_props = {'start_date': start, 'end_date': end, 'symbol':','.join(stock_symbol),
             'fields': check_factor,
             'freq': 1,
             "prepare_fields": True}
    
    dv = DataView()
    dv.init_from_config(dv_props, data_api=ds)
    dv.prepare_data()
    return dv
Example #15
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)
Example #16
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)
Example #17
0
def get_dv(start=20170101, end=20180101):
    import jaqs_fxdayu
    jaqs_fxdayu.patch_all()
    from jaqs.data import DataView
    from jaqs_fxdayu.data.dataservice import LocalDataService

    import warnings
    warnings.filterwarnings("ignore")

    #--------------------------------------------------------

    #define
    factor_list = ['PB', 'turnover_ratio', 'volume', 'pe_ttm']
    check_factor = ','.join(factor_list)

    dataview_folder = r'E:\BaiduNetdiskDownload\data\data'
    ds = LocalDataService(fp=dataview_folder)

    ZZ800_id = ds.query_index_member("000906.SH", start, end)
    stock_symbol = list(set(ZZ800_id))

    dv_props = {
        'start_date': start,
        'end_date': end,
        'symbol': ','.join(stock_symbol),
        'fields': check_factor,
        'freq': 1,
        "prepare_fields": True
    }

    dv = DataView()
    dv.init_from_config(dv_props, data_api=ds)
    dv.prepare_data()
    return dv
Example #18
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)
Example #19
0
def test_dataview_universe():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    props = {
        'start_date':
        20170227,
        'end_date':
        20170327,
        'universe':
        '000016.SH',
        # 'symbol': 'rb1710.SHF,rb1801.SHF',
        'fields':
        ('open,high,low,close,vwap,volume,turnover,' + 'sw1,zz2,' +
         'roe,net_assets,' + 'total_oper_rev,oper_exp,tot_profit,int_income'),
        'freq':
        1
    }

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

    data_bench = dv.data_benchmark.copy()
    dv.data_benchmark = data_bench

    try:
        dv.data_benchmark = data_bench.iloc[3:]
    except ValueError:
        pass

    dv.remove_field('roe,net_assets')
    dv.remove_field('close')
Example #20
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)
Example #21
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)
Example #22
0
def get_dv(start=20170101, end=20180101):
    import jaqs_fxdayu
    jaqs_fxdayu.patch_all()
    from jaqs.data import DataView
    from jaqs_fxdayu.data.dataservice import LocalDataService

    import warnings
    warnings.filterwarnings("ignore")

    #--------------------------------------------------------

    #define
    factor_list = [
        'volume', 'tot_profit', 'plus_non_oper_rev', 'less_non_oper_exp',
        'net_cash_flows_oper_act', 'total_oper_rev', 'tot_oper_cost',
        'fin_exp', 'less_selling_dist_exp', 'less_gerl_admin_exp', 'oper_rev',
        'less_oper_cost', 'turnover'
    ]
    check_factor = ','.join(factor_list)

    dataview_folder = 'G:\GSICE\DATA\data'
    ds = LocalDataService(fp=dataview_folder)

    ZZ800_id = ds.query_index_member("000906.SH", start, end)
    stock_symbol = list(set(ZZ800_id))

    dv_props = {
        'start_date': start,
        'end_date': end,
        'symbol': ','.join(stock_symbol),
        'fields': check_factor,
        'freq': 1,
        "prepare_fields": True
    }

    dv = DataView()
    dv.init_from_config(dv_props, data_api=ds)
    dv.prepare_data()

    data_config = {
        "remote.data.address":
        "tcp://data.tushare.org:8910",
        "remote.data.username":
        "******",
        "remote.data.password":
        "******"
    }

    from jaqs_fxdayu.data import RemoteDataService
    Ds = RemoteDataService()
    Ds.init_from_config(data_config)
    dv.add_field('pe', Ds)

    return dv
Example #23
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)
Example #24
0
def test_write_future():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    
    secs = 'rb1710.SHF,j1710.DCE'
    props = {'start_date': 20170401, 'end_date': 20170901, 'symbol': secs,
             'fields': 'open,close,high,low,volume,oi',
             'freq': 1, 'all_price': False}
    
    dv.init_from_config(props, data_api=ds)
    dv.prepare_data()
    assert dv.data_d.shape == (145, 14)
Example #25
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)
Example #26
0
def test_add_formula_directly():
    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',
             'freq': 1}
    dv.init_from_config(props, data_api=ds)
    dv.prepare_data()
    
    dv.add_formula("myfactor", 'close / open', is_quarterly=False)
    assert dv.data_d.shape == (281, 39)
Example #27
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)
Example #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)
Example #29
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)
Example #30
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)
Example #31
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)
Example #32
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)
Example #33
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)
Example #34
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)
Example #35
0
def test_write_future():
    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()

    secs = 'rb1710.SHF,j1710.DCE'
    props = {
        'start_date': 20170401,
        'end_date': 20170901,
        'symbol': secs,
        'fields': 'open,close,high,low,volume,oi',
        'freq': 1,
        'all_price': False
    }

    dv.init_from_config(props, data_api=ds)
    dv.prepare_data()
    assert dv.data_d.shape == (145, 14)
Example #36
0
def test_add_formula_directly():
    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',
        'freq': 1
    }
    dv.init_from_config(props, data_api=ds)
    dv.prepare_data()

    dv.add_formula("myfactor", 'close / open', is_quarterly=False)
    assert dv.data_d.shape == (281, 39)
Example #37
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)
Example #38
0
def test_ttm():
    from jaqs.data import DataView

    ds = RemoteDataService()
    ds.init_from_config(data_config)
    dv = DataView()
    props = {
        'start_date': 20120101,
        'end_date': 20170601,
        'universe': '000016.SH',
        'fields': ('net_profit_incl_min_int_inc'),
        'freq': 1
    }
    dv.init_from_config(props, ds)
    dv.prepare_data()

    dv.add_formula('single',
                   'TTM(net_profit_incl_min_int_inc)',
                   is_quarterly=True)
Example #39
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)
Example #41
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)