Skip to content

fix(portfolio-risk): 跨币种持仓缺少折算值时组合风险权重混用原币与基币 #225

Description

@Bluuok

问题

PortfolioRiskService.buildAllocation() 将持仓的 marketValueBase、原币 marketValue、以及 quantity × quote.lastPrice 当作同一币种金额,随后直接除以组合基币口径的 PortfolioSnapshot.marketValue。当跨币种持仓缺少折算值时,组合权重、HHI、集中度和行业风险信号会被汇率倍数扭曲。

例如基币 USD、组合市值 100,000 USD,某 HKD 持仓只有 marketValue: 780_000、没有 marketValueBase,当前得到权重 7.8(780%);这是把 HKD 当 USD。若 marketValue 缺失,报价兜底 quantity × lastPrice 同样没有验证报价币种与基币是否一致。

期望

  • 优先使用有效的 marketValueBase。
  • 仅在持仓与组合基币已知且一致时,用原币 marketValue 或报价推导值。
  • 无法证明币种一致时,将该持仓金额标为未知,保留可用持仓的风险分析,并明确标识结果部分缺失;不猜汇率。
  • 同币种、已折算、真实零值与仅有 positions 的场景不回退。
  • 用实际 PortfolioRiskService.analyze() 的能力执行路径覆盖跨币种、同币种和报价兜底边界。

与 #158 属于同类货币口径问题,但本 Issue 范围仅组合风险报告;#158 的 Pulse 路径已另行处理。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

claimedClaimed by a contributor and currently in progress

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions