不敢投资,不是胆量问题,是没定义好
investment_budget这个函数
01 需求背景
我表哥,41岁,外企技术总监,嫂子中学老师。家庭年税后收入≈80w,房贷余额60w,孩子初一。多年积累,账面闲钱100w。
他想将部分资金从活期(年化0.3%)迁移到权益类资产(预期8%-10%),但每次打开理财App,看到风险提示就return None。
“万一亏了,孩子大学学费就没了。到底该拿多少钱去投资?”
这个问题本质是:给定总闲钱 CC,如何计算风险预算 RR 下的可投资额度 II?
02 第一步:全量资产盘点(数据采集)
python
# 资产端 (单位: 万元)
assets = {
"current": 20, # 活期
"time_deposit": 80, # 定期
"house": 550, # 自住房
"car": 20,
"provident_fund": 25
}
# 负债端
liabilities = {
"mortgage": 60,
"credit_card": 2
}
net_worth = sum(assets.values()) - sum(liabilities.values())
print(f"净资产: {net_worth}") # 633
表哥惊讶:“我有633万家底?”
“但其中大部分是自住房(非流动)和公积金(锁定),真正可支配的只有那100万闲钱。”
03 第二步:分层资金池架构(Three-Tier Liquidity Model)
借鉴存储系统的热/温/冷分层思想,我们将100万闲钱划分为三个池子:
| 层级 | 名称 | 用途 | 流动性 | 风险容忍 | 金额(万) |
|---|---|---|---|---|---|
| L1 | 保命钱 | 6个月生活费 | 高 | 0% | 12 |
| L2 | 保底钱 | 3年内大额支出 | 中 | <2% | 20 |
| L3 | 生钱的钱 | 长期投资 | 中低 | ≤20% | 68 |
python
class CapitalPool:
def __init__(self, name, amount, liquidity, max_drawdown):
self.name = name
self.amount = amount
self.liquidity = liquidity # 0-1, 1=随时
self.max_drawdown = max_drawdown # 允许最大回撤
idle_capital = 100
pool_safety = CapitalPool("保命钱", 12, 1.0, 0.00)
pool_stable = CapitalPool("保底钱", 20, 0.8, 0.02)
pool_growth = CapitalPool("生钱的钱", idle_capital - 12 - 20, 0.6, 0.20)
investable = pool_growth.amount
print(f"可投资金额: {investable} 万") # 68
关键洞察:主观风险承受力不是百分比,而是绝对亏损额度。
表哥能接受的绝对亏损上限 = ?
若他害怕亏损超过15万,则可用公式:
max_loss = 15→I = max_loss / max_drawdown = 15 / 0.2 = 75万,但受限于闲钱结构,实际68万。
04 第三步:可投资金的二次风险预算(Risk Pyramid)
对68万L3资金,进一步采用风险金字塔分配:
python
# 风险预算分配(权重和=1)
allocation = {
"core_index": 0.40, # 宽基指数基金(沪深300/标普500)
"bond_income": 0.30, # 债券/高分红类
"satellite": 0.30 # 行业基金/主动管理/股票学习
}
amount_core = investable * allocation["core_index"] # 27.2万
amount_bond = investable * allocation["bond_income"] # 20.4万
amount_satellite = investable * allocation["satellite"] # 20.4万
这套配置的历史最大回撤约15%-18%,仍在风险预算内。
05 第四步:运行时监控(每月snapshot)
建立月度快照表,跟踪净值变化和配置偏离:
sql
CREATE TABLE monthly_snapshot (
date DATE PRIMARY KEY,
l1_amount DECIMAL,
l2_amount DECIMAL,
l3_amount DECIMAL,
l3_allocation JSON, -- 实际权重
net_worth DECIMAL
);
-- 查看偏离告警
SELECT date,
l3_allocation->>'core_index' AS actual_core,
0.40 AS target_core
FROM monthly_snapshot
WHERE ABS(actual_core - 0.40) > 0.05;
06 三个月后的运行结果
表哥执行了DCA(定期定额)买入,每月定投指数基金。后来市场下跌8%,他未恐慌,因为:
- 亏损来自L3层,L1、L2完好
- 绝对亏损额 = 68 * 0.08 = 5.44万,远低于他的心理阈值
他说:“以前看总资产波动,现在分层后,每一层的风险都可视化了。”
07 工具推荐:ReFi理财小程序
不想手写代码?微信搜索「ReFi理财」小程序,其“家庭资产负债表”底层就是分层资金池模型:
- 自动计算净资产、L1/L2/L3分层
- 支持自定义保命钱、保底钱金额
- 直接输出可投资金额,并给出参考配置
👉 微信搜索「ReFi理财」→ 家庭资产负债表 → 获取你的投资额度
08 总结
- 记账 =
transaction log - 资产负债表 =
snapshot - 分层资金池 =
storage tiering - 可投资金额 =
risk_budget(total_idle, max_loss, max_drawdown)
用工程师的方式理财:先定义模型,再分配资源,最后持续监控。
本文为真实经历改编,不构成投资建议。欢迎评论区讨论你的资金分层策略。