米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 株式会社日立情報システムズ

発明の名称 モンテカルロシミュレーション並列処理システムと方法およびプログラムと記録媒体
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2003−99411(P2003−99411A)
公開日 平成15年4月4日(2003.4.4)
出願番号 特願2001−290631(P2001−290631)
出願日 平成13年9月25日(2001.9.25)
代理人 【識別番号】100077274
【弁理士】
【氏名又は名称】磯村 雅俊 (外1名)
【テーマコード(参考)】
5B045
5B056
【Fターム(参考)】
5B045 AA00 GG02 KK04 
5B056 AA04 BB00 HH00
発明者 小野 征彦
要約 課題
モンテカルロシミュレーションを使った並列処理化を高速化する。

解決手段
モンテカルロシミュレーションをシミュレーション回数で分割する際、乱数発生も含めて並列処理化する。すなわち、サーバ1号機11とサーバ2号機のそれぞれの第1,第2プロセス11a,12aにおいて乱数を発生させる。さらに、この際、第2プロセス12aにおいて余分に乱数を発生させる処理時間を考慮して、第1,第2プロセス11a,12aで分担するシミュレーション回数を調整し、例えば、第1プロセス11aでシミュレーション回数1〜60万回を分担し、第2プロセス12aでシミュレーション回数60万1〜100万回を分担するようにする。
特許請求の範囲
【請求項1】 モンテカルロシミュレーションを用いたシミュレーションを複数のコンピュータで分散処理して行うシステムであって、上記モンテカルロシミュレーションのシミュレーション回数を分割して上記複数のコンピュータに割り当て、上記シミュレーションに用いる乱数を各コンピュータで発生させる手段と、上記複数のコンピュータのそれぞれに割り当てるシミュレーション回数を、各コンピュータでの乱数発生処理時間に応じて算出する手段とを有することを特徴とするモンテカルロシミュレーション並列処理システム。
【請求項2】 モンテカルロシミュレーションを用いたシミュレーションを複数のプロセスで分散処理して行うシステムの並列処理方法であって、上記モンテカルロシミュレーションのシミュレーション回数を分割して上記複数のプロセスに割り当て、上記シミュレーションに用いる乱数を各プロセスで発生させる手順と、上記複数のプロセスのそれぞれに割り当てるシミュレーション回数を、各プロセスでの乱数発生処理時間に応じて算出する手順とを有することを特徴とするモンテカルロシミュレーション並列処理方法。
【請求項3】 請求項2に記載のモンテカルロシミュレーション並列処理方法であって、シミュレーション1回分の乱数発生処理時間Trと、該乱数発生処理時間Trを含むシミュレーション1回の処理時間Tmとを測定する手順と、測定した上記シミュレーション1回分の乱数発生処理時間Trと上記シミュレーション1回の処理時間Tm、および、プロセス数Pとシミュレーション回数Saに基づき、プロセスp(1≦p≦P)に割り当てるシミュレーション回数Spを算出する手順とを有することを特徴とするモンテカルロシミュレーション並列処理方法。
【請求項4】 請求項3に記載のモンテカルロシミュレーション並列処理方法であって、Sp=Sa×{(Tm−Tr)/Tm}p−1/Σ{(Tm−Tr)/Tm}…(i=0〜P−1)
により、上記プロセスp(1≦p≦P)に割り当てるシミュレーション回数Spを算出する手順を有することを特徴とするモンテカルロシミュレーション並列処理方法。
【請求項5】 コンピュータに、請求項2から請求項4のいずれかに記載のモンテカルロシミュレーション並列処理方法における各手順を実行させるためのプログラム。
【請求項6】 コンピュータに、請求項2から請求項4のいずれかに記載のモンテカルロシミュレーション並列処理方法における各手順を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
発明の詳細な説明
【0001】
【発明の属する技術分野】本発明は、モンテカルロシミュレーションを並列処理化する技術に係わり、特に、モンテカルロシミュレーションによる金融リスク計量等を高速処理化するのに好適なモンテカルロシミュレーション並列処理技術に関するものである。
【0002】
【従来の技術】現在、例えば金融機関において、コンピュータを用いて金融リスクを計量化する技術としてモンテカルロシミュレーションが使用されている。このモンテカルロシミュレーションとは、乱数を使用したシミュレーションのことである。
【0003】このモンテカルロシミュレーションを金融リスク計量化にどのように使用するかを以下に説明する。
【0004】まず、乱数を発生させ、次に、その乱数により、コンピュータにおいて、将来の信用格付変動、金利変動、為替変動、株価変動を予測計算し、損失額を算出する。さらに、この処理を多数回(数千回〜数万回)繰り返す。そして、算出した損失額を額の多い順にソートし、最大損失額を割り出す。
【0005】この最大損失額は最悪の状況下で発生し得る損失額を意味し、割り出した最大損失額を考慮して、保有資産内容や取引内容を見直すことができる。この最大損失額の割り出しには、通常は「99%点〜95%点」を使用する。
【0006】「99%点」は、例えばシミュレーション回数を1万回とすると、額の多いほうから100番目(1万回×1%)の損失額を指す。このことは、99%の確率で、現実の損失額が予測した99%点の額内に収まるはずであることを意味する。「95%点」についても同様である。
【0007】ところで近年、より悪い条件下での損失額を予測しようとして「99.9%点」を使用しようとする動きがある。しかし、シミュレーション回数が数万回程度では、その数万回の内、数回しか「99.9%点」付近で発生しない。この場合、使用する乱数によって、「99.9%点」の損失額が大きくぶれる。
【0008】これに対処して、「99.9%点」の損失額を精緻に予測するためには、コンピュータでのシミュレーション回数を数百万回まで増やす必要がある。
【0009】また、従来のコンピュータによる金融リスク計量化は、信用リスクと金利リスクおよび為替リスクのそれぞれを個別に計量化するもので、信用リスクと金利リスク等の複合リスクには対応していないことが多い。
【0010】しかし現実には、「日本円下落」と「国内企業信用格付下落」さらに「国内金利上昇」が同時に起きることもあり得るので、複合リスクへの対応は不可欠である。
【0011】以上のとおり、モンテカルロシミュレーションを使ったコンピュータによる金融リスク計量化においては、シミュレーション回数の増加と複合リスクへの対応が不可欠である。
【0012】しかし、シミュレーション回数の増加と複合リスクへの対応は、コンピュータでの計算量の増加、処理時間の増加をもたらす。
【0013】このような問題に対処して、処理時間短縮を図るための従来技術として、(A)取引明細と保有債権を分割して並列処理化する技術や、(B)シミュレーション回数で分割して、将来の信用格付変動、金利変動、為替変動、株価変動の予測、損失額算出を並列処理化する技術(尚、この技術では、乱数発生処理は1台のコンピュータで行う)がある。
【0014】しかし、これらの技術には、それぞれ下記の問題点がある。
【0015】従来技術(A)においては、各並列プロセス毎に算出した損失額を、最終的には1プロセスに転送して集計する必要がある。この場合、並列度を上げるに従って、転送されるデータ量が増加するので、データ転送が処理性能上のボトルネックになる。特に、プロセス間のデータ転送を、直接プロセス間で行わず、データベースを介するシステムにおいては、致命的なボトルネックとなる。
【0016】これに対して、従来技術(B)においては、各並列プロセスが全取引明細および全保有債権を処理するので、各並列プロセス毎に算出した損失額を、最終的に、1プロセスに転送する必要がない。しかし、この技術では、使用する乱数が多くなると、乱数発生、転送がボトルネックとなる。
【0017】なぜなら、この技術(B)においては、乱数発生に1台しかコンピュータを割り当ておらず、このコンピュータで発生させた乱数を各コンピュータに転送しなくてはならないからである。
【0018】
【発明が解決しようとする課題】解決しようとする問題点は、従来の技術では、モンテカルロシミュレーションを使って例えば金融リスク計量化を並列処理化する場合、高速化のボトルネックとなるデータ転送を回避することができない点である。
【0019】本発明の目的は、これら従来技術の課題を解決し、モンテカルロシミュレーションを使った並列処理化を高速化して、例えば、金融リスク計量化のシミュレーション回数の増加および複合リスクへの対応を可能とし、コンピュータを用いた金融リスク計量化における予測精度を向上させることである。
【0020】
【課題を解決するための手段】上記目的を達成するため、本発明では、モンテカルロシミュレーションをシミュレーション回数で分割する際、乱数発生も含めて並列処理化する。すなわち、各並列処理プロセスにおいて乱数を発生させる。さらに、この際、単純な分割であれば、例えば、第1プロセスでシミュレーション回数1〜50万回を分担し、第2プロセスでシミュレーション回数50万1〜100万回を分担することになるが、この場合、第2プロセスでは1〜50万回分の乱数も発生させることになるので、本発明では、このような第2プロセスにおいては余分に乱数を発生させる処理時間を考慮して、例えば、第1プロセスでシミュレーション回数1〜60万回を分担し、第2プロセスでシミュレーション回数60万1〜100万回を分担するようにする。このように、各プロセスにおいて余分に乱数を発生させる処理時間を考慮して、各並列処理プロセスで分担するシミュレーション回数を調整することにより、各並列処理プロセス間の処理時間が均一化し、全体の処理時間をさらに短縮することができる。
【0021】
【発明の実施の形態】以下、本発明の実施の形態を、図面により詳細に説明する。図1は、本発明に係わるモンテカルロシミュレーション並列処理システムの構成例を示すブロック図であり、図2は、図1におけるモンテカルロシミュレーション並列処理システムの本発明に係わる処理手順例を示すフローチャート、図3は、図1における各サーバ機のハードウェア構成例を示すブロック図である。
【0022】図3において、31はCRT(Cathode Ray Tube)やLCD(Liquid CrystalDisplay)等からなる表示装置、32はキーボードやマウス等からなる入力装置、33はHDD(Hard Disk Drive)等からなる外部記憶装置、34はCPU(Central Processing Unit)34aや主メモリ34bおよび入出力インタフェース34c等を具備してコンピュータ処理を行なう情報処理装置、35は本発明に係わるプログラムやデータを記録したCD−ROM(Compact Disc-Read Only Memory)もしくはDVD(Digital Video Disc/Digital Versatile Disc)等からなる光ディスク、36は光ディスク35に記録されたプログラムおよびデータを読み出すための駆動装置、37はLAN(Local Area Network)カード等からなる通信装置である。
【0023】光ディスク35に格納されたプログラムおよびデータを情報処理装置34により駆動装置36を介して外部記憶装置33内にインストールした後、外部記憶装置33から主メモリ34bに読み込みCPU34aで処理することにより、情報処理装置34内に図1に示す各サーバの各機能が構成される。
【0024】図1において、1はクライアント機、11はサーバ1号機、12はサーバ2号機であり、本例のシステムのオペレータは、クライアント機1を介して、シミュレーションの指示操作を行い、サーバ1号機11とサーバ2号機12においては、クライアント機1から指示されたシミュレーションを並列処理する。
【0025】本例においては、クライアント機1には、並列処理制御部1aとソート処理部1b、データベース(図中「取引明細、保有債権のデータベース」と記載)1c、データベース(図中「損失額のデータベース」と記載)1d、入力装置1e、表示装置1fが設けられており、サーバ1号機11とサーバ2号機12には、第1プロセス11aと第2プロセス12a(図中「モンテカルロシミュレーション並列処理 第1,第2プロセス」と記載)が実装される。
【0026】このような構成において、本例のシステムでは、モンテカルロシミュレーションをシミュレーション回数で分割するが、従来技術の(B)で説明した技術とは異なり、乱数発生も含めて並列処理化する。
【0027】つまり、従来技術(B)では、1プロセス(例えば、クライアント機1)で乱数発生をさせ、発生させた乱数を、各並列処理プロセス(例えば、サーバ1号機11とサーバ2号機12)に転送していたが、本例では、各並列処理プロセス、すなわち、サーバ1号機11とサーバ2号機12において乱数を発生させる。
【0028】この場合、例えば、サーバ1号機の第1プロセス11aでシミュレーション回数1〜50万回を分担し、サーバ2号機の第2プロセス12aでシミュレーション回数50万1〜100万回を分担した場合、第2プロセス11aは1〜50万回分の乱数も発生させることになる。
【0029】これは、現在の金融機関等においてのモンテカルロシミュレーションでは、物理乱数を使わず、算術乱数(擬似乱数)を使用することが多いことと関係する。
【0030】すなわち、そもそも算術乱数は、ランダムな物理現象(例:サイコロ)を利用して発生させる物理乱数と異なり、前回の乱数を算術式に代入して、新たな乱数を発生させるというものである。従って、算術乱数では、第2のプロセス12aにおいて、1〜50万回分の乱数を発生させないと、50万1回以降の乱数を算出できない。
【0031】しかし、このように、50万回分の乱数を余分に発生させるほうが、従来技術(B)のように50万回分の乱数を転送するよりも、全体としての処理時間は短くなる。
【0032】さらに、本例では、このように、乱数の発生処理を並列化するだけではなく、第2プロセス12aにおいて余分に乱数を発生させる処理時間を考慮して、第1プロセス11aと第2プロセス12aで分担するシミュレーション回数を調整することにより、第1,第2プロセス11a,12a間の処理時間を均一化し、システム全体の処理時間の短縮を図っている。以下、その説明を行う。
【0033】上述したように、各並列処理プロセス(サーバ1号機11とサーバ2号機12の第1,第2プロセス11a,12a)に均等にシミュレーション回数を割り振ると、サーバ2号機12における第2プロセス12aにおいては、余分に乱数を発生させているので、サーバ1号機11における第1プロセス11aとの処理時間に差が生じる。
【0034】ここで、システム全体でのシミュレーションの処理時間を考えると、各並列処理プロセスの処理時間の内、最も長い処理時間がシステム全体での処理時間となる。従って、各並列処理プロセスの処理時間の差が大きい場合、シミュレーションの全体の処理時間を効果的に短縮できず、その結果、並列処理化の効率を最大限まで発揮できない。
【0035】各並列処理プロセスの処理時間の差が大きい場合として、第1に、高度な算術式の乱数を使用しているため、シミュレーション処理時間における乱数発生処理時間の割合が大きい場合が想定できる。
【0036】また、第2に、更なる高速化を狙って、サーバの台数を増やし並列度を上げた場合も想定できる。すなわち、このように並列度を上げると、最後の並列処理プロセスにおいて余分に発生させる乱数の個数が多くなり、その分の乱数発生処理時間が増加するため、各並列処理プロセスの処理時間の差が大きくなる。
【0037】このような問題に対処するためには、各並列処理プロセスの処理時間を均一にすることが有効である。
【0038】そこで本例では、このように余分に乱数を発生させる処理時間を考慮して、サーバ1号機11における第1プロセス11aとサーバ2号機12における第2プロセス12aのそれぞれで分担するシミュレーション回数を調整する。
【0039】例えば、本例では、サーバ1号機11における第1プロセス11aでシミュレーション回数1〜60万回、サーバ2号機12における第2プロセス12aでシミュレーション回数60万1〜100万回を分担する。
【0040】これにより、サーバ1号機11における第1プロセス11aとサーバ2号機12における第2プロセス12a間の処理時間が均一化し、システム全体の処理時間をさらに短縮することができる。
【0041】以下、図1を用いて、このような処理動作を説明する。
【0042】まず、クライアント機1において、例えばオペレータの操作に基づき入力装置1eから実行要求(モンテカルロシミュレーション実効要求)が並列処理制御部1aに対して出力されると、並列処理制御部1aが、各並列処理プロセス(サーバ1号機11の第1プロセス11aとサーバ2号機12の第2プロセス12a)毎に分担すべきシミュレーション回数を算出し、各並列処理プロセスに指示を出す。
【0043】このようにして、クライアント機1の並列処理制御部1aからの指示を受けた各並列処理プロセス(サーバ1号機11の第1プロセス11aとサーバ2号機12の第2プロセス12a)は、まず、クライアント機1のデータベース1cから、全取引明細や全保有債権分のデータを取得する。
【0044】次に、各並列処理プロセス、すなわち、サーバ1号機11の第1プロセス11aとサーバ2号機12の第2プロセス12aは、余分な乱数発生処理部11b,12bにおいて、分担するシミュレーションで使用する乱数の直前の乱数までを発生させる。
【0045】さらに、乱数発生処理部11c,12cにおいて、余分な乱数発生処理部11b,12bで既に発生させた乱数以降の乱数を、シミュレーション1回分発生させ、その後、予測部11d,12dにおいて、乱数発生処理部11c,12cで発生させた乱数をもとに、将来の格付変動や金利変動、為替変動、株価変動等の予測をする。
【0046】そして、損失額算出部11e,12eにおいて、予測部11d,12dで予測した将来の格付変動、金利変動、為替変動、株価変動をもとに、損失額を算出し、算出した損失額を、クライアント機1のデータベース1dに出力する。
【0047】尚、サーバ1号機11の第1プロセス11aとサーバ2号機12の第2プロセス12aは、乱数発生処理部11c,12cと予測部11d,12dおよび損失額算出部11e,12eのそれぞれによる処理、並びに、クライアント機1のデータベース1dへの書き出し処理を、開始シミュレーション回数から終了シミュレーション回数分、実行する。
【0048】クライアント機1では、ソート処理部1bにより、サーバ1号機11とサーバ2号機12からの出力が完了したデータベース1dを損失額でソートして、その最大損失額を求め、表示装置1fで表示する。
【0049】以下、このような動作を図2を用いて説明する。尚、この図2では、図1における構成、すなわち、サーバ1号機11とサーバ2号機12の2台の第1,第2プロセス11a,12aに限らない、複数の各並列処理プロセスp(1≦p≦P)に対し、分担すべきシミュレーション回数を指示する内容とする。
【0050】まず、ステップ201において、シミュレーション1回分の乱数発生処理時間Trと、シミュレーション1回の処理時間Tm(乱数発生処理時間を含む)を取得する。尚、これらの値は予め測定しておく。
【0051】次に、ステップ202において、並列処理プロセス数Pと、シミュレーション回数Saを取得し、ステップ203において、シミュレーション1回の処理時間Tm(乱数発生処理時間を含む)、シミュレーション1回分の乱数発生処理時間Tr、並列処理プロセス数P、シミュレーション回数Saから、並列処理プロセスp(1≦p≦P)が分担すべきシミュレーション回数Spを、次の数式により算出する。
【0052】
【数1】

【0053】このようにして、各並列処理プロセス間の処理時間が均一となるシミュレーション回数Spが求められ、このようにして求めた各並列処理プロセスp(1≦p≦P)が分担すべきシミュレーション回数Spから、各並列処理プロセス毎の開始シミュレーション回数と終了シミュレーション回数を算出し、各並列処理プロセスに処理要求を出す(ステップ204〜209)。
【0054】例えば、1番目のプロセスに対しては、開始シミュレーション回数「1」〜終了シミュレーション回数「S1」を実行するよう指示し(ステップ206)、p番目(1<p<P)のプロセスに対しては、「前プロセスの終了シミュレーション回数+1」からなる開始シミュレーション回数〜「前プロセスの終了シミュレーション回数+Sp」からなる終了シミュレーション回数を実行するよう指示し(ステップ207)、P番目のプロセスに対しては、「前プロセスの終了シミュレーション回数+1」からなる開始シミュレーション回数〜終了シミュレーション回数「Sa」を実行するよう指示する(ステップ208)。
【0055】このようにして、余分な乱数発生にかかる処理時間を考慮し、各並列処理プロセスが分担するシミュレーション回数を調整する。
【0056】以上、図1〜図3を用いて説明したように、本例では、モンテカルロシミュレーションをシミュレーション回数で分割する際、乱数発生も含めて並列処理化する。すなわち、サーバ1号機11とサーバ2号機のそれぞれの並列処理プロセス(第1,第2プロセス11a,12a)において乱数を発生させる。さらに、この際、単に、第1プロセス11aでシミュレーション回数1〜50万回を分担し、第2プロセス12aでシミュレーション回数50万1〜100万回を分担するといった単純な均等分割でなく、第2プロセス12aにおいて余分に乱数を発生させる処理時間を考慮して、第1,第2の各プロセス11a,12aで分担するシミュレーション回数を調整する。本例では、第1プロセス11aでシミュレーション回数1〜60万回を分担し、第2プロセス12aでシミュレーション回数60万1〜100万回を分担する。
【0057】このように、第2のプロセス12aにおいて余分に乱数を発生させる処理時間を考慮して、各並列処理プロセスで分担するシミュレーション回数を調整することにより、第1,第2の各プロセス11a,12a間の処理時間が均一化し、システム全体の処理時間をさらに短縮することができる。
【0058】本例の技術を、例えば、モンテカルロシミュレーションを使った金融リスク計量化の並列処理化に適用することにより、その金融リスク計量化の並列処理化をさらに効果的に行うことができるので、金融リスクシミュレーションの高精度化に必要な、シミュレーション回数の増加や複合リスクへの対応が可能となる。
【0059】尚、本発明は、図1〜図3を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、並列処理制御部1aをクライアント機1側に搭載する構成としているが、並列処理制御部1aをサーバ1号機11もしくはサーバ2号機12のいずれかの1台に搭載しても良い。
【0060】また、本例では、金融リスク計量化システムを中心に説明してきたが、他のモンテカルロシミュレーションを使用したシステムの高速化にも適用可能である。
【0061】また、本例では、クライアント機およびサーバ機の構成として図2のコンピュータ構成例を示したが、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、FD(Flexible Disk)等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
【0062】
【発明の効果】本発明によれば、モンテカルロシミュレーションを使った並列処理化を高速化することができ、例えば、金融リスク計量化のシミュレーション回数の増加および複合リスクへの対応が可能となり、コンピュータを用いた金融リスク計量化における予測精度を向上させることが可能である。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013