查看原文
其他

构建一套互联网黄金投资系统竟如此简单

房磊 京东科技技术说 2022-03-15


突破  •  开放  •  专注  •  极致京   东   数   科   技   术   说




「术小科导读」随着经济社会的发展,普惠金融的理念深入人心。“You do not fiscal, financial ignore you.” 这句话常常被用代指财富管理,即 “你不理财,财不理你”。 近年来互联网理财产品日益丰富,原本神秘复杂的金融理财产品,逐渐平民化。其中互联网黄金理财凭着实时交易,可提实物金,兼具理财和收藏等多种价值,慢慢被大众接受。那么怎么才能构建这样一套实时交易的互联网黄金投资系统呢?




黄金是什么?

1



我们在讨论构建系统之前先想一下,黄金是什么?这时候,大家脑子里可能会冒出一些词:金项链、金戒指、贵、漂亮等。百度一下,黄金的解释如下:黄金是化学元素金(化学元素符号Au)的单质形式,是一种软的,金黄色的,抗腐蚀的贵金属。黄金是较稀有、较珍贵和极被人看重的金属之一。不仅是用于储备和投资的特殊通货,同时又是首饰业、电子业、现代通讯、航天航空业等部门的重要材料。



黄金为什么具备投资价值?

2



为什么黄金具备投资的价值,成为投资的硬通货呢?

经过总结,我们发现黄金具备三大金融特性:安全性、流动性和盈利性。


01 - 安全性

抵御通胀和避险能力强:近些年来,各国货币不断贬值,物价上涨,通胀已成为世界大趋势,随着世界政局和经济的不稳定性增强,尤其是发生战争、经济危机等不可抗力时,股票、基金、房地产等均会受到严重冲击。但黄金作为一种稀有的贵金属,随着货币贬值的同时,金价反而随之上升,一定意义上抵消了通胀的损失。时下新冠肺炎疫情正在全球不断蔓延,受此影响,美国股市N次熔断,让我们不断见证历史。但我们看到黄金金价基本维持不变,甚至稳步上升,体现了其强大的避险能力。

02 - 流动性

世界通行、交易时间长:自古以来,黄金因其体积小、价值大成为世界通用的货币,全球畅通无阻,是所有国家通行的交易产品。当一个国家休市时,另一个国家正在开市交易,所以黄金基本全天都有活跃的金价,因此,可以24小时实时交易。相对于股票和基金等投资品来说,交易时间长的优势较为明显。


03 - 盈利性

赚取差价:黄金金价会随着市场行情上下波动,当金价处于较低时买入,较高时卖出,可以赚取一定差价。部分黄金产品,诸如TD产品,上涨下跌可双向获利。还有的一些黄金实物,因为设计精美和稀缺,随着时间的推移,稳定增值,因此具备了一定的贮藏价值。总之,黄金自身的诸多优势决定了其天然的投资价值。



黄金交易的主体

3



是不是有了黄金和用户,就能开始互联网黄金交易了呢?
不是的,我们看一下黄金市场的主要组成部分:
这里,我们主要关注01交易所和02各类法人机构和个人投资者,由于今天我们谈论的是互联网黄金,因此我们重点关注 交易所和个人投资者这两部分。谈到交易所,以中国为例,上海黄金交易所 (以下简称“金交所”)是中国唯一经国务院批准、专门从事黄金交易的国家级市场,可以为全球投资者提供黄金、白银、铂金等各类贵金属产品的交 易、清算、交割和储运服务。

因此,如果在中国开展互联网黄金理财业务,势必需要直接或者间接地和金交所打交道。但是金交所大哥平时比较忙,因此招了一群小弟,替他开展这些服务,这就是会员制组织形式。会员由在中华人民共和国境内注册登记,并经中国人民银行核准从事黄金业务的金融机构、从事黄金、白银、铂等金属及其制品的生产、冶炼、加工、批发、进出口贸易的企业法人,并具有良好资信的单位组成。

比如,我们熟悉的工行、农行、交行等都是他的小弟。因此如果要开展互联网黄金业务,我们要么成为他的小弟,要么找他的小弟合作。鉴于前者难度比较高,多数采用后者的方式进行。
我们总结得做一套黄金的交易系统,必不可少的四个参与者:1)用户;2)互联网机构;3)金交所会员(银行);4)金交所。

由于黄金投资品种较多,主要分为实物黄金黄金T+D纸黄金现货黄金国际现货黄金(俗称伦敦金)、期货黄金、黄金预付款、积存金,这8种比较流行的黄金投资形式,为了便于理解,这里只讲其中一个较为简单的品类:积存金。积存金的客户可以根据黄金价格的波动低价买入、高价卖出,从中赚取差价或预约提取现货。

抽象一下:我们要做一个系统,让用户可以方便的开户、进行买金、卖金、提金等操作,互联网公司财大气粗,喜欢搞活动,所以不可避免的要给用户赠送黄金来拉新促活。因此在买卖提的基础上,又新增了一种交易形式:赠金。分析之后,我们的需求逐渐清晰为:开户、买金、卖金、提金、赠金



构建系统的三架马车

4



我认为构建一个新的系统,

至少需要输出三样东西:系统架构图、业务流程图和数据库表。


01 - 系统架构图

现引入一个概念,金融系统架构框架模型。我们做了无数个互联网金融系统之后,发现万变不离其宗,始终无法逃离如下框架:即外部合作金融机构诸如银行,身后一堆的中台支撑系统,诸如分布式缓存、支付、卡中心等等,金融核心系统无外乎用户界面、交易系统负责交易、账户系统负责记账,接口网关和文件交互等提供各种形式的接口交互,商品系统负责商品信息管理、商户页面提供商户管理,任务系统负责驱动定时调度任务满足诸如对账等需要。

删繁就简,我们觉得一个互联网黄金理财系统大概架构长下面这样:交易系统负责买卖提赠等交易服务和业务逻辑处理,账户系统负责用户各种维度资产记录,网关系统负责联通内部系统和外部银行合作机构进行交易接口的请求和逆向请求(如http接口和文件交互),运营后台提供交易和账户信息的查询和管理。


02 - 业务流程图

黄金交易的本质是:钱和克重的转换过程。
抓住这个本质,我们再看下这些交易流程都特别简单了。

2.1 买金流程
分析:买金的本质是将用户的资金转换为黄金克重的过程,买入克重=支付金额/下单金价如果要完成这个过程我们首先需要在银行开立一个用于交易的黄金账户,然后用户完成支付后我们请求银行将用户的资金转换为黄金克重,请求成功后更新该笔订单并更新账户系统各维度持仓。

▶▶▶ 实时买金

按照上面的分析,我们的买金流程大致出来了:

▶▶▶ 挂单买金

同理,挂单相对于实时买金多了一个挂单的过程。即:用户以期望的价格挂单到银行系统,银行在达到用户期望价格时批量成交。那么过程如下:


2.2  卖金流程

分析:卖金的本质是将用户持有的克重转换为资金的过程,

资金=卖出克重*下单金价,卖金流程大体如下:

注:本过程主要注意校验对克重的校验和处理

试想一下,如果用户可以卖出超出自己持有克重是多么恐怖的一件事。所以,我们对于用户输入的克重要做负数校验,防止恶意提交请求。其次,卖出前务必实时查询一下用户的持仓,对一笔卖金请求的克重做持仓冻结的操作,防止多客户端同时操作导致超卖的情况。提金过程也持仓扣减的过程,也要有类似校验。


当然,卖金也可以进行挂单,和买金类似,这里不作详述。


2.3  提金流程

分析:提金的本质是将用户的持仓克重转换为实物黄金的过程。


2.4  赠金流程

分析:赠金的本质是将黄金克重转移到用户账户的过程。

这个过程一般是互联网公司在银行开立一个营销账户,将营销费用提前在银行买成克重存在营销专户中,当互联网公司开展活动时,此专户中的克重拆成若干小份赠送给用户。

注:考虑互联网公司给营销账户充值的频次较低,可考虑线下打款充值的形式。


2.5  对账流程

对于一个交易系统来说,对账是一个必不可少的过程。

这个过程有一个很重要的作用:日终核对双方交易明细和持仓明细是否一致,以便及时纠错和结算资金

其实,对账完毕还有一个结算的过程,包括正向将用户的投资款打给银行,银行逆向将用户的卖金款打给用户。此资金流和交易的过程关联度不大,本次不做详述。


★★★  实时交易的关键

我们上边提到了交易的本质是钱和克重的转换过程,其中转换过程的唯一枢纽是金价,所以提供稳定持续的金价是保障交易成功的关键那么如何获取持续的金价呢?从黄金的报价来源可以看到金价主要来自金交所和国外报价。

所以,通过银行主动推送金价(推荐)或者互联网公司主动拉取的方式(备用),便可获取到稳定持续的金价。



03 - 数据库


3.1   买金

买金的过程是一个信息流,信息的流转少不了数据的记录,所以我们需要设计哪些表来记录这些信息呢?


  • 买金表:用于记录买金订单的状态流转(uuid:orderId)

说明:为了方便标识和防重,我们引入一个概念uuid(业务主键),该字段理论上唯一标识了表每条记录的唯一性(下同)。

  • 用户表:用于记录用户(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哦👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存