1. 项目概述与核心挑战在金融投资领域构建一个稳健的投资组合核心目标是在控制风险的前提下最大化收益。这听起来像是一个经典的数学优化问题也确实如此——从马科维茨的均值-方差模型开始学术界和业界已经为此奋斗了数十年。然而任何一个在真实市场中摸爬滚打过的人都知道理论模型和实操之间往往隔着一道名为“现实”的鸿沟。这道鸿沟具体是什么首先是数据的极度稀缺性。我们总希望用历史数据预测未来但金融市场瞬息万变真正能提供有效信息、且没有发生结构性变化的“干净”数据窗口期非常短。你可能只有几百周的观测数据却要估计数十个资产的收益与风险特征这本质上是一个“小样本、高维度”的难题极易导致模型过拟合。其次是市场状态的非平稳性。牛市、熊市、震荡市不同“状态”下资产间的相关性、波动率模式可能截然不同。一个在平稳期表现优异的模型可能在市场“状态切换”时瞬间失效。最后是对尾部风险的忽视。传统模型常假设收益服从正态分布但现实是金融数据普遍存在“厚尾”现象——极端亏损事件发生的概率远高于正态分布的预测。2008年金融危机和2020年疫情初期的市场熔断就是最生动的例证。面对这些挑战纯粹基于历史统计量的经典优化器如均值-方差、最小方差显得力不从心。它们对输入参数预期收益、协方差矩阵的微小误差异常敏感导致权重剧烈波动产生高昂的交易成本且无法感知自身预测的不确定性。近年来机器学习尤其是深度学习为捕捉复杂的非线性关系提供了新工具。但“黑箱”神经网络在金融中的应用同样令人担忧它们可能在有限数据上“记忆”噪声而非学习规律在未知市场状态下行为不可预测并且难以将现实的投资约束如换手率限制、头寸上限自然地融入训练目标。那么有没有一种方法既能继承经典优化理论的风险控制精髓又能利用机器学习的数据驱动和泛化能力同时还能让模型“自知之明”——量化自己的不确定性这正是我们本次探索的核心在标签稀缺和市场状态转换的背景下利用贝叶斯神经网络与半监督三明治训练构建一个稳健、可解释且成本可控的投资组合优化代理模型。2. 核心方法论教师-学生框架与三明治训练我们的解决方案核心是一个教师-学生知识蒸馏框架并创新性地引入了半监督三明治训练范式。这个框架的巧妙之处在于它没有试图让神经网络从头开始学习如何做投资而是让它向一个成熟的“老师”学习。2.1 教师模型条件风险价值优化器我们选择条件风险价值作为教师模型的核心风险度量。与关注整体波动率的方差不同CVaR直接关注投资组合损失分布的“坏尾巴”。具体来说在95%的置信水平下CVaR衡量的是当损失超过VaR在险价值时这些极端损失的平均值。这使其对“黑天鹅”事件更为敏感和稳健。在每一期再平衡日教师模型的工作是给定当前的市场特征如历史收益、因子暴露、动量等求解一个凸优化问题找到使得CVaR最小的资产权重组合。这个优化问题的解即最优权重向量就成为了一个“监督标签”。它代表了一种在给定历史信息和风险偏好下理论上最优的、专注于防范尾部风险的资产配置方案。注意为什么不用夏普比率更高的均值-方差模型做老师因为我们的首要目标是控制下行风险构建稳健的组合。均值-方差模型对输入误差敏感且在非正态分布下可能产生危险的头寸。CVaR优化器生成的标签其核心价值在于传递了“如何在极端情况下保护资本”的决策逻辑这正是我们希望学生模型学会的。2.2 学生模型贝叶斯神经网络学生模型的任务是学习一个映射函数输入576维的市场特征向量输出一个在36个资产上的权重分布所有权重和为1且非负。我们对比了两种神经网络架构确定性神经网络标准的全连接网络其参数是固定的点估计。它努力学习复制老师的权重但无法判断自己预测的置信度。贝叶斯神经网络这是本项目的关键。BNN将网络中的权重视为随机变量学习的是这些权重的后验概率分布而非单一值。BNN的核心优势在于不确定性量化。在推理时我们对网络权重进行多次采样例如20次每次采样产生一组可能的权重最终预测是这些权重样本的平均。更重要的是这20次预测结果之间的离散程度直观地反映了模型在当前输入下的“不确定度”。当市场进入陌生或动荡状态时BNN预测的权重方差会增大这就像一个内置的预警系统提示决策者“当前市场环境超出了我的经验范围请谨慎对待我的建议”。2.3 半监督三明治训练从模仿到理解仅有104个由CVaR优化器生成的“真实”标签对于训练一个深度网络来说是远远不够的。直接在这些标签上训练模型极易过拟合。为此我们引入了半监督三明治训练。这个训练范式分为三个阶段像三明治一样将无监督学习夹在中间S0阶段 - 监督预热模型首先在有限的真实标签上进行纯监督学习初步靠近教师模型的决策流形。S1阶段 - 交替循环这是核心。我们交替进行监督阶段用真实标签训练确保模型不偏离老师的核心风险偏好防止“灾难性遗忘”。无监督阶段使用大量合成数据进行训练。这些合成数据没有“老师”提供的标签。训练目标不再是模仿而是直接最小化投资组合在该合成数据场景下的CVaR并最大化投资组合的熵以促进分散化。这个阶段迫使模型理解“风险”和“分散”的本质而不仅仅是记忆特定答案。S2阶段 - 监督锚定最后再次用真实标签进行微调确保模型在学习了通用结构后其输出仍与教师的风险控制理念保持一致。合成数据由基于因子的模型生成并使用t-copula来捕捉资产间真实的尾部相依结构。这相当于为模型创造了一个庞大的“模拟市场”让它能在各种可能尤其是极端的市场情景中练习风险控制极大地增强了其泛化能力。3. 数据构建与特征工程实战任何机器学习项目的成败一半取决于数据和特征。在金融时序数据上这一点尤为关键。3.1 资产池与数据清洗我们构建了一个包含36只资产的全球多元化组合其中23只为美国ETF12只为印度股票统一换算为美元计价外加一个市场基准代理。选择ETF而非个股主要基于三点考量流动性好摩擦小ETF买卖价差窄没有最小交易单位限制使得CVaR教师模型的求解结果更接近可执行状态避免了 microstructure noise 对学习信号的污染。分散化与可管理性36只ETF覆盖了股票、债券、商品、房地产等大类资产足以构建一个分散化的组合同时数量可控保证优化问题可解。面向实际应用ETF是零售和机构投资者最便捷的配置工具低费率、高流动性使得研究成果更容易落地。数据频率为周度时间跨度从2015年至2025年底。清洗规则非常严格任何资产在样本期内周度数据覆盖率低于90%即被剔除且不允许对缺失收益进行插值例如填零因为这会严重扭曲CVaR计算所依赖的尾部损失分布。3.2 特征向量构建给模型一双“慧眼”在每个再平衡日t我们为每个资产构建一个16维的特征向量对于36个资产拼接成一个576维的总输入向量。这些特征仅使用截至t时刻的可用信息计算杜绝未来函数。特征主要分为六大块收益预测与不确定性基于滚动窗口的岭回归融合Fama-French五因子和动量因子预测预期收益并计算该预测的不确定性。PCA结构使用过去104周的收益数据计算前三个主成分的载荷捕捉跨资产的主要协同运动模式。动量包含12-1个月、6个月、1个月的动量Z值从不同时间尺度捕捉趋势。回撤过去52周的最大回撤表征资产近期的脆弱性。状态与约束上一期的持仓权重让模型学习平滑调整以及预设的头寸上限。市场状态市场指数近4周和12周的收益、波动率和回撤为模型提供宏观环境背景。这576个数字就是模型在每一期决策时所看到的“市场快照”。特征工程的质量直接决定了模型能从数据中挖掘出多少有效信息。3.3 实操心得特征稳定性的重要性在滚动回测中一个常见的陷阱是特征计算的“时间穿越”。例如使用全样本数据计算因子均值方差进行标准化就会把未来的信息泄露到历史中。我们的做法是所有特征均基于滚动窗口计算且窗口长度固定。例如计算t时刻的动量只使用[t-52周, t-1周]的数据。虽然这会导致初期数据浪费但保证了模拟的严谨性。在实际部署中也必须是同样的逻辑每个交易日的特征都只能基于当日盘前已有的历史数据计算。4. 模型实现、训练与部署细节4.1 网络架构与输出层设计所有学生模型均为全连接网络。一个关键的设计点是输出层我们使用Softmax函数将网络最后的logits直接映射为资产权重。这天然保证了所有权重非负且和为1完美满足了“满仓、做多”的约束。这是一个“硬约束”通过模型架构本身实现比在损失函数中添加惩罚项软约束更干净、更稳定。对于贝叶斯神经网络我们将网络中部分的线性层替换为变分贝叶斯层。具体来说我们假设这些层的权重服从一个对角高斯后验分布q(W) N(μ_W, σ_W²)先验则是一个简单的各向同性高斯分布p(W) N(0, σ_p² I)。训练时通过重参数化技巧W μ_W σ_W ⊙ ϵ(其中ϵ ~ N(0, I)) 进行采样以计算损失并反向传播。4.2 损失函数详解监督损失在有标签的日期使用均方误差让学生的预测权重向老师看齐。L_sup MSE(weights_student, weights_teacher)对于BNN需要额外加上KL散度项作为对权重后验分布的正则化防止其偏离简单的先验太远从而控制模型复杂度。L_BNN_sup L_sup β * KL(q(W) || p(W))无监督损失在无标签的合成数据日期损失函数由两部分构成经验CVaR损失使用当前模型权重在合成数据的一批收益场景上计算投资组合损失然后取这些损失中最差的5%对应95% CVaR的平均值。直接最小化这个值迫使模型在模拟的极端场景下控制风险。分散化损失计算权重向量的熵的负值-H(w) Σ w_i * log(w_i)。最小化这个值等价于最大化熵鼓励权重更均匀避免过度集中。L_unsup λ_cvar * CVaR_95%(portfolio_losses) λ_div * (-H(weights))超参数β,λ_cvar,λ_div需要通过验证集仔细调优以平衡模仿精度、风险控制和分散化程度。4.3 滚动评估与有限适应协议模型训练完成后会得到一个“冻结”的检查点。在真实市场评估时我们采用一种滚动评估与有限适应的协议以模拟实盘部署初始状态加载冻结的预训练模型。滚动窗口在每一个评估步例如每季度我们取出最近一段时期如过去26周的真实市场数据。有限微调用这部分新数据对冻结模型进行少量轮次的微调让它适应最新的市场状态。预测与重置使用微调后的模型对下一期进行预测。完成预测后立即将模型参数重置回最初的冻结检查点。滚动前进窗口向前滚动重复步骤2-4。这个协议的精髓在于“重置”。它允许模型进行有限的、短期的适应但防止其因持续学习而逐渐偏离最初学到的稳健策略或被最近的市场噪声带偏。这模仿了实践中我们可能会定期如每季度根据近期表现对策略进行小幅校准但策略的核心逻辑应保持稳定的理念。5. 系统性评估与核心发现我们设计了一个三层评估体系从模型稳定性、样本内鲁棒性到样本外泛化能力进行全面检验。5.1 第一层训练稳定性检验在完全由合成数据构成的测试集上我们进行了大规模的网格化测试。每个模型在3种不同的数据划分种子和5种不同的模型初始化种子下各训练一次共15次运行。结果显示均值-方差优化在合成数据上夏普比率最高但其CVaR尾部风险是贝叶斯学生模型BNN-S的2.4倍。这印证了合成数据生成过程更接近正态假设而均值-方差模型在这种“理想环境”下占优但其风险控制是脆弱的。学生模型普遍优于老师最好的学生模型DNN-S的夏普比率比CVaR老师高出32%。这表明学生确实学会了CVaR优化的“结构”而不仅仅是记忆答案从而具备了更好的泛化能力。贝叶斯模型稳定性更佳BNN-S在不同随机种子下的表现标准差小于DNN-S说明其引入的随机性权重分布反而带来了更稳定的输出。5.2 第二层真实市场样本内评估将模型应用于训练时所见的同一组资产C2A评估但时间上处于样本外时期2022-2026并施加了三种约束等级L1无约束直接计算收益。L2压力测试对真实收益施加五种 stylized 扰动波动率爆发、价格跳跃、反复震荡、相关性骤升、复合场景检验模型决策规则的稳健性。L3真实执行加入头寸上限单资产权重不超过8%、周度换手率上限15%以及比例交易成本10个基点。核心发现一隐性的换手率控制这是贝叶斯神经网络带来的最令人惊喜的“涌现属性”。在训练目标中我们完全没有明确地惩罚换手率。然而在L3约束下评估时贝叶斯模型BNN-S的平均周度换手率自然稳定在11-14%之间。相比之下结构相同的确定性模型DNN-S的换手率高达23.6%。假设双边交易成本为10个基点BNN-S的年化交易成本损耗约为0.62%而DNN-S则高达1.23%。这0.6%的差异在长期复利下将是巨大的优势。我们分析这是因为BNN的预测是多次蒙特卡洛采样的平均。这种“平均效应”平滑了权重对输入特征微小变化的敏感度相当于一种内置的参数不确定性正则化自动抑制了不必要的频繁交易。5.3 第三层跨资产池泛化能力测试这是最严格的考验将训练好的模型应用到一个全新的、仅有40%资产与训练集有结构性重叠的资产池D2A评估。这模拟了将一个策略应用到另一个国家市场或另一组行业ETF的场景。核心发现二高风险波动期的“悖论式”改进在D2A评估中我们观察到一个有趣的现象在高波动市场状态下学生模型特别是BNN-S相对于基准模型的夏普比率改善幅度140% 到 276%远高于在低波动状态下的改善。这表明模型从训练集的宽基指数和多元化资产中学到的可能是一种通用的风险缓释启发式方法。当应用到新的、个股或行业ETF构成的环境中时这种“风险意识”在波动加剧时被证明更为宝贵。模型并非记忆了特定资产的关系而是学会了如何在压力下进行防御性配置。5.4 贝叶斯 vs. 确定性综合对比我们将所有模型的夏普比率和CVaR绘制在一张图上形成了风险-收益前沿。BNN-S占据了帕累托最优区域的前沿位置即在同一水平的尾部风险CVaR下它能提供更高的夏普比率或者说在同一夏普比率水平下它的下行风险更小。而均值-方差模型则完全被“支配”——它提供了与BNN-S相似的夏普但承担了数倍的尾部风险。6. 常见问题、挑战与避坑指南在实际复现和应用此类框架时会遇到诸多挑战。以下是一些实录的问题与解决思路。6.1 合成数据生成如何避免“虚假的安逸”合成数据是解决小样本问题的利器但生成不当会带来严重问题。问题如果合成数据过于“简单”或分布与真实数据偏差太大模型可能在合成数据上表现完美但一上实盘就崩溃。对策我们的因子t-copula方法旨在保留真实数据的关键统计特性尤其是资产间的尾部相关性。必须进行严格的“合理性检查”比较合成数据与真实数据在波动率、偏度、峰度、以及滚动相关系数矩阵等指标上的差异。合成数据的尾部应比真实数据略厚一些以提供更严格的压力测试。6.2 贝叶斯神经网络训练效率与精度之困BNN的训练比确定性网络慢且变分推断可能引入近似误差。问题1训练速度慢。每次前向传播都需要采样计算量增大。技巧并非所有层都需要贝叶斯化。通常只在最后几层全连接层使用贝叶斯层就能捕获足够的预测不确定性同时大幅减少计算开销。我们实验中仅将最后两层改为贝叶斯层效果与全部贝叶斯化相近。问题2KL散度权重β难以调优。β过大会导致后验坍缩到先验欠拟合过小则失去正则化效果过拟合。技巧采用“KL退火”策略。在训练初期设置一个很小的β甚至为0让模型先专注于拟合数据随着训练进行线性或指数增加β逐步引入正则化。这通常能获得更稳定的训练过程和更好的最终性能。6.3 半监督训练中监督与无监督的平衡三明治训练中监督阶段和无监督阶段的轮数比例是关键。问题无监督阶段太长模型可能忘记老师的风险偏好监督阶段太长模型又无法充分从合成数据的广阔分布中学习。实操记录在我们的设置中一个有效的节奏是监督预热10轮然后进行5个“交替循环”每个循环内先进行2轮监督训练再进行5轮无监督训练。最后再进行3轮监督锚定。这个节奏需要在验证集上根据“模仿误差”监督损失和“风险指标”无监督CVaR进行微调。6.4 实盘部署考虑延迟、成本与监控预测延迟BNN需要多次前向传播如20次并取平均这比确定性网络慢。对于低频如周度、月度调仓策略这点延迟可以接受。对于高频策略则需要考虑使用更高效的近似推理方法或仅在生产环境中使用确定性网络而将BNN用于离线的不确定性监控。交易成本建模我们的L3约束包含了简单的比例成本。在实盘中成本模型可能更复杂包括固定费用、滑价等。一个建议是将更精细的成本模型直接整合到无监督训练的损失函数中让模型在训练时就能“看到”成本。不确定性监控BNN提供的预测权重标准差是一个宝贵的监控指标。可以设定一个阈值当不确定性超过该阈值时触发警报并可能自动降低仓位或切换到备用策略。这是将模型不确定性转化为具体风控动作的关键。7. 总结与展望本次探索验证了在数据稀缺和状态转换的挑战下将经典金融优化理论与现代贝叶斯深度学习相结合的可行性。CVaR教师提供了稳健的风险控制蓝图半监督三明治训练利用合成数据突破了样本量的限制而贝叶斯神经网络则贡献了不确定性量化和隐性的交易成本控制两大关键优势。从个人实践角度看这个框架最大的魅力在于它的系统性和可解释性增强。它不是一个“黑箱”扔进去数据就出权重。教师模型、合成数据生成、贝叶斯不确定性、交替训练每个环节都有其明确的金融或机器学习逻辑。当模型表现异常时我们可以检查是教师信号出了问题还是合成数据失真或是模型不确定性骤升这为策略诊断和维护提供了抓手。当然这只是一个起点。未来的扩展方向很多可以引入注意力机制让模型动态关注不同时间尺度的特征可以将三明治训练中的无监督目标替换为更复杂的效用函数也可以探索在线学习机制让模型在不重置的情况下进行持续而谨慎的更新。在金融这个充满不确定性的领域拥抱不确定性通过贝叶斯方法并学会在稀缺信息下稳健决策通过半监督学习或许正是下一代量化模型进化的方向。