-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
代码如下,有两个疑惑:还请解答,多谢!
-
生成的信号是preds里的close price和last_day_close直接相减,而不是再除以last_day_close得到return。虽然x和preds里的close price都是在当前序列上做了normalize之后的,但相减并不是return。Paper附录关于Signal and Backtest里(15页)提到用的是return。请问这是by design还是bug?也想知道paper里CSI300/CSI800上的回测结果(17页图9),用的是return还是跟如下代码一样的信号?
-
preds里也包含了x:x的shape是[batch_size, lookback_window, 6],preds的shape是[batch_size, lookback_window+predict_window, 6]。这样构建的mean/max/min是从输入x和预测y里一起算。直观感觉应该只用predictions来当信号?
265-280 lines:
with torch.no_grad():
for x, x_stamp, y_stamp, symbols, timestamps in tqdm(loader, desc="Inference"):
preds = auto_regressive_inference(
tokenizer, model, x.to(device), x_stamp.to(device), y_stamp.to(device),
max_context=config['max_context'], pred_len=config['pred_len'], clip=config['clip'],
T=config['T'], top_k=config['top_k'], top_p=config['top_p'], sample_count=config['sample_count']
)
# The 'close' price is at index 3 in `feature_list`
last_day_close = x[:, -1, 3].numpy()
signals = {
'last': preds[:, -1, 3] - last_day_close,
'mean': np.mean(preds[:, :, 3], axis=1) - last_day_close,
'max': np.max(preds[:, :, 3], axis=1) - last_day_close,
'min': np.min(preds[:, :, 3], axis=1) - last_day_close,
}