証券システムを開発するにあたり、どのような機能構成にするのかは大変重要な設計になります。

基本的には証券業務をシステム化する事になるため、証券会社のシステムは似たような作りになると思います。

 

まずは機能の大きな考え方ですが、マスターとトランザクションに分けて考えます。
証券会社の業務全体を見た場合、
マスター:顧客管理
トランザクション:日々発生する商品やお金の動き
と考えてみます。
もちろん、他にも考え方はありますし、この考え方だけが正解ではありませんが、多くの証券会社は上記の考え方を採用しています。

システム概要図

マスターとトランザクションの考え方でシステム概要図を作ってみました。

黄色の枠が、機能の大分類と考えてください。
便宜上、マスター機能を「顧客管理機能」と呼ぶことにします。
また、トランザクション機能を「証券預り管理機能」と呼ぶことにします。
注意していただきたいのは、顧客管理機能は主に顧客情報を管理する機能ですが、他の機能も持っています。
同様に、証券預り管理機能も色々な機能を持っています。

顧客管理機能も、証券預り管理機能もリアルタイムで処理が必要な機能と、一括更新が必要な機能に分かれます。
上の図では、オンライン処理とバッチ処理で表現しています。

黄色の枠の中にある青い枠は、機能の中分類を表しています。

顧客管理機能

顧客管理機能には口座開設や口座情報変更、口座閉鎖などの機能があります。
上の図では、オンライン機能として分類していますが、窓口を持っていない証券会社の場合はリアルタイムで記録しなくてもいいので、バッチ機能として作ることも可能です。

証券預り管理機能

証券預り管理機能には証券やお金の増減を行ったり、残高を管理する機能が必要になります。
オンライン機能としては、注文機能・約定機能・入出金機能があります。
バッチ機能としては、株式分割などの株式イベント、利払い・分配・償還などの債券・投信イベントの機能があります。

 

システムデザインのポイント

システムをデザインする際のポイントとしては、「マスターとトランザクションの定義を明確にする」と言うのが大切になります。
マスター管理機能で保有する情報と、トランザクション管理機能で保有する情報はできる限り個別に管理し、KEYを設定する事でマスターとトランザクションを紐付けるようにします。

上記の例では、
顧客管理機能は顧客情報を管理するマスターなので、「顧客名・住所・契約内容」などの顧客情報のみを管理し、取引や預り資産等の情報は管理しないようにします。
証券預り管理機能は、取引や預り残高などのトランザクションを管理する機能なので、顧客情報は管理しないようにします。
顧客ごとの取引や預り残高に顧客情報を保有してしまうと、引っ越し等で顧客の住所が変更になった場合、預り残高で保有している情報も変更する必要があり、たくさんの取引を行っている顧客の場合、情報を更新する負荷も大きくなります。
また、顧客情報は個人情報なので、容易に参照できるのは問題となります。
そういった意味でも、保有する情報の精緻化は必要です。