MCPcopy
hub / github.com/microsoft/qlib / generate_order

Function generate_order

examples/rl_order_execution/scripts/gen_training_orders.py:14–40  ·  view source on GitHub ↗
(stock: str, start_idx: int, end_idx: int)

Source from the content-addressed store, hash-verified

12
13
14def generate_order(stock: str, start_idx: int, end_idx: int) -> bool:
15 dataset = pd.read_pickle(DATA_PATH / f"{stock}.pkl")
16 df = dataset.handler.fetch(level=None).reset_index()
17 if len(df) == 0 or df.isnull().values.any() or min(df["$volume0"]) < 1e-5:
18 return False
19
20 df["date"] = df["datetime"].dt.date.astype("datetime64")
21 df = df.set_index(["instrument", "datetime", "date"])
22 df = df.groupby("date", group_keys=False).take(range(start_idx, end_idx)).droplevel(level=0)
23
24 order_all = pd.DataFrame(df.groupby(level=(2, 0), group_keys=False).mean().dropna())
25 order_all["amount"] = np.random.lognormal(-3.28, 1.14) * order_all["$volume0"]
26 order_all = order_all[order_all["amount"] > 0.0]
27 order_all["order_type"] = 0
28 order_all = order_all.drop(columns=["$volume0"])
29
30 order_train = order_all[order_all.index.get_level_values(0) <= pd.Timestamp("2021-06-30")]
31 order_test = order_all[order_all.index.get_level_values(0) > pd.Timestamp("2021-06-30")]
32 order_valid = order_test[order_test.index.get_level_values(0) <= pd.Timestamp("2021-09-30")]
33 order_test = order_test[order_test.index.get_level_values(0) > pd.Timestamp("2021-09-30")]
34
35 for order, tag in zip((order_train, order_valid, order_test, order_all), ("train", "valid", "test", "all")):
36 path = OUTPUT_PATH / tag
37 os.makedirs(path, exist_ok=True)
38 if len(order) > 0:
39 order.to_pickle(path / f"{stock}.pkl.target")
40 return True
41
42
43np.random.seed(1234)

Callers 1

Calls 4

droplevelMethod · 0.80
fetchMethod · 0.45
meanMethod · 0.45
to_pickleMethod · 0.45

Tested by

no test coverage detected