def test_add_field(): dv = DataView() dv.load_dataview(folder_path=daily_path) nrows, ncols = dv.data_d.shape n_securities = len(dv.data_d.columns.levels[0]) ds = RemoteDataService() ds.init_from_config(data_config) dv.add_field('total_share', ds) assert dv.data_d.shape == (nrows, ncols + 1 * n_securities)
def test_add_field(): dv = DataView() dv.load_dataview(folder_path=daily_path) nrows, ncols = dv.data_d.shape n_securities = len(dv.data_d.columns.levels[0]) ds = RemoteDataService() ds.init_from_config(data_config) dv.add_field('total_share', ds) assert dv.data_d.shape == (nrows, ncols + 1 * n_securities)
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_q_add_field(): dv = DataView() dv.load_dataview(folder_path=quarterly_path) nrows, ncols = dv.data_q.shape n_securities = len(dv.data_d.columns.levels[0]) ds = RemoteDataService() ds.init_from_config(data_config) dv.add_field('net_inc_other_ops', ds) """ dv.add_field('oper_rev', ds) dv.add_field('turnover', ds) """ assert dv.data_q.shape == (nrows, ncols + 1 * n_securities)
def test_q_add_field(): dv = DataView() dv.load_dataview(folder_path=quarterly_path) nrows, ncols = dv.data_q.shape n_securities = len(dv.data_d.columns.levels[0]) ds = RemoteDataService() ds.init_from_config(data_config) dv.add_field('net_inc_other_ops', ds) """ dv.add_field('oper_rev', ds) dv.add_field('turnover', ds) """ assert dv.data_q.shape == (nrows, ncols + 1 * n_securities)
"tcp://gw.quantos.org:8901", "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]:
ds = LocalDataService(fp=dataview_folder) dv_props = { 'start_date': start, 'end_date': end, 'symbol': ','.join(stock_symbol), 'fields': check_factor, 'freq': 1, "prepare_fields": True } dv.init_from_config(dv_props, data_api=ds) dv.prepare_data() #获取行业情况 dv.add_field('sw1') sw1 = dv.get_ts('sw1') dict_classify = { '480000': '银行', '430000': '房地产', '460000': '休闲服务', '640000': '机械设备', '240000': '有色金属', '510000': '综合', '410000': '公用事业', '450000': '商业贸易', '730000': '通信', '330000': '家用电器', '720000': '传媒', '630000': '电气设备', '270000': '电子',
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)
'end_date': end, 'symbol': ','.join(stock_symbol), 'fields': check_factor, 'freq': 1, "prepare_fields": True } dv.init_from_config(dv_props, data_api=ds) # In[10]: dv.prepare_data() # In[11]: dv.add_field('sw1') sw1 = dv.get_ts('sw1') dict_classify = { '480000': '银行', '430000': '房地产', '460000': '休闲服务', '640000': '机械设备', '240000': '有色金属', '510000': '综合', '410000': '公用事业', '450000': '商业贸易', '730000': '通信', '330000': '家用电器', '720000': '传媒', '630000': '电气设备', '270000': '电子',