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)
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')
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 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)
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': 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)
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
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)
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)
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
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
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
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)
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 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
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)
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')
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)
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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)