FinAgent模拟交易(下):资产仪表盘、单股联动与风险提示
摘要:在模拟交易账本与市价单(上篇)落地后,本文记录第二阶段至第四阶段的前后端实现:按日资产快照与ECharts仪表盘、与单股分析的轻量联动、以及标题下黄色风险提示框。
关键词:FinAgent;模拟交易;仪表盘
一、为什么要加仪表盘
仅有顶部数字卡片(总资产、现金、市值、盈亏),演示时仍偏表格工具,需要更加可视化的功能实现。参照券商App 见能力,第二阶段增加:
- 总资产曲线(按日快照)
- 今日盈亏/累计收益率
- 持仓配置饼图(现金vs各股票)
二、后端:日快照与dashboard API
2.1 新表paper_equity_snapshots
每天给账户拍一张资产照片,存:
| 字段 | 说明 |
|---|---|
snapshot_date | 自然日,与account_id联合唯一 |
total_equity | 总资产=现金+持仓市值 |
cash/market_value | 把总资产拆分:现金和持仓市值 |
unrealized_pnl/realized_pnl | 快照时刻盈亏(包含当时浮动盈亏、已实现盈亏) |
写入时机:
- 开通账户时
- 市价单成交成功
- 用户打开
dashboard或账户接口时,当天如果没有就补一条(upsert)
老账户如果从没拍过照,系统会在开户日补一条全是现金的点,避免曲线为空。
2.2 前端仪表盘所用数据
| 字段 | 说明 |
|---|---|
summary | 同账户摘要(持仓估值后) |
equity_curve | 按日的总资产序列(大约180天) |
allocation | 现金vs各股票市值占比 |
metrics | 累计收益率、今日盈亏、现金/持仓占比 |
指标计算要点:
- 累计收益率=
(总资产/初始资金-1)×100% - 今日盈亏=当前总资产−昨日(或今日前最近)快照总资产
- 浮动盈亏看成本价;今日盈亏看昨日账户总值——二者可不一致。
三、前端仪表盘组件
组件(ECharts+echarts-for-react):
| 区块 | 内容 |
|---|---|
| KPI条 | 累计收益率、今日盈亏(金额+%)、现金/持仓占比 |
| 资产走势 | 折线+面积;虚线标初始资金;tooltip展示当日现金/市值 |
| 资产配置 | 环形饼图:现金+各company_name/代码(持仓) |
支持深色主题。
页面整合:PaperTradingPage改为fetchPaperDashboard();下单、刷新后自动更新曲线与饼图。
四、与单股分析联动
4.1 设计目标
把分析链路的风控信号接到模拟交易,形成:
单股分析→trading_signal→模拟下单→持仓/曲线4.2 第一版
曾在单股分析配置区下方增加:
- 读取当前代码的模拟持仓
- 展示风控信号,买入/卖出可以一键带入方向
- 本页市价下单、一键卖出、跳转完整交易页
同时在分析结果区增加**「去模拟下单」**的功能按钮。
模拟交易页侧添加:
- 下单区**「分析此标的」**
- 持仓表分析/卖出;代码链回单股分析
4.3第二版修改版
去掉:单股分析配置区整块的模拟交易联动面板,避免打断分析动线。
保留:
- 分析结果区顶部去模拟下单快捷条
- 模拟交易页→单股分析的分析此标的/持仓分析
4.4 双向跳转一览
| 来源 | 目标 | 方式 |
|---|---|---|
| 分析结果 | 模拟交易 | 去模拟下单→/paper?... |
| 模拟交易 | 单股分析 | 分析此标的/持仓分析 |
五、标题下风险提示黄框
组件PaperTradingRiskNotice.tsx,放在模拟交易大标题正下方,说明:
- 虚拟资金、仅供学习,不构成投资建议
- 收盘价模拟成交,与实盘盘口/T+1/涨跌停等有差异
- 去模拟下单按钮与信号仅供参考
- 须独立判断、风险自担
布局:
- 已开户:标题行(含删除账户→黄框→资产卡片与仪表盘
- 未开户/加载中:大标题→黄框→说明或加载文案
六、展示层已知问题
资产走势纵轴:总资产长期在100万小幅波动时,Y轴formatterN 万可能多个刻度都显示100万,折线有变化但刻度可读性差。属ECharts展示问题,已修改。
七、后续改动
本人完成上述全套模拟交易后,队友在同一模块上继续迭代(添加A 股交易时钟、休市后端拒单、下单预估侧栏等)。
十、小结
下篇补全了模拟交易的产品三层能力:
仪表盘(曲线 + 饼图 + KPI) → 单股轻量联动(快捷条 + 双向跳转;配置区大面板已收敛) → 标题下合规风险提示与上篇账本合并,即FinAgent模拟交易完整初版:分析负责建议,模拟盘负责练手与可视化。
上篇:【山东大学项目实训FinAgent】模拟交易(上):账本、市价单与API设计