Project 说明里写到的 Final
Group Project 的说明写明,Final Exam 会有基于这份 Project 的题目。题目不问某只股票或某个小组,默认你亲手建过、跑过、评估过这类模型。官方举的例子有读估计输出、找预测代码的错、解释怎样从 foundation model 得到尾部风险。这些只是例子,完整题型清单没有公布。
官方还提醒每个成员都要弄懂分析的每一部分。Project 里你没有亲手跑过的部分,可以拿组里的代码和输出,对照这篇的几处检查读一遍。
累计 10 日 VaR 的预测代码
示例设定:ret 是每日百分比对数收益,end 是还没观测到的那一天的位置。sim 是模型生成的 10000 条未来路径,每行一条路径,每列一天。要预测的是未来 10 天累计收益在 2.5% 水平的 VaR 和 ES。
train = ret.iloc[:end + 1]
target_samples = sim[:, 9]
actual = ret.iloc[end:end + 9].sum()
q = np.quantile(target_samples, 0.025)
VaR = -q
ES = -target_samples[target_samples >= q].mean()
这段代码运行时不会报错,错误要靠核对每一行的日期和目标才能发现。
iloc 的右端不包含在结果里,所以 :end + 1 把位置 end 也放进了训练集。这一天在预测时还没发生,属于未来信息,训练集要写成 ret.iloc[:end]。
sim[:, 9] 取的是第 10 天这一天的收益。累计 10 天要把每条路径的 10 列加起来,写成 sim.sum(axis=1)。加总放在每条路径内部做,路径之间的差异才保留得下来。把 10 个单日 VaR 相加得不到累计 VaR,因为每一天的极端结果通常落在不同的路径上。
end:end + 9 只取到 9 个实际观测,和 10 日的预测目标差一天,右端要写 end + 10。
>= q 选中的是分位数以上约 97.5% 的路径,它们的均值接近全部路径的均值,和尾部损失没有关系。改成 <= q 以后,进入平均的路径约有 10000 × 0.025 = 250 条,算出的 ES 不会小于 VaR。






