Skip to content

Finetune qlib_test.py生成信号的问题 #85

@bbfrog

Description

@bbfrog

代码如下,有两个疑惑:还请解答,多谢!

  1. 生成的信号是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还是跟如下代码一样的信号?

  2. 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,
        }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions