对资金交易的一些看法
本来是在论坛上的一个帖子得回复,写的有一点篇幅,所以才做为一篇文章保存在博客里。http://www.iteye.com/topic/1111985
资金管理数据库上面的账户跟资金有关的有3个字段 ‘当前余额balance''未确认credit金额'和‘未确认debit金额'
这里的credit/debit引用了财务上的借贷的概念,credit金额总是负数(消费、取款、转出等),debit金额总是正的(退款、存款、转入等)
为了保证资金不出问题,一个账户的可用额度总是 balance+credit(注意这里credit是负数,相当于当前balnce - abs(credit)。而debit在被确认之前,是不可用的。
交易确认的概念:在交易确认之前,交易的金额被累计在credit/debit字段中,确认之后,create/debit里面的金额被合并到balance中。确认之后的交易不能再改变。(退货/退款或是其他交易在在实际应用中应该被定义成单独的交易类型)。实际的交易系统必需在保证资金安全的前提下,尽量减少消费者的等待时间。
下面说说实际的交易过程:
跟楼主的应用场景一样,A系统是资金管理系统,B系统是业务交易子系统,分别在不同的网络位置,整个过程的网络通讯可能在任何时刻出现异常。更具体点我们来模拟一下使用储值卡在商场零售交易的情景(类似的系统有相同的特点:交易在客户端发生,而资金在服务器端管理):
同步、实时交易:
1:B系统,商场零售客户端在计算出消费金额后,在本地系统里记录一条记录,然后向资金管理系统发送一个卡消费交易请求。
2:A系统,收到消费交易请求后,判断对应的储值卡的可用余额是否>=消费金额。可用余额的计算方法是当前余额-未确认消费金额。如果可用余额>=消费金额,则记录该消费记录,并在credit(非确认消费金额)字段上累加这笔消费金额,并返回允许刷卡成功的应答。(当然实际系统还会有交易流水号和/或授权号等更多信息,这里就不讲太细了)
3:B系统:(这里是确认交易是否成功的地方,简单地说就是决定是否允许你拿着购买的东西走人)。如果收到一些类似余额不足的非刷卡成功的应答,则取消次交易。
如果收到刷卡成功的应答,在消费者签名后,则可以确认交易成功,允许客户把购买的东西拿走。如果消费者拒绝签名(当然也没有拿走商品),此交易被取消。但无论是否签名、此交易是否成功,此结果只在本地系统(B系统)里做相应记录后,结束当前的同步交易过程,(消费者只等待到这里)。后续的交易确认、交易取消信息,由后台系统异步完成。(实际可以采取每隔一段时间批量提交的策略)。
在收到A系统的应答之前的任何一个时刻,如果发生网络异常,资金管理系统(A系统)的逻辑不变,消费子系统(B系统)对次交易记录标记为异常,并取消次交易。此时,A系统的记录里可能有此消费刷卡成功的记录,也可能没有。
以上过程是在B系统的前台POS机上完成的同步实时交易子过程。该子过程完成后,此次交易已经被确定是否交易成功,或被取消,准确的交易结果/过程被记录在B系统里。此时可能会与A系统的信息不一致,但以B系统为准(因为实际交易是发生在这里的),读者可以自己分析此时上述过程中可能会发生哪些异常,会导致A、B系统的交易信息会有哪些不一致。总之,所有结果最多都是交易失败,而储值卡的可用余额却被扣除的情况。对资金管理系统来说是保证安全的。
这里要重提一下可用余额的概念,假设账户余额有1000元,此次消费金额是100元,则不管该交易是否成功,除了消费请求根本就没有发送成功的情况,该账户的可用余额都变成了900元,可以用于其它/后续消费。
后台异步、非实时过程
交易确认:
此过程在B系统通常是后台、异步、延时、批量提交的。B系统把在前台POS机上同步实时交易记录提交到A系统。A系统逐条处理,记录交易记录,在未确认消费字段(credit)减去交易金额,如果交易确认成功,同时在账户余额上减去交易金额。此时,A/B两系统的数据最终一致。如果交易成功,可用余额没有变化,如果交易取消,可用余额会恢复到交易前的数量。
此过程如果发生网络异常,B系统需要采取保守的策略,不断的尝试发送数据,允许重复,不允许丢失,A系统需要有能力处理重复的数据(这个不难,每个交易都有唯一的流水号和或授权号)。
可靠保证的最后一步:交易清算过程
通常完成上面的过程后,只要程序没有bug,不管是否发生过网络异常,A/B两端的数据应该是一致的。但对可靠保证更高的系统来说(本人认为只要涉及到钱,还是尽量多做一些补偿措施).
还有一些灾难性质的情况,比如B系统的数据库宕机,致使数据丢失,此时可能需要根据打印出来的交易单据(POS机上的小票),和有客户签名的刷卡单据,用人工的方式重新在B系统上逐笔核对和录入。如果A系统数据库宕机,则需要从所有的B系统重新传输重上一个恢复点后的交易记录。
此过程首先核对A、B两系统的当天(通常)的所有交易记录的汇总数据及其校验结果,如果一致,可以认为两端数据已经一致。否则,重新、逐笔从B系统把交易记录传输到A系统。(可能有一些优化措施,可以不用传输所有记录,但要保证不降低可靠性)。
这是一个数据集成的过程,B系统可以先把交易记录打包、并压缩成一个或多个文件再传输,这样做效率会比较高。
在过去的有些银行系统里,通常都没有后台传输交易记录的过程,只是在每天晚上的清算过程才传输交易数据。如果你在柜台或者取款机上取现没有成功,却发现账户余额却少了,通常只有等到第二天,这笔钱才会退回到你的账户中。注意,实际上你看到的账户余额是我们上面提到的可用余额,应用系统也一样,不要给用户看到过多细节,他看到的余额就是可用余额。
上面没有提到存款/充值的例子,交易过程类似,但不同的是只有在该交易被确认后,才会反映到可用余额和账户余额中,这是由于资金安全的考虑。为了提高实时性,通常在存款交易的同步过程完成后,B系统可以立即向A系统post确认信息。(post是指发送请求后立即返回,不等待应答,服务器端也无需返回应答,即使发送失败也被允许)。如果该确认信息被A系统收到并处理,此存款会立即有效,否则就要等待后续的确认过程和/或清算过程了。此种方法也可用于交易被取消的情况。
另外提一个个人对数据事务处理的看法,不要把A/B系统的网络通讯过程纳入到数据库事务当中去。在B系统,总是先在本地数据库记录完后再去跟A系统通讯,在A系统,总是在接收到交易请求后再开始数据库事务,并在数据库事务结束后再返回应答。网络通讯(非局域网)是可能在任何时候发生异常,甚至被阻塞产生长时间延迟,这些都会严重影响数据库性能。
说了一大堆,可能有些复杂。为了提高资金系统的安全性和可靠性,多做一些事情是必要的。
本人非金融交易的专业人士,观点可能是错误或不准确的,欢迎批评指正,但不对此产生的任何后果负责。
如果你有对涉及到资金交易安全的观点和经验,欢迎并感谢交流和分享,我也对此很感兴趣,希望能学习和了解到更多的经验和知识。
分享到:
相关推荐
此外,对金融学的看法认为金融学是一门非常实用的学科,它不仅可以帮助人们理解投资和财务决策的风险和回报,还可以帮助他们掌握如何利用金融工具和技巧来达到财富的增值和保值。金融学也为金融市场提供了支持和保障...
北上资金,通常指的是通过沪港通和深港通渠道流入中国大陆股市的海外资金,这些资金的动向在很大程度上反映了国际投资者对中国市场的看法和投资策略。这份名为“北上资金配置的两个世界:资金行为洞察系列-200223”...
首先,北上资金的投资策略往往反映出国际投资者对中国市场的看法。由于这些投资者通常具备全球视野,他们的投资决策可能基于中国经济基本面、政策环境、市场估值等因素。报告可能会分析北上资金流入流出与国内外经济...
综上所述,北向资金的动态反映了全球资本对中国市场的看法和投资策略,其行业配置和风格选择为投资者提供了市场趋势的线索。深入理解北向资金的行为模式,有助于投资者更好地把握市场机会和规避风险。
这类资金通常具有全球化视野、长期投资理念以及对风险的较高承受能力,因此,它们的投资行为往往能反映出国际市场对中国经济及A股市场的看法。 其次,报告可能会分析北上资金的行业偏好。通过对历史数据的深度挖掘...
这些资金被视为市场的风向标之一,因为它们往往代表着国际投资者对中国市场的看法。当北上资金出现净流出,意味着境外投资者正在减少对A股的投资,可能是由于全球经济环境的变化、市场预期调整、人民币汇率变动或...
除了上述顶尖交易员的核心观点,我们还能总结出一些共通的交易原则。比如,风险管理是每个交易员必须掌握的关键能力,这包括了资金管理、止损策略、风险控制等多方面的内容。耐心是交易成功的另一个关键要素,它涉及...
北上资金的流入流出往往被视为市场情绪的风向标,因其通常代表了海外市场对中国经济的看法。 2. **配置型资金**:这部分将深入探讨配置型投资者的投资理念和策略,如长期投资、多元化资产配置等,以及这类资金在大...
北上资金和南下资金的流向揭示了国际资本对中国股市的看法及其对资金流动性的影响力。 9. 融资融券余额和成交额数据说明了市场的活跃程度和杠杆水平。融资买入额占比则反映了投资者使用杠杆进行投资的情况。 10. ...
这部分资金被视为市场的重要风向标,因为它们往往反映了国际投资者对中国市场的看法。北上资金转为流出可能预示着海外市场对中国资产的乐观情绪降温,或者是对全球经济环境变化的反应。 4. **南下资金**:南下资金...
- **高管增持意义**:反映内部人对公司前景的看法。 - **量化分析**:基于历史数据统计高管增持后股价变化。 - **案例研究**:实证分析高管增持的效果。 #### 39. Pyfolio量化回测图表展示 - **Pyfolio库介绍**:...
- 在行业配置上,外资银行与外资券商对大周期板块的看法存在分歧,前者在有色金属、钢铁、石油石化和煤炭等行业小幅减持,后者则在这些行业中有所增持。 - 银行和非银金融行业受到外资的大幅增配。 - 外资银行...
这份报告可能会涵盖北上资金的投资偏好、交易行为、对市场的影响以及相关策略建议等内容。 标签“行业报告”揭示了该文件的性质,即它属于专业领域内的研究报告,可能包含了对特定时期内北上资金对不同行业或个股的...
6. 收盘价:交易日结束时股票的最终价格,反映了市场对该股票的整体看法和供需平衡。 7. 昨收价:前一天股票的收盘价格,常用于计算涨跌幅度。 8. 涨跌额:收盘价与昨收价之间的差额,直观显示了股票一天内的价格...
此外,报告还涵盖了【新发基金产品】和【待发行及新上市ETF】的跟踪,这些信息对于投资者来说具有重要价值,因为新基金的发行和上市往往反映了当前市场的投资主题和热门领域,以及资产管理公司对未来市场的看法。...
北上资金通常指的是通过沪港通和深港通流入中国大陆股市的海外资金,这些资金的流动往往被视为市场情绪和外资对中国市场的看法的一个重要指标。 在2020年的这一周报中,中银国际证券的研究团队关注了多个关键的市场...
3. 资金流向:资金流向是市场分析中的重要指标,周报会显示板块资金净流出或流入情况,反映投资者对板块的整体看法及其资金配置的动向。 4. 融资融券情况:融资融券数据能反映市场的杠杆水平和投资者情绪,分析融资...
在本报告中,资金跟踪系列之二十六“水往低处流”涉及分析美元指数、中美利差、美债信用利差和Ted利差等宏观经济指标,以及国内资金面、市场交易热度和波动率,进而对投资策略进行指导。 ### 知识点二:美元指数与...
3. **北上资金**:北上资金特指通过沪股通和深股通流入A股市场的外资,这些资金的流向被认为是国际投资者对中国股市看法的风向标。北上资金的流入或流出影响市场情绪,其投资行为往往影响市场走势。 4. **周期行情*...
综上所述,北向资金的行为反映出外资对部分行业和公司的看法变化,这种变化可能是短期市场情绪的反映,也可能预示着更深层次的经济或行业趋势。投资者应当密切关注北向资金的动态,并结合其他市场信息来做出投资决策...