← 返回洞见栏目

归因分析里我不妥协的一条原则:数字对不平,就不下结论

投资归因最重要的不是把盈亏拆得多细,而是每一项都能和总结果对得上。WealthSight 的闭合校验要求价格波动盈亏、收入影响、交易执行、汇率波动四项之和与总盈亏在 0.01 本位币容差内对上,异常时定位残差最大的日期和标的;数据无法自洽时,不强行给结论。

我一直认为,一款投资分析软件最危险的错误,不是告诉你“算不出来”。

而是:

在数据有问题的时候,依然给你一个看起来非常专业的答案。

因为“算不出来”至少会让你停下来检查。

但一个看起来精确的错误数字,很容易让人直接相信。

尤其是投资归因。

归因分析的目的,是把一段时间的总盈亏进一步拆开:

这部分来自价格变化。

这部分来自分红、利息等投资收入。

这部分来自自己的买卖。

还有一部分来自汇率变化。

这样做的意义,是让你终于能够回答:

“我这段时间到底是怎么赚到这些钱,或者亏掉这些钱的?”

但这个问题有一个不能绕开的前提:

拆出来的东西,必须能够重新合回去。

如果拆解出来的几项加起来,和真实的总盈亏对不上,那么这些“收益来源”就没有资格成为结论。

所以在 WealthSight 里,我有一条不愿意妥协的原则:

数字对不平,就不下结论。


归因不是把一个数字拆成几个数字

很多人第一次看到收益归因,会觉得它只是一个更复杂的收益率。

比如:

总收益 10 万元。

然后软件告诉你:

价格贡献 +7 万。

分红贡献 +1 万。

交易贡献 +1.5 万。

汇率贡献 +0.5 万。

看起来非常完整。

但真正的问题是:

这几个数字加起来,真的应该是 10 万吗?

如果不是,那么拆得再细也没有意义。

归因分析最核心的不是“能拆出多少项目”。

而是:

拆解之后,能不能重新解释原来的结果。

所以 WealthSight 做归因时,首先要守住的是这条最基本的关系:

分解结果必须和总盈亏闭合。

只有能够闭合,后面的“价格贡献”“交易贡献”“汇率贡献”才有意义。

否则,只是在一个错误的总账上继续做更精细的数学。


为什么账对不上,往往不是归因算法的问题

实际遇到数据不闭合时,问题很多时候并不在归因公式。

而是在更早的地方。

例如:

历史上发生过拆股,但数量变化没有正确记录。

登记了一次分红事件,却没有对应的分红交易。

某段时间缺少历史价格。

交易记录和当前持仓没有对应起来。

某一次账户转移没有完整记录。

这些事情单独看,都可能只是一个“小问题”。

但一旦进入长期投资分析,它们就可能改变最终结果。

比如一次拆股。

如果原来持有 100 股,后来变成 200 股,而历史记录没有正确反映数量变化,系统可能把本来正常的价格变化理解成异常亏损。

又比如一笔分红。

如果系统知道“这里发生过分红”,却没有找到对应的收入记录,那么这笔钱到底去了哪里?

它不能凭空消失。

也不能为了让账平起来,随便补一个数字。

所以我们更愿意把这些问题留在数据层解决,而不是让归因层替它们掩盖。


一个投资分析软件,应该允许自己说“我现在不能确定”

这是 WealthSight 在产品设计上很坚持的一点。

很多软件天然倾向于:

用户点了分析,就应该返回一个结果。

因为没有结果,看起来就像功能没有工作。

但投资分析不是这样。

如果底层数据存在矛盾,继续输出结果并不能说明软件更强。

恰恰相反。

真正值得信任的系统,应该知道什么时候:

不能给答案。

所以 WealthSight 的归因分析有一道闭合校验。

当价格波动盈亏、收入影响、交易执行、汇率波动四项归因重新合计后,与总盈亏之间出现超过容差的差异时,系统会明确提示。

目前这个容差是 0.01 本位币

这不是为了追求数学上的“好看”。

而是因为:

如果一个结果不能解释总账,就不应该被包装成正式结论。


更重要的是:告诉你哪里可能出了问题

“数据有误,请检查。”

这种提示其实没有多大帮助。

真正的数据校验,应该尽可能告诉你:

问题可能在哪里。

所以 WealthSight 不只是提示归因没有闭合,还会帮助缩小排查范围。

例如定位:

残差最大的日期。

残差最大的标的。

然后你可以继续回到相关的交易、事件和历史价格去检查。

这时候,原本一个抽象的:

“为什么收益归因对不上?”

就会变成一个可以实际处理的问题:

“是不是这一天发生过拆股?”

“是不是这个标的的分红没有对应交易?”

“是不是这一段历史价格缺失?”

好的校验不是告诉你“错了”。

而是帮助你找到“可能是哪里错了”。


我们不会为了“平账”而替你改数据

这里其实还有一个很容易做、但我不愿意做的功能。

假设系统发现:

总盈亏是 10000 元。

四项归因加起来只有 9700 元。

差了 300 元。

最简单的办法是什么?

随便找一个项目,加上 300。

账就平了。

界面也可以恢复正常。

甚至用户可能根本不会发现。

但这不是修复。

这是把错误藏起来。

系统不知道那 300 元到底是什么。

它可能是一笔漏记的分红。

可能是一笔没有记录的资金变化。

可能是拆股。

可能是历史价格问题。

也可能是其他数据缺失。

在不知道原因的情况下,软件没有资格替你创造一条事实。

所以 WealthSight 的原则是:

系统可以发现问题,但不应该替你编造事实来消灭问题。

“只定位、不自动修”这条取舍,我在《账本必须自己解释自己》里已经按持仓的维度展开过。归因守的是同一条线。

真正的数据修正,应该由投资者确认。

因为那是你的投资历史。

不是软件的历史。


但这并不意味着:少记一笔,就永远不能用

这里还有一个很重要的边界。

我并不认为一个人的投资档案必须达到“每一分钱都绝对完整”,才能开始使用。

现实中的投资历史很难做到这一点。

十年前的一笔小额分红找不到了。

早年的一份对账单丢了。

某个已经销户的账户只有部分记录。

这些情况都很正常。

所以 WealthSight 并不要求你先把过去十年的所有历史补齐。

可以不完整。

但需要知道哪里不完整。

这两件事情完全不同。

例如,一笔分红你从来没有登记过。

那么系统没有办法知道这笔分红曾经发生。

它不会因为你没记录,就凭空创造一条数据。

这部分收益自然不会进入相关分析。

这是“不完整”。

但如果你已经明确登记:

“这里发生了一笔分红。”

那么系统就应该能够继续追问:

这笔分红对应的交易在哪里?

这就是“不允许自相矛盾”。

所以我们真正坚持的并不是:

“所有数据必须完整。”

而是:

“你已经记录的事实,必须尽可能自洽。”

这是一个很重要的区别。


为什么我宁可让你晚一点看到结论

因为 WealthSight 最终想做的不是一个“收益率计算器”。

它想帮你完成的是投资复盘。

而复盘最怕什么?

不是少一个数字。

而是:

你基于一个错误的数字,得出了一个错误的判断。

假设系统告诉你:

今年赚了 20%。

其中:

15% 来自选股。

3% 来自交易。

2% 来自汇率。

于是你得出结论:

“看来我的主动交易能力不错。”

然后明年继续按照同样的方法操作。

但如果底层归因其实没有闭合,这个结论可能从一开始就是错的。

这就是为什么我认为:

投资分析软件不仅要计算结果,还应该保护用户不要过度相信结果。

当数据还没有足够可靠时,最有价值的提示可能不是:

“你的交易贡献是 +3%。”

而是:

“当前数据无法完成可靠归因,请先检查异常。”

这句话可能没有那么令人兴奋。

但它更诚实。


我希望 WealthSight 给你的,是可以被追问的数字

投资分析真正有价值的状态,不是:

“软件告诉我今年赚了 18.63%。”

而是你可以继续问:

为什么是 18.63%?

这个数字怎么计算的?

哪些因素贡献了收益?

哪些交易影响了结果?

如果不做这些交易,会怎么样?

如果和长期持有相比,结果如何?

当你继续追问时,软件应该能够继续给出解释。

而不是只能说:

“算法算出来就是这个数字。”

所以从产品设计上,我们一直在做一件事情:

让账能够解释自己。

交易可以追溯。

持仓可以核对。

收益可以解释。

归因可以闭合。

异常可以定位。

数据不可靠时,可以明确告诉你。

这些能力其实都指向同一个目标:

让投资分析从“相信一个数字”,变成“理解一个结果”。


归因很高级,但它底下是很朴素的东西

归因分析看起来很高级。

但它其实建立在一个非常朴素的东西上:

可靠的投资历史。

没有完整的交易记录,就无法准确还原持仓。

没有稳定的历史价格,就无法正确计算期间结果。

没有明确的现金流,就无法正确理解收益。

没有统一的计算口径,就无法比较不同时间段。

没有这些基础,归因算法再复杂,也只是把不确定性计算得更漂亮。

“档案先于分析”这个顺序,我在《我为什么把“投资档案”放在“复盘分析”之前》里已经展开过,这里不重复。归因这一侧只想补一句:它对基础的要求比一般分析更苛刻——不但要求总盈亏是对的,还要求这个总数能被拆成正确的比例。一个数据漏洞,推翻的不是一个数字,而是一组数字的正确性。

所以我们不急着把高级功能都推到前台。

因为对于一个真正准备保存很多年的投资档案来说,

一个暂时没有结论的正确状态,比一个漂亮但无法验证的结论更有价值。


我不希望 WealthSight 总是给你答案

这可能是一个不太符合“产品宣传”习惯的说法。

但我确实这么认为。

如果所有情况下,软件都能给你一个答案,那反而值得警惕。

因为真实的投资历史本来就会有缺失、有异常、有无法确认的地方。

好的软件不是把这些东西全部藏起来。

而是:

知道什么可以确定。

知道什么还不能确定。

知道为什么不能确定。

并且帮助你找到解决它的方法。

所以在 WealthSight 里,我宁愿看到:

“当前数据无法完成可靠归因。”

也不愿意看到一个:

“交易贡献 +2.37%”

但没有人知道这个数字到底是怎么来的。


数字对平,只是一个很小的技术细节

归因闭合校验看起来只是一个技术功能。

但对我来说,它背后其实代表了 WealthSight 做投资软件时的一条基本原则:

不要为了让产品看起来更完整,而牺牲结果的可信度。

可以没有答案。

可以让用户补数据。

可以提示异常。

甚至可以暂时阻止分析。

但不能明明知道数据有问题,还交给用户一个确定的结论。

因为 WealthSight 最终想保存的,不只是你今天看到的一张分析图。

而是你未来几年回头看时,依然愿意相信的一份投资档案。

账能解释自己,分析才有资格说话。

而如果数字还没有对平,

那就先别急着下结论。

如果你也想开始记录自己的投资历史

可以先用 WealthSight 的示例账套体验完整流程,觉得有价值,再导入自己的券商交易记录。无需集齐全部历史数据,投资数据仅存储在本机。

免责声明:本文不构成投资建议,产品不荐股、不预测行情。WealthSight 是本地投资档案工具,用于整合、查看与管理你个人的投资交易与持仓数据,不承诺投资收益。