当前位置: > >证交所异常熔断触发关键,大立光股价乘百万倍导致记忆体溢位

证交所异常熔断触发关键,大立光股价乘百万倍导致记忆体溢位

03-12,IT资讯证交所异常熔断触发关键,大立光股价乘百万倍导致记忆体溢位最新消息报导,口袋科技网(http://www.kotoo.com)IT资讯

日前大立光盘中交易短短1个多小时内,触动台湾证券交易所(简称证交所)交易系统的熔断机制多达22次,引起市场一阵喧嚣,更有传出外力试图操控股价的阴谋论。

而事发隔天的1月9日,证交所也出面澄清,造成交易异常的原因,是出自价格稳定措施计算程式的设计有疏失,而股价交易价格经多次运算后,超过系统变数所能储存的最大值,导致记忆体溢位,才多次触发避免市场波动过大的熔断机制。

台湾证券交易所电脑规划部经理赵龙表示,证交所内部系统内,纪录股票交易价格的变数类型为32位元的无号整数(Unsigned Integer,UInt 32),而证交所选用整数变数的原因在于,浮点计算有误差值外,更可能发生系统误判情况。而UInt32此变数类型所能储存的数值,範围是介于0至4,294,967,295(2^32-1)。

而证交所股票交易变数的设计,事先就预留了小数点后三位,例如某公司股票为10元,系统则会将其标注为10.000元,同时,为了方便系统进行整数运算,还会额外乘上1,000倍,变成10,000。在交易系统发生异常的当日,大立光股票价格来到了4,150元。经过交易系统第一次的加工计算,此时,资料栏位所记录的数值为4,150,000。

而为了避免股票市场发生产生过度动荡,在盘中瞬间价格稳定措施中规定,当股票试算后的成交价,与前一次成交价比较后,如果系统发现上下波动超过3.5%,此时便会暂停交易撮合2至3分钟。为了进行比较,交易系统会将股票交易价格变数的值乘上1.035(103.5%)来计算。但是,为避免因浮点数值运算而产生误差,交易系统还会将处理数值乘上1,000倍,亦即1,035倍而非只是乘以103.5%。此时,股票交易价格变数所储存的数值已经到达4,295,250,000,「变数值超过了UInt32型别的限制,进而产生溢位。」赵龙解释。

赵龙表示,在盘中交易时,证交所已经发现异常状况,但当时还未能判断系统何处发生异常,同时,证交所也得等待交易结束后才能紧急修改系统。

在交易结束之后,证交所的IT单位也下载当日的交易档案、股票撮合纪录,利用测试系统、模拟撮合系统进行测后,同样发生了交易异常状况。赵龙表示,此时相关人员便开始逐行检视程式,进行除错,并且发觉,该栏位所产生数值会产生记忆体溢位,但由于其位于系统暂存区的堆叠(Stack)中,并不会特意将该值取出(Pop-up)。因此,平常测试过程中,并不会看见该栏位显示的结果,「在测试我们定义的参数中,并没有看见任何异常状况。」

即使股票交易价格最终变数宣告为UInt64(储存最大值为2^64-1),仍然会出现计算异常状况,「因为中间的运算结果已经造成记忆体溢位。」因此,证交所股票交易系统的变数,从一开始就得宣告为UInt64。赵龙表示,过去证交所系统在进入正式环境前,也会利用过去两年内的交易资料,进行压力测试,「而我们只针对预留资料进行测试,忽略验证这些暂存资料。」

针对这次的风波,赵龙表示,证交所也已经要求IT单位人员,针对所有执行乘法运算的参数,必须全盘进行临界值测试(Boundry test),使用现阶段股票交易价格的最大值99万9999元,作为测试基準(benchmark),检验系统是否会出现异常。

声明:

·凡注明为其他媒体来源的信息,均为转载自其他媒体,转载并不代表本网赞同其观点,也不代表本网对其真实性负责。如系原创文章,转载请注明出处。

·您若对该稿件内容有任何疑问或质疑,请即联系,本网将迅速给您回应并做处理。

邮箱:mail@kotoo.com

+1 已赞
已有8人赞过
评论13

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

17 13

已收藏
去我的收藏夹 >

已取消收藏
去我的收藏夹 >