标签:
居然还是不断的有人对我这个系列感兴趣,前两天有人问我最核心的第4篇在哪里。其实,跳过了第4篇是当时编号时的疏忽,不过正好给了一个空位,留给最重要的内容。
先说说一个题外话。
很早听到国泰君安IT开发部的员工抱怨,说开发工作费脑子,但在公司里的地位还不如整天忙忙碌碌的运行维护部的同事。我最近也深有体会。为什么,按理说,搞开发的,听上去蛮有技术含量的,怎么连普通的系统维护人员都不如,工资也低,奖金也低。
这里边的原因就在于,在证券公司内部,IT部的最核心的价值在于它维持了一套自动化交易系统,缺了这个系统,或者这个系统出现哪怕是一点点的故障,也会引起轩然大波。维护这个交易系统太重要了,领导太关注这个工作,领导的领导的眼里IT的价值也就是维护好这个交易系统的平稳运行,自然所以围绕这个工作的技术人员就会受到12分的重视,自然就能拿到高薪水。
这个系统就是今天要说的柜台交易系统,每个证券公司的IT价值核心。
美国的第二大证券公司摩根士丹利曾经在2年前在中国大规模招聘IT开发人员,为其亚太地区的证券交易系统网罗劳工。说明一个现象:在国外的大投行里,其核心交易系统基本是自主开发。但在中国,柜台系统主要由两家开发商:杭州的恒生和深圳的金证(当然还有金士达、根网等等,但规模小多了;也有部分证券公司号称自己开发的交易系统,但或多或少的是与这两家公司“合作”完成的)。证券公司只需要花钱就能买来一整套的交易系统,由恒生和金证的工程师调好系统,按系统现有功能来开展业务就是了。
3年前,大部分的证券公司的柜台系统是以营业部为基本单元的。就是说,每个营业部有自己独立的柜台服务器,电话委托、网上委托、银证转帐等等都是基于本营业部,几十个营业部各管各的,互不相关。现在基本都集中到公司总部。下边形象粗浅的描述一下这个核心的交易系统,给大家一个比较宏观而感性的印象。
在上海外高桥有一栋与上海交易所有密切利益关系的大楼,这栋大楼里有很多的空的机房出租,各个证券公司都在这里租用了很多房间,大部分的柜台交易核心服务器们就放置在这里。这种大楼往往被称为“IDC”互联网数据中心,专业的机房管理公司提供商业化的标准的机房和网罗环境,用户(证券公司们)每年花数百万人民币租用这里大小不等的机房。除了机房,IDC还提供普通的办公房间,供各公司管理各自机房的IT员工使用。所以,很多证券公司的柜台交易系统的维护人员实际上就在这栋大楼里上班。他们的跳槽也就是从这间房子跳到另一间房间里。
柜台系统的核心服务器是一台起码是价值100万以上的小型机服务器(相对PC服务器,小型机这个概念更高档一些和更贵一些),这些服务器一般都运行这Oracle9i数据库操作系统(也有用SQL2000的,显得更低档次一点),这个数据库内就是由恒生(或者金证)公司设计的数百张数据表格。
最重要的表格是(以恒生系统为例):
1、 client表,这个由branch_no(营业部编号),fund_account(客户资金帐号),client_name(客户名称),id_no(身份证号码),rate_kind(佣金费率);等等不只这些。这里边,fund_account唯一指定了客户。我们说开户开户,就是开的这个fund_account。
2、 fund表,存放客户资金余额(current_balance),币种(money_type,是人民币还是美元、港币呀?)
3、 stockholder表,指明了客户的资金帐号(fund_account)对应了那些股东帐号(stock_account),还说明了这个stock_account,是哪个交易所(exchange_type)的。Fund_account是由证券公司开户得到的,而stock_account是交易所(登记公司)开户得来得,一个股民要新开户必须先开上海深圳得登记公司户头(前边介绍过还记得吗?),开柜台系统帐户的fund_account时一般都要把其stock_account(一般都是两个上海一个深圳一个)告诉开户小姐,小姐录到电脑里,实际上就是放在这个表里。
4、 stock表。存放客户的股票余额。主要有fund_account/stock_account/stock_code(股票代码)、current_amount(股份余额)等等。一个股民有哪个股票有多少股就是在这个表中确定。
5、 fundjour表。资金变动表。每个股民的每笔资金变化都记录在这里。(jour的意思是流水帐的意思。)
6、 deliverjour表。股份变动表。每个股民的股票的买卖变动记录存放在这里。(这个deliver单词是不是有点奇怪?我也奇怪为什么不叫stockjour表。)
好了万变不变其宗,所有证券公司的客户交易行为都是围绕着这6张表进行,当然除了这6个基本帐簿恒生6.0集中交易系统中还有3百多张配套的表格,数据库系统就是不断的对这几百个数据表利用数千个不同的业务行为不停的更新呀更新呀再更新,或者不断的查询查询再查询。
说到底,就是这么回事。
这台最重要的柜台数据库服务器,一般都有一台专门用来数据写入和更新,另有数台备份服务器,使用数据同步软件进行实时的数据同步,大批的查询就可以从其他几台备份服务器上读取数据。
这几台最重要的数据服务器放在机房最重要的位置,由最稳定的有备份的UPS电源提供电力,放在黑色的2米高、60CM宽的机柜中,风扇呼呼的响,花花绿绿的小灯们拼命的忽闪忽闪的眨眼。
以柜台数据服务器为核心,往外向几个方向扩展。
1、 交易所。交易所都提供了专门的数据报盘系统,这些系统通过高度专线连接到交易所机房。作为柜台交易系统的一个核心部件,恒生(金证)提供了报盘程序(叫Trans?对交易系统的细节真不太清楚。),这个程序不断的从柜台数据库的另一张重要表格entrust(客户委托表)的内容往交易所报盘系统转发,或者反过来。Trans以毫秒计的不停的工作。做权证短线的投资客们在意的就是这些毫秒(有点夸张,但他们绝对在意秒,差1秒,他们绝对能感觉出来。)
2、 恒生(金证)提供的完整的业务数据路由网络。这个网络的构架是除核心数据库之外,柜台交易系统最核心的组成部分。
a) 在前几篇中,我提到过,柜台交易系统有两个核心功能:一:客户帐簿功能,记录了完整的会计帐簿信息(不要小看了这个记帐的功能,它是业务清算的核心,前边提到过我们的柜台系统已经不是纯粹的“交易”系统,而且是一个复杂的“清算”系统,我们国家之前很多问题就出在“交易”和“清算”的合而为一,大家都搞不清,大家也都不去搞清,就交给供应商提供的柜台系统完成本来应该证券公司自己完成的业务流程分析规划和管理。)二:交易数据路由功能,就是在实时交易过程中如何保证快速的将客户的买卖委托准确的发往正确的位置,这才是“交易”的含义所在。特别是2000后,三层甚至多层交易路由机制的出现,这种灵活配置的业务数据路由功能被发挥到了极至。
b) 这里先简单讲讲。最初为了满足交易网和办公网的分离,在跨网段的机器上安装数据转发软件(所谓交易网关),能够让安全性差一些的外网上的客户委托记录通过这个交易网关转发到核心的数据库服务器所在的内网中。后来这种网关还可以连另一个网关,再连下一个网关,这就有了路由功能,通过设置这个路由软件上的路由表(标明那些类型的业务数据从哪个营业部来的应该转到下一个的哪个路由业务网关上)。而且,现在在数据库的外边包了一层叫业务应用服务的东西(这些名词都是上世纪末互联网热潮中时兴的叫法),对外而言没有数据库的概念,完全被这个应用服务器软件屏蔽,例如,我要买入一只股票,以前是直接调用数据库里的存储过程,现在只是提供一些标准参数,交给这个应用服务器(AS),再由它一般是一些内嵌到C语言里的SQL语句完成业务任务(实现业务逻辑。)
目前本理解没关系,可能过半个月回头来看就能理解我说的意思。生活就是缺憾的艺术!
3、 Internet。营业部已经越来越作为营销场所和开户场所存在,目前75%以上的交易实际上是客户通过网上委托完成的。核新、通达信等软件公司开发了从客户端软件(就是我们经常见到的证券公司网站上的那些可以下载的交易软件),到服务端的解决方案。这些服务端再通过上边提到的柜台系统的AR(应用路由)软件进入交易系统的网络世界。
4、 营业部。现在营业部的功能越来越朝营销中心的方向发展。除了行情系统自成体系外,交易网络已经完成成为整个公司由AR和AS组成的业务数据路由世界的末端。例如,柜台开户功能,客户费率设定,指定交易,等等,通过恒生(金证)提供的一个Windows界面的客户端软件完成。另外还有传统的刷卡软件,大户室的热自助软件,电话委托等等。都作为末端数据采集系统联入后台的路由世界。
5、 银行。呵呵,这可是个重要的合作伙伴。最初的银证转帐在2007年突然被全国性的全面的彻底的革命性的三方存管所取代。三方存管的意义在于,客户资金数据终于从最细的细节上被除了证券公司以外的一个第三方机构所完全掌握。证券公司终于没有办法通过垄断客户资金明细信息来获取它的特权(例如挪用保证金,由于证券公司屏蔽了客户资金明细数据,它总能想出花招来搞股民的钱,特别是证券公司董事长动了这个念头之后)。这样,银行和证券公司的数据交换成了证券信息数字流中重要的一环。
我突然想到一些有趣的想法这里特地拿出来强调:
A)、与银行的业务流,实际上与柜台系统客户帐簿功能一样数据登记结算环节,属于“清算”的内容范畴,与“交易”是两回事。这是我一再强调的。
B)、我们国家的证券公司没有把个人客户和机构客户完全分开。在银行,个人零售(储蓄所)和对公业务(营业部的会计业务)是完全不同的部门,使用完全不同的业务规则,IT系统是完全不同的。在证券领域,一笔糊涂帐。
C)、交易相关的业务数据交换协议,在国外叫“FIX”,相信很多人都听说过FIX。其实,之所以我们国家没有出现类似FIX的东西,就是因为我们国家这种数据交换太随意。软件供应商之间的数据接口业务只是一些底层的程序员自己编制出来的。这些接口千奇百怪,甚至员工的跳槽也会导致接口的变更。还有就是中国的软件不值钱,标准协议这种东西是降低成本而出来的,如果你本来就都是手工作坊,也就每必要在较低成本了,因为那样反而成本更高。
D)、SWIFT协议是国外银行间或者企业和银行间划拨资金的标准接口。到了我们国内也成了千奇百怪的接口,每个银行都有所谓的“企业电子银行”,每个银行都在证券公司安装各种他们的程序员们拍脑壳想出来的数据接口,实现银行数据的电子化划拨。
E)、中国的散户太多了,机构也是散户化的,交易频繁,交易模式单一,证券公司内部更本不去自主创新业务管理发展方式,监管机构也从来就不放心让证券公司自己管好自己,所以下来的操作指引也是无比的细则化,搞得大家都一个样,大家都指望一套IT系统自动的完成所有的事情。苦了金证(恒生),也成就了他们,他们俨然成了业务顾问了。
怎么发现,说得跑了题,都不知道飞到哪里去了。
回过头来再说我们的交易系统。用一个具体的案例来讲讲信息是如何传递的。
股民老张看到中石油破发,再也无法忍受自己的本钱缩水,决定抛调500股。他打开电脑,运行他一直在用的网上委托软件(叫什么核新客户端软件),输入代码、价格、股数等等回车。委托数据被打包,发给一个Internet上的IP(在网上委托软件设置中都可以看到。)。这个IP物理上也许在某个大城市的某个高科技园区内的某个电信公司的托管机房里,这个IP地址被绑定到某台服务器的一块网卡上。这个服务器上运行这网上交易服务端软件。
接受这个数据包后,核新公司的网上交易处理程序,再把数据转发到金证公司的交易系统的某个AR程序,这个AR程序通过检索本地硬盘上的路由表,发现应该交给中心机房的另一个AR程序,于是数据通过内部广域网来到了中心机房。(实际上可以无数个AR间转发这笔请求,只要你愿意费神配置他们的路由表。怎么听上去有点象CCNA的网络课程。是的,这些应用路由的转发其实与IP路由转发是一个道理。)
这个汇总AR再分析数据请求,发现是申请卖出股票的请求,就发给一台应用服务器(AS),这个AS通过请求的功能号触发约定要的一个DLL文件,这个可执行代码里,把这个请求终于放到了Oracle数据库里的entrust表中。
另一个报盘程序,每毫秒的扫描这个entrust表,一旦发现新委托,马上取出,写入交易所的接口表中(可能是一个叫order.dbf文件)。交易所的报盘程序也在不停的扫描这个Order.dbf表,一旦发现新委托,马上通过DDN专线发给了交易所通信中心,知道交易所主机。
由于种散户天生的被庄家们抓住了性格弱点,他一定是割肉在地板上,毫不留情的被庄家吃掉筹码。成交。
OK,反过来又来一遍这个数据流程。晚了,累了,不多写了。反正老张,看到了他的成交回报。并且马上后悔自己抛调了股票。如果他晚上听到新闻联播里降低印花税的消息,指不定心情糟糕到跟老婆大干一场的程度。(怎么这个老张这么象我呀?!)
呜~又到了半夜。希望这一篇逻辑混乱的文章能够给你带来一些关于柜台交易系统的稍微感性一些的认识。886。
标签:
原文地址:http://www.cnblogs.com/jiqiwoniu/p/4896920.html