diff --git a/examples/trade/README.md b/examples/trade/README.md index cd98e4d82..c29f439ab 100644 --- a/examples/trade/README.md +++ b/examples/trade/README.md @@ -89,8 +89,8 @@ and finally start our OPD method. python main.py --config=example/OPD/config.yml ``` -### Citation -You are more than welcome to cite our paper: +## Citation +You are more than welcome to citetmu our paper: ``` @inproceedings{fang2021universal, title={Universal Trading for Order Execution with Oracle Policy Distillation}, diff --git a/examples/trade/observation/obs_rule.py b/examples/trade/observation/obs_rule.py index 679a67e0a..350c79934 100644 --- a/examples/trade/observation/obs_rule.py +++ b/examples/trade/observation/obs_rule.py @@ -71,24 +71,22 @@ class RuleObs(BaseObs): if time == -1: predictions += [0.0] * size else: - predictions += df.iloc[size * time : size * (time + 1)].reshape(-1).tolist() + predictions += df[size * time : size * (time + 1)].reshape(-1).tolist() elif feature["type"] == "daily": predictions += df.reshape(-1)[:size].tolist() elif feature["type"] == "range": - # if feature.startswith('oracle'): - # predictions += df.iloc[:, (time + 1) : size + (time + 1)].reshape(-1).tolist() if time == -1: predictions += [0.0] * size else: - predictions += df.iloc[time : size + time].reshape(-1).tolist() + predictions += df[time : size + time].reshape(-1).tolist() elif feature["type"] == "interval": - if len(df.iloc[interval * size : (interval + 1) * size].reshape(-1)) == size: - predictions += df.iloc[interval * size : (interval + 1) * size].reshape(-1).tolist() + if len(df[interval * size : (interval + 1) * size].reshape(-1)) == size: + predictions += df[interval * size : (interval + 1) * size].reshape(-1).tolist() else: predictions += [0.0] * size elif feature["type"] == "step": - if len(df.iloc[size * (time + 1) : size * (time + 2)].reshape(-1)) == size: - predictions += df.iloc[size * (time + 1) : size * (time + 2)].reshape(-1).tolist() + if len(df[size * (time + 1) : size * (time + 2)].reshape(-1)) == size: + predictions += df[size * (time + 1) : size * (time + 2)].reshape(-1).tolist() else: predictions += [0.0] * size diff --git a/examples/trade/order_gen.py b/examples/trade/order_gen.py index 898aaab7c..71499523f 100644 --- a/examples/trade/order_gen.py +++ b/examples/trade/order_gen.py @@ -26,9 +26,8 @@ def w_order(f, start, end): df = pd.read_pickle(in_dir + f) #df['date'] = df.index.get_level_values(1).map(lambda x: x.date()) #df = df.set_index('date', append=True, drop=True) -# old_order = pd.read_pickle('../v-zeh/full-07-20/order/ratio_test/' + f) + order = generate_order(df, start, end) -# order = order[order.index.isin(old_order.index)] order_train = order[order.index.get_level_values(0) < '2020-12-01'] order_test = order[order.index.get_level_values(0) >= '2020-12-01'] order_valid = order_test[order_test.index.get_level_values(0) < '2021-01-01'] @@ -52,7 +51,8 @@ def w_order(f, start, end): all_path = os.path.join(data_path, "order/all/") if not os.path.exists(all_path): os.makedirs(all_path) - order_test.to_pickle(all_path + f[:-9] + '.target') + + order.to_pickle(all_path + f[:-9] + '.target') return 0 res = Parallel(n_jobs=64)(delayed(w_order)(f, 0, 239) for f in os.listdir(in_dir)) diff --git a/examples/trade/teacher_feature.py b/examples/trade/teacher_feature.py index d605fb74e..9c6ed867a 100644 --- a/examples/trade/teacher_feature.py +++ b/examples/trade/teacher_feature.py @@ -6,13 +6,17 @@ feature_path = os.path.join(data_path, 'feature/teacher/') if not os.path.exists(feature_path): os.makedirs(feature_path) -log_file = os.path.join(os.environ.get('OUTPUT_DIR'),'example/OPDT_b/0/test/') + +log_file = os.path.join(os.environ.get('OUTPUT_DIR'),'example/OPDT_b/test/') + files = os.listdir(log_file) for f in files: if f.endswith(".log"): df = pd.read_pickle(log_file + f) - df['datetime'] = df.index.get_level_values(1).map(lambda x: x[1]) + + #df['datetime'] = df.index.get_level_values(1).map(lambda x: x[1]) + df['datetime'] = df.index.get_level_values(1) df.set_index('datetime', append=True, drop=True, inplace=True) action = df['action'] action = action.reset_index(level=1, drop=True)