记账3年,我维护了一张完美的 transaction log,直到被问到 net_worth

0 阅读3分钟

别只 tail -f 流水,你的财务系统需要一个 snapshot

01

我维护一个财务日志系统,已经连续运行了 3 年。

每笔消费——无论是 INSERT INTO expenses (奶茶, 25.00),还是 UPDATE 月底预算——都严格记录。每月跑一次报表,看着支出环比下降 5%,我觉得自己是个合格的“系统管理员”。

老公从不记账。他的工资卡像一个只读数据库,每月直接同步给我。我每月给他转账 3000 元(零花钱),剩余数据由我“处理”。

三年后,系统的 savings 字段从 10 万涨到了 35 万。

直到上个月,老公发起一次查询:

“咱家的 net_worth 是多少?”

我脱口而出:“存款 35 万。”

他又问:“房子、车子、房贷、公积金……这些字段你 JOIN 了吗?”

我瞬间 NULL

02

当晚,我执行了一次跨数据源的全量查询。

python

assets = {
    "my_current": 80_000,
    "husband_current": 20_000,   # 刚发薪
    "time_deposit": 250_000,     # 三年期,锁定期还剩 2 年
    "fund": 34_000,              # 已扣除浮亏
    "house": 2_200_000,
    "car": 80_000,
    "my_housing_fund": 50_000,
    "husband_housing_fund": 120_000
}

liabilities = {
    "mortgage": 650_000,
    "credit_card": 12_000,
    "huabei": 3_000
}

net_worth = sum(assets.values()) - sum(liabilities.values())
print(f"净资产: {net_worth:,}")  # 2,169,000

216.9 万?我反复校验,确认没有溢出错误。

可为什么系统每天还是报“资金紧张”?

03

老公看了一眼我的查询结果,指出两个 BUG:

  1. housing_fund 不是 liquid_asset
    不买房不租房,就无法调用 withdraw()
  2. time_deposit 被锁仓
    提前赎回会触发 penalty(罚息),且目前处于 LOCKED 状态。

我突然意识到:我只查询了 balance,没有检查 liquidity 属性。

我的财务系统只有 transaction log(记账流水),却没有定期的 snapshot(资产负债表)。
而 snapshot 不仅要记录 assets - liabilities,还要给每个资产打标签:liquidity_levellock_periodrisk_tolerance

04

当晚我重构了数据模型,引入了分层存储

python

class CapitalTier:
    def __init__(self, name, liquidity, lock_years, risk):
        self.name = name
        self.liquidity = liquidity   # 0=不可动, 1=可动但成本高, 2=随时
        self.lock_years = lock_years
        self.risk = risk             # 0=保本, 0.8=可接受20%回撤

# 重新分层
tiers = {
    "活钱": { "amount": 100_000, "liquidity": 2, "lock": 0, "risk": 0 },
    "稳钱": { "amount": 250_000 + 170_000, "liquidity": 1, "lock": 2, "risk": 0.02 },
    "长钱": { "amount": 34_000, "liquidity": 2, "lock": 0, "risk": 0.8 }
}

investable = tiers["长钱"]["amount"]  # 34,000
# 外加每月增量 5,000

我之前打算拿 20 万去炒股(直接动用 time_deposit 或 housing_fund),幸亏没执行。
正确的可投资金额只有 3.4 万存量 + 每月 5k 定投。

05

从那以后,我的财务系统增加了两个核心作业:

  1. 每月底执行 snapshot
    记录 net_worthliquidity_ratiotier_distribution
  2. 配置偏离告警
    如果 长钱 占比低于目标(比如 20%),触发 rebalance 信号。

用 SQL 理解就是:

sql

-- 每月快照表
CREATE TABLE monthly_snapshot (
    date DATE,
    net_worth DECIMAL,
    liquid_ratio DECIMAL,   -- 活钱 / 总资产
    growth_ratio DECIMAL    -- 长钱 / 总资产
);

-- 查看净值趋势
SELECT date, net_worth - LAG(net_worth) OVER (ORDER BY date) AS delta
FROM monthly_snapshot;

06

不想手写 SQL 或维护 Python 脚本?用现成工具。

微信搜索「ReFi理财」小程序,里面的“家庭资产负债表”本质上就是:

  • 一个前端 UI 帮你 INSERT/UPDATE 资产和负债
  • 后端自动计算 net_worthliquidity_ratiotier_allocation
  • 每月对比,自动 diff

不需要写代码,但逻辑和你自己设计的 CapitalTier 一模一样。

👉 微信搜索「ReFi理财」→ 家庭资产负债表 → 给你的财务系统建一个 snapshot


最后

记账 = 记录 transaction log(每一笔收支)
资产负债表 = 定期 snapshot(净资产、分层配置、流动性)

两样都有,你才真正拥有家庭财务的可观测性

别像我一样,维护了三年的完美日志,却答不上一个最简单的 SELECT net_worth


本文为真实经历改编,不构成投资建议。欢迎评论区讨论你的“财务分层策略”。