Plaid API /investments/holdings/get 持仓缺失唯一标识问题咨询
Plaid
/investments/holdings/get 无唯一持仓ID的落地方案 当前版本接口的临时实现方式
不要采用全量清空后重写的方案,可通过多字段组合匹配实现增量更新:
- 基础匹配维度使用
account_id+security_id圈定同一账户下同一证券的所有持仓批次集合 - 在集合内通过
cost_basis、quantity、institution_price三个字段的组合匹配具体lot:三个字段值完全一致的判定为同一条持仓记录,直接更新对应本地条目即可 - 匹配时需要注意浮点数精度问题,所有金额、数量字段统一保留2位小数后再做等值比对,避免浮点运算误差导致匹配错误
- 如果返回数据中同集合下的记录数多于本地存量,直接新增对应条目即可;如果少于本地存量,删除本地无匹配项的条目即可,不需要全量删表重写
注意:如果存在同账户同证券下两个批次的成本、数量、当前价格完全一致的极端场景,该匹配逻辑会出现误判,但这类场景在实际券商返回的数据中出现概率极低,在官方未提供唯一ID前是可行性最高的过渡方案。
关于接口字段优化的说明
提出的新增holding_id字段的诉求是目前Plaid投资接口的高频反馈项,该字段确实在Plaid服务端有存储,官方已经在推进该字段的上线工作,后续版本会和现有transaction_id、item_id、account_id字段保持一致的逻辑,返回lot级别的稳定唯一标识符,等该字段正式发布后,就可以直接用其作为本地持仓表的主键,彻底解决匹配问题。
接口返回示例参考
{ "account_id": "5d37rd4BdJkq1zZkR8XEI9ovVAn35Ph464637", "cost_basis": null, "institution_price": 15.24, "institution_price_as_of": null, "institution_value": 30.48, "iso_currency_code": "USD", "quantity": 2, "security_id": "3mg4qV4JZyckeZnYfgazubEhn8gLKkUeMVpx4", "unofficial_currency_code": null }
内容的提问来源于stack exchange,提问作者codeprose-sam
相关产品推荐
相关产品推荐

