Portfolio Performance

一个只读的投资组合报告界面:集中查看业绩、现金流、持仓和风险,日常复盘无需进入交易会话。

如果券商页面没有回答收益率的问题,该怎么看?

账户余额和持仓浮盈,回答不了完整的收益率问题。如果券商界面没有直观呈现时间加权收益率(TWR)或资金加权收益率(IRR),就需要按日期整理账户价值与外部资金流,才能分别看清投资本身的表现和实际投入资金的回报。两种口径回答的不是同一个问题。

这里以 IBKR 为例。它本身已有业绩分析工具,也通过 Flex 提供结构化报表。Portfolio Performance 读取这些记录,为一位投资者整理出独立的只读视图。顾问或家庭办公室可以有不同的报告需求,但相应的视图和访问规则并不是当前单用户系统的功能。

01

报表导入与页面读取,走两条路径

Google 身份验证控制私有 Dashboard 的访问。浏览器经由 Repository 读取 PostgreSQL 中的投资组合记录,没有连接 IBKR 或下单的接口。只有独立的 GitHub Actions Worker 会请求 Flex 报表。

计划任务或 Settings 中获授权的请求会启动 Worker。它检查数据库状态,取得 PostgreSQL advisory lock,再以有限退避轮询 Flex。返回的 XML 经过标准化和核对后,才在事务内幂等写入。验证失败时,最近一次成功导入的记录仍可供查看。

目前系统只服务一位获授权用户。若要给不同受众提供独立视图,需要增加相应的访问规则;多账户报告还需账户级数据分区。

展示身份验证、IBKR 报告、导入自动化、受管理数据、共享领域逻辑与私有 Dashboard 边界的系统架构图
Flex 报表由 Worker 导入;Dashboard 经 Repository 读取写入 PostgreSQL 的记录。
打开完整尺寸工程图 ↗
展示触发、advisory lock、IBKR 轮询、解析、对账、数据库发布、归档与失败路径的同步流程图
Worker 锁定导入、轮询 Flex、核对 XML、写入投资组合,再回读验证结果。
打开完整尺寸工程图 ↗
02

每个视图回答一个具体问题

概览把期末净值与现金流调整后的收益放在一起。盈亏分析区分账户层面的构成与单只证券的期间贡献;Treemap 显示资金集中在哪里;风险页补上期末余额看不出的回撤。它们读取相同日期的记录,但各自回答不同的问题。

以下公开画面使用 Kaggle 标普 500 日收盘价数据集中事后选取的九只股票,区间为 2013 年 2 月 8 日至 2018 年 2 月 7 日。资金流、季度再平衡和交易费均为假设规则,而非事前验证的策略。该情景只计算价格变化,不含股息、利息或基准,也不展示真实账户。 Kaggle S&P 500 ↗

截至 2018 年 2 月 7 日的股票与现金历史演示概览,展示账户指标与业绩控件
以 2013–2018 年标普 500 历史收盘价构建的假设股票与现金组合;交易和资金流为演示规则,不包含股息。
比较账户价值、净投入、收益与回撤的历史演示时间轴
净值与净投入共用时间轴;收益和回撤各有独立的阅读模式。
账户层面的盈亏归因分析
账户盈亏由已实现与未实现价格变化及假设佣金核对闭合。
证券层面的贡献分析
同时展示年初至今贡献为正与为负的持仓。
投资组合敞口 Treemap 与配置视图
以市值决定股票敞口面积,以年初至今贡献决定颜色。
2017 年全年业绩热力图与月度收益表
完整的 2017 年热力图,把盈利日和亏损日放回各个月份中阅读。
历史演示持仓表,展示市值、未实现盈亏和年初至今贡献
精确持仓表区分期末市值、未实现盈亏与期间贡献。
历史组合回撤图与风险指标
回撤图显示投资组合相对前期高点的下降幅度。
03

从 Flex XML 到有日期的投资组合记录

Flex XML 按报表区段返回。解析器把这些区段映射到账户快照、现金流、交易和持仓,并保留日期与币种金额。导入前,系统核对指定区段的总计以及快照之间的关系。

会计领域模型据此计算以 NAV 为基础的每日盈亏、收益率与证券贡献。界面把结果与对应日期、口径放在一起;读者可以从账户数字继续找到背后的时间序列或持仓。

页面上的数字,应当有路可循。

私有系统有明确的限制:只有 Worker 能请求 Flex 数据,导入失败也不会覆盖最近一次成功的投资组合记录。Dashboard 只读取已保存的数据,不获得券商访问能力。

公开 Demo 同样把历史收盘价与假设交易分别标明。它用来展示界面和计算方法,不代表真实账户的投资结果。这条界线出现在图表之前,也是产品设计的一部分。

Portfolio Performance

一个只读的投资组合报告界面:集中查看业绩、现金流、持仓和风险,日常复盘无需进入交易会话。