10月3日金曜日、東京証券取引所の株式売買システムで不具合が発生した。複数の処理が重なったことで、不具合が顕在化。みずほフィナンシャルグループ株の売買で、本来処理しなければいけない1128株分の売り注文を残したまま、その日の取引を終わらせてしまった。

 この異常事態が判明したのは、10月3日取引終了後の確認作業中のことだ。偶然二つの処理が重なり合ったことで、株式売買システムのプログラムの不具合が顕在化してしまった。

 2000社にも及ぶ株銘柄の売買注文をマッチングさせる東証の株式売買システムは、2000年7月に全面的に再構築したもの。日本の株取引を支える重要なインフラである。開発は富士通が担当した。

 この株式売買システムは、取引時間外に会員証券会社から出された売り注文や買い注文についていったん記録しておき、市場が開いた直後にバッチ処理的に取引を成立(約定)させていく。この市場が開いた直後に行う取引を、「寄り付き」と呼ぶ。寄り付きの処理で、異常が発生した。

 10月3日午後の寄り付きで、みずほフィナンシャルグループの株について出された売買注文は、1万件を超えていた。売買注文が1万件を超えている場合、株式売買システムは約定処理を3回に分けて実行する。システムにかかる負荷を分散させるのが目的だ。

 株式売買システムは、1回目、2回目の約定処理を実施。そして3回目の約定処理を実施するため、1、2回目の処理と同じように、「付け合わせファイル」という名称のファイルに情報を書き込もうとした。寄り付きによって成立した取引の結果や、ここで取引が成立しなかった売買注文の情報を、寄り付きに続く「ザラバ(寄り付き後から取引終了時間を迎えるまでの取引)」に引き継ぐためである。

 ところが、「同じタイミングで、ほかの銘柄の約定処理が、付け合わせファイルへの書き込みを実施しようとした」(佐藤博 売買システム部長)。そこで株式売買システムは、いったんみずほ株の処理を停止。他の約定処理を優先させた。その後、3回目の処理を再開させた。これ自体は、システムが想定している範囲内の処理である。

売買注文データと読み誤った

 しかし、3回目の約定処理を再開させる過程で、株式売買システムに潜んでいた不具合が顕在化した。株式売買システムは、分割して処理を実施している最中に随時、「退避ファイル」に処理がどこまで進んでいるかを保存する。分割した処理を途中で止めても、問題なく再開できるようにするためだ。

 ところが、「完了していなかった3回目の処理を再開させたところ、プログラムの不具合で、退避ファイルから売買注文のデータを不完全な形で読み取ってしまった」(佐藤部長)。具体的には、みずほ株1128株分を、29万7000円の指値さしねで売るという取引データを読めなかったのである。

 株式売買システムは、この取引データを無視した状態で、ザラバの約定処理を実施していった。その結果、みずほ株1128株分の売り注文が宙に浮いたまま、3日の取引が終了してしまった。「過去に一度も起きたことがなかった」(鹿子島かごしま菊雄 常務取締役)。

 東証と富士通は3日から5日(日曜日)にかけて原因究明作業とプログラムの修正作業を実施した。修正内容は、分割処理の再実行時に、確実に付け合わせファイルの売買注文データを読み取れるようにする、というものである。修正量はCOBOLプログラムで30ステップ程度という。

 鹿子島常務は、「確実に取引を仲介することが存在意義の東証で、起きてはならないことが起きてしまった。深くお詫びしたい。早急に注文量の増加が影響しそうな処理を洗い出し、全面的なチェックをかける」と話す。

(高下 義弘)