Skip to content
文章目录
GitHub Star

一份基金研究报告,为什么关键结论仍可能不成立? ​

一份基金研究报告可以有清晰的表格、真实的引用、正确的部分计算,甚至通过预先设定的多数检查项,却仍然写出一个不应当成立的投资结论。

核对一份金融报告,通常需要三种不同的判断:数字关系能否对平、取得的资料覆盖了什么、所用规则是否适用于这笔业务。 计算、引用和评测分数各自提供一部分依据,最终还要把它们接回具体结论。

下面用 ETF Agent 的三个实例解释这些判断,再将它们整理成一份可复用的评审方法。案例来自公开基金资料与合成组合输入上的真实模型执行、保存正文和人工辅助的非盲、有界复核,不涉及个人账户实盘,也不作为独立审计或模型总体准确率估计。

一、现金表:能算出数字,不等于账能对平 ​

先看最直观的失败。报告列出现金流和余额,表格里的单项数字看起来都有出处。但“本期动用了多少现金”与期初、期末余额无法形成一致的资金桥。

在只有一个现金池、且同一币种同一时点口径的简化情形里,至少要核对:

text
期末现金 = 期初现金 + 本期流入 − 本期流出 + 其他已解释的调整

若报告所说的“动用现金”把转入、转出、分红、费用或时点转换混在不同定义里,即使每个加法都正确,整体解释仍可能不成立。这不是再要求模型多算一次,而是要求报告给出同一对象、同一期间、同一资金定义下能够对平的关系;对不上时说明差额和待核项。

本次原研究的失败是已保存正文中的数值不一致。现有证据不能把责任精确归给某个工具、某一步提示词或某次压缩,因此不把它包装成已定位的 Runtime 根因。对读者有价值的动作是:将“期初—变动—期末”设为一项独立的领域验收,而不是仅凭某几行计算成功给报告放行。

二、最大持仓:缺失的数据不是零 ​

更隐蔽的错误发生在投资组合穿透。用户想知道最大的底层公司风险。Agent 查到两只基金的前十大持仓,算出了各自对整个组合的贡献,报告于是将其中一家公司列为“最大单一持仓”。

问题在于:“已披露持仓里的最大值”与“完整组合里的最大值”是两种命题。

该次正文中,一家公司在已披露数据里的组合贡献为 3.451 个百分点。这足以支持“在目前读取的记录中,这家公司贡献最高”;却不足以排除另一家公司还出现在未读取的基金持仓里。

为了检验这一点,我们在事后构造了一个与已披露数值相容的假设补全,不是对实际隐含持仓的发现:

假设中的信息对整个组合的贡献
公司 Y 在基金 A 中占 10.03%,基金 A 占组合 30%3.009 个百分点
假设公司 Y 另占基金 B 1.50%,基金 B 占组合 40%0.600 个百分点
公司 Y 的假设合计贡献3.609 个百分点
原报告已披露的公司 X 贡献3.451 个百分点

这只证明:在某种没有违反已知前十持仓范围的补全方式下,公司 Y 可以超过公司 X。它不证明实际持仓里 Y 真的超过 X,更不代表我们发现了尚未披露的基金明细。

关键在逻辑:如果两只基金只读了前十,其他持仓与部分宽基暴露仍未知,就没有证据排除这样的补全。报告可以列出已披露范围的排序,可以给出覆盖率和未知项,但不应将局部榜单升级为全组合排名。

同理,若要把一个暴露估算称为“严格下限”,必须证明遗漏部分对该指标的贡献不会使所谓下限失效,并说明各层资产权重是否经过完整、一致的口径调整。一个看起来保守的数字,不会因为被命名为“下限”就自动满足数学条件。

三、费用判断:正确数字也要放进正确的交易制度 ​

另一轮研究比较了两只 ETF 的季度表现、持仓重叠和成本。在同题的一次真实复验中,报告把“ETF 场内交易印花税”列作持有人交易成本。这个错误指向第三种核对:计算之前,先确定适用的交易制度。 这不是百分点相加出了错,而是把另一类证券交易的税费规则套到了 ETF 二级市场交易上。上海证券交易所的 ETF 投资者教育问答 明确提及 ETF 二级市场交易无需缴纳印花税;国家税务总局上海市税务局的印花税问答 则说明证券交易印花税所指的股票与股票存托凭证范围。这里讨论的是上述场景,不能据此替所有证券品种、境外市场和申赎环节制定一条统一费率规则。

这个反例改变的是金融业务验收方式:给交易成本打分时,必须先绑定交易对象、交易场所、买卖或申赎路径,以及规则适用时点,然后才有资格加总金额。费率计算工具再精确,也不能替领域判断选择适用规则。

四、“四项通过”为什么仍不能给整篇报告盖章 ​

真正有用的测评不是给长文贴一个好看的总分,而是明确评分判定了什么。

把前面的案例放回各自记录,可以看清评分范围。第一份基金研究完成了真实模型执行,最终 HTML 可读,但冻结的四项必要条件只有两项通过:现金无法对平,覆盖不足的地区暴露又被写成严格下限;最大持仓的过强措辞来自对同一正文的事后复核。另一份双 ETF 报告通过了当时四项必要条件,随后却发现关于分红与基金资产变化的额外断言缺少充分依据。同题后续复验则通过来源时点、回报单位与持仓计算三项,在共同风险与费用维度失败。

这些记录属于不同题目版本、运行和证据范围,不能排列成“50% → 100% → 75%”的模型质量曲线。它们说明的是:预先冻结的评分与后来逐句发现的问题,需要同时保留、分别解释。 把这三层分开,才不会丢掉真实信息:

检查层次能回答什么不能替代什么
资料与运行事实这份资料是否实际被读到,哪版正文被保存资料是否完整、某句话是否得到支持
冻结的必要条件此份答案是否满足题目预先规定的有限判断长报告中所有新增结论的正确性
事后主张审查某一句额外断言是否越过证据范围原评分的时间线、总体模型成功率

尤其要避免两种相反错误:看到事后新问题,就悄悄修改原来冻结的评分;或者因为原评分为 pass,就把后来发现的真实问题藏起来。更好的做法是原评审不改写、新发现单独注明、未来需要时先修订题目与依据再重测。

评审记录也需要分清关联身份与内容支持:答案和来源指纹一致,证明评的是同一份对象;并不自动证明评语已经覆盖每一条来源,更不能因为报告里出现某份季报,就宣称该条结论实际由它支持。

五、让结论带着资格,而不只是数字和链接 ​

实际评审可以先圈出可能影响配置判断的主张,再逐条填写五项信息:

  1. 对象是谁? 基金、份额类别、底层公司、账户还是整个组合;不要在句子中悄悄切换。
  2. 依据截至何时? 公布时间、报告期末、实际获取时间与本次比较窗口是否一致。
  3. 用哪个分母与方法? 基金内权重、组合权重、收益百分点、现金余额还是交易费用;相同数字不能随意互换口径。
  4. 覆盖到哪里? 前十大、已读取两份季报、所有可用报告,还是完整底层持仓;“没取到”不能自动成为“没有”。
  5. 允许说多大? 可以说“已披露数据中的最大值”,还是有充分依据说“全组合最大值”;只能列条件,还是可以下确定性判断。

例如,面对只有前十大明细的组合穿透,不必阻断整份报告。更好的输出可以是:

在本次已读取的基金持仓范围内,公司 X 的组合贡献最高,为 3.451 个百分点。由于其他持仓和部分宽基成分尚未完整取得,当前不能确定它是否为全组合最大单一持仓。

这种写法不是笼统地给每段加一句“仅供参考”,而是把未知安放在它真正影响的结论上。现金表无法对平时,则应退回数值桥重新核实;费用规则不适用时,应撤回错误费用项,而不是仅附一个含糊的风险提示。

从工程上看,确定性计算负责单位、公式和恒等式;数据读取负责对象、版本与覆盖;主 Agent 负责组织研究与解释;评审机制检查重点主张的适用资格。几个职责协作,不意味着任何一方获得了替所有结论签字的权力。

结语:好报告不仅要给答案,还要知道哪句话暂时不能说 ​

这次复盘最重要的收获,不是又发现了几个模型错误,而是更清楚地区分了三种失败:数值对不上、证据没有覆盖、规则不适用。三者都可能藏在格式完整、来源真实的长报告里,修复动作却完全不同。

下一次验收金融研究 Agent,我会先选出少量真正影响投资解释的主张,逐条核对对象、时点、分母、范围与适用规则;能算清楚的复算,缺失的标明覆盖,制度不适用的撤回。让模型继续研究,或保留有价值的部分报告,都比用一个总分替全部句子作保证更稳妥。

相关阅读:金融 Agent 的可信证据链讨论跨工具的来源传递;Python 结果与投研解释讨论方法与结果消费;Agent 测评全景讨论评审对象、分母与证据资格。本文聚焦的则是一条金融主张究竟取得了多大的发言资格。

与个人博客并行:这里按问题连续阅读,博客保留时间线。 · 联系邮箱:hpoenixf@foxmail.com · 微信:hpoenixf0510