笔者结合曾经参与过的银行外汇系统与国际汇款产品的项目经验,特别是针对报价引擎做了梳理。文章主要面向外汇入门级的读者,以及对报价引擎设计有兴趣的同行们。如果您是一位资深外汇从业者,本篇文章可能对您来说比较简单,敬请谅解。
一、名词解释
报价(Quotation):就是货币的价格。 外汇市场中有两种报价形式, 直接报价和间接报价。
直接报价(Direct Quotation):又称应付标价(Giving Quotaiton),是指一国以整数单位的外国货币为标准,折算为若干单位的本币的标价法,如:USD/CNY=6.8773。
间接报价(Indirect Quotation):又称应收标价(Receiving Quotaiton),是指一国以整数单位的本国货币为标准,折算为若干数额的外国货币的标价法,如:EUR/USD=1.1212。目前除了英国、美国、澳大利亚和欧元区外,国际上绝大多数国家都采用直接标价法。
货币对(Currency Pairs):货币对是由两种货币组成的外汇交易汇率,由两个 ISO 代码加一分隔符表示,例如 :GBP/USD ,其中第一个代码代表 “ 基本货币 ” ,另一个则是 “ 二级货币 ” 。
即期汇率(Spot Rate):又称现汇汇率,是指买卖成交后须在两个营业日(Business Day,又称工作日,Working Day,或交易日,Transaction Day)内(T+2)办理交割的外汇。
远期汇率(Forward Rate):又称期汇汇率,是外汇买卖成交后须在未来双方约定的时间办理交割的外汇。
点差(Spread):最小浮动单位,当汇率变化时,点数波动的差值为”点差”。
做市商(Market Maker):银行间外汇市场做市商是指经本国货币当局核准,在银行间外汇市场进行货币交易时,承担向市场会员持续提供买卖、卖价格义务,通过自身的买卖行为为市场提供流动性的银行间外汇市场成员。
货币流通量(amount of an currency in circulation):指市场上实际流通的货币总量。
二、报价引擎系统的处理机制
客户通过业务子系统向报价引擎系统发起报价请求,报价引擎系统从国际市场实时接入一家或多家报价源(支持手工和系统两种方式),然后利用系统自身的处理机制来处理牌价,再把综合报价发布至业务子系统,客户依此价格进行交易。
1. 报价接入模块
主要用于采集市场上不同报价源的货币汇率,如:路透、花旗等,同时也支持人工导入的方式。
2. 报价运算处理模块
报价运算处理模块是报价引擎的核心,可以分为风险控制机制、报价策略控制、实时监控机制。
其中:
风险控制机制主要用于:对导入的原始牌价进行有效性、波动性校验;
报价策略控制主要用于:对通过风控过滤后的原始牌价进行高性能运算(如:最优价、最差价、算数平均价、加权平均价、交叉盘计算价等),并针对不同的货币对设定差异化的报价策略,然后在此价格基础上加上点差作为风险值,再将价格返回给客户。
如何制定报价策略,需要视市场因素与运营目标而定。一个成熟的系统会接入多个报价源,在所有的报价基础上采取一个平均价,加上margin后对外报价,然后系统会选择最优价的渠道作为交易对手进行交割。
当然,如果运营目标是收益最大化,那么报价策略也可以制定为选择最差报价+点差报给客户,再使用最优价作为交易价格。
另外,如果是作为做市商的报价系统,设计起来会更加复杂和专业,除报价引擎系统外,还需要增加货币流通量系统,以便对市场上货币流通量的监听与实时更新。而在报价模型中,除了买卖价格外,还会将买入货币与卖出货币对应允许交易的最大值返回给客户。
实时监控机制主要用于报价源异常监控,包括报价源超时、Ask/Bid为零、或者倒挂。当某报价源出现异常时,系统预警并支持自动或手动切换到其他报价源,确保系统可靠运行。
3. 报价发布模块
实现向客户或者业务子系统推送牌价。
4. 参数管理
主要用于维护系统中的参数,例如:货币对、交割期限、节假日参数、报价组、报价频率、折算牌价设定等。
5. 点差设置
主要用于维护系统点差、渠道点差、客户点差、客户组点差。