构建一套互联网黄金投资系统竟如此简单
「术小科导读」随着经济社会的发展,普惠金融的理念深入人心。“You do not fiscal, financial ignore you.” 这句话常常被用代指财富管理,即 “你不理财,财不理你”。 近年来互联网理财产品日益丰富,原本神秘复杂的金融理财产品,逐渐平民化。其中互联网黄金理财凭着实时交易,可提实物金,兼具理财和收藏等多种价值,慢慢被大众接受。那么怎么才能构建这样一套实时交易的互联网黄金投资系统呢?
黄金是什么?
1
黄金为什么具备投资价值?
2
为什么黄金具备投资的价值,成为投资的硬通货呢?
经过总结,我们发现黄金具备三大金融特性:安全性、流动性和盈利性。
01 - 安全性
02 - 流动性
世界通行、交易时间长:自古以来,黄金因其体积小、价值大成为世界通用的货币,全球畅通无阻,是所有国家通行的交易产品。当一个国家休市时,另一个国家正在开市交易,所以黄金基本全天都有活跃的金价,因此,可以24小时实时交易。相对于股票和基金等投资品来说,交易时间长的优势较为明显。
03 - 盈利性
赚取差价:黄金金价会随着市场行情上下波动,当金价处于较低时买入,较高时卖出,可以赚取一定差价。部分黄金产品,诸如TD产品,上涨下跌可双向获利。还有的一些黄金实物,因为设计精美和稀缺,随着时间的推移,稳定增值,因此具备了一定的贮藏价值。总之,黄金自身的诸多优势决定了其天然的投资价值。
黄金交易的主体
3
构建系统的三架马车
4
我认为构建一个新的系统,
至少需要输出三样东西:系统架构图、业务流程图和数据库表。
01 - 系统架构图
删繁就简,我们觉得一个互联网黄金理财系统大概架构长下面这样:交易系统负责买卖提赠等交易服务和业务逻辑处理,账户系统负责用户各种维度资产记录,网关系统负责联通内部系统和外部银行合作机构进行交易接口的请求和逆向请求(如http接口和文件交互),运营后台提供交易和账户信息的查询和管理。
02 - 业务流程图
▶▶▶ 实时买金
▶▶▶ 挂单买金
同理,挂单相对于实时买金多了一个挂单的过程。即:用户以期望的价格挂单到银行系统,银行在达到用户期望价格时批量成交。那么过程如下:
分析:卖金的本质是将用户持有的克重转换为资金的过程,
资金=卖出克重*下单金价,卖金流程大体如下:
注:本过程主要注意校验对克重的校验和处理
试想一下,如果用户可以卖出超出自己持有克重是多么恐怖的一件事。所以,我们对于用户输入的克重要做负数校验,防止恶意提交请求。其次,卖出前务必实时查询一下用户的持仓,对一笔卖金请求的克重做持仓冻结的操作,防止多客户端同时操作导致超卖的情况。提金过程也持仓扣减的过程,也要有类似校验。
当然,卖金也可以进行挂单,和买金类似,这里不作详述。
分析:提金的本质是将用户的持仓克重转换为实物黄金的过程。
分析:赠金的本质是将黄金克重转移到用户账户的过程。
这个过程一般是互联网公司在银行开立一个营销账户,将营销费用提前在银行买成克重存在营销专户中,当互联网公司开展活动时,此专户中的克重拆成若干小份赠送给用户。
注:考虑互联网公司给营销账户充值的频次较低,可考虑线下打款充值的形式。
对于一个交易系统来说,对账是一个必不可少的过程。
这个过程有一个很重要的作用:日终核对双方交易明细和持仓明细是否一致,以便及时纠错和结算资金。
其实,对账完毕还有一个结算的过程,包括正向将用户的投资款打给银行,银行逆向将用户的卖金款打给用户。此资金流和交易的过程关联度不大,本次不做详述。
★★★ 实时交易的关键
所以,通过银行主动推送金价(推荐)或者互联网公司主动拉取的方式(备用),便可获取到稳定持续的金价。
03 - 数据库
3.1 买金
买金的过程是一个信息流,信息的流转少不了数据的记录,所以我们需要设计哪些表来记录这些信息呢?
买金表:用于记录买金订单的状态流转(uuid:orderId)
用户表:用于记录用户(uuid:goldAccount)
说明:为什么将黄金账户作为逻辑主键呢?我们知道在互联网平台,为了实现业务场景的拓展,可能存在一个自然人实名多个互联网账户(以下简称:pin)的情况。但是,在银行黄金系统中,一般只允许一个自然人开立一个黄金账户的。所以,我们将黄金账户号作为唯一主键,避免一人多pin开户的情况。
各种维度账表:多种维度的表记录
为什么克重的记录需要多种维度的表来记录呢?要回答这个问题,其实很简单。我们登录一个理财平台,首页一般会展示用户的资产,这个就是pin维度的资产。当走到赎回页面的时候,我们会看到这个pin下各个卡维度的持仓情况。刚才讲到了,我们一个自然人在银行只能开立一个黄金账户,所以在银行系统必然存在一个账户来记录黄金账户维度的持仓情况。经分析,我们需要这样三张表。
用户pin克重表(uuid:pin_goldAccount_productSku)
黄金账户克重表(uuid:goldAccount- productSku)
用户pin和银行卡克重表
(uuid:pin_bankCardNo_cardType_productSku)
为了以后方便查询历史变动记录,我们也需要三张表来记录持仓变动:
用户pin克重变动表(uuid:pin_goldAccount_productSku)
黄金账户克重变动表(uuid:goldAccount- productSku)
用户pin和银行卡克重变动表
(uuid:pin_bankCardNo_cardType_productSku)
3.2 卖金
看了卖金流程图是不是感觉和买金差不多,不过和买金订单不同的是,我们需要记录卖金订单信息,因此我们需要新增一张卖金赎回表。刚才提到用户赎回的时候是有卡持仓列表的,那我为了良好的用户体验,一般是允许用户一笔卖出的。所以我们是不是也需要记录各个卡维度的订单信息呢?这里我们命名为卖金子表。
3.3 提金
同理,需要新增一张提金订单表。
3.4 赠金
同理,需要新增一张赠金订单表。
3.5 对账
为记录各种维度的对账流程,我们认为需要下边几个表:买金对账表、赠金对账表、卖金对账表、提金对账表和用户持仓份额对账表。
综述:经过上述业务流程的整理,我们得到如下数据库表列表。
当然为了满足交易会有很多辅助表,比如金价表、交易时间和交易日表、商品信息表和提金产品信息表等,不作详述。
总 结
4
一言以蔽之,做一套互联网黄金投资系统,最重要的还是回归到黄金交易的本质。市场交易主体的梳理,交易流程本质的拿捏,资金和投资品种转换过程信息流和资金流的记录缺一不可。黄金如此,其他金融系统料想应如是。构建互联网金融系统,紧紧地抓住金融的本质,就像用上帝视角在俯视这一切。
业务与系统的傲慢与偏见
project X soccer构建项目管理思维互联网财富管理平台应该怎么做?(上篇)
互联网财富管理平台应该怎么做?(下篇)
关于机器学习全流程溯源管理的思考
AutoML系列 | 01-自动化机器学习技术原理
保护你的钱袋子!京东数科是如何用AI反欺诈的?
关注技术说,我们只凭技术说话!
点在看会少个bug哦👇