(57)【要約】【課題】複数のプロセッサを効率的に用いてシミュレーションを行う。【解決手段】制御部１１は、基準の指標値を選択し、基準の指標値に基づいて仮の指標値ｖ１〜ｖ３を選択し、仮の指標値ｖ１〜ｖ３に対応するタスク１３−１〜１３−３をプロセッサ１２−１〜１２−３に割り振る。各プロセッサは、割り振られた何れかの仮の指標値に対応するタスクとして、乱数から指標値のサンプルを生成するモデルとバイアスをかけた乱数の分布とを用いて、当該仮の指標値に対応する確率データを生成する。制御部１１は、仮の指標値ｖ１〜ｖ３それぞれに対応する確率データと所定の確率条件とを比較して一の仮の指標値を選択し、当該一の仮の指標値を所定の確率条件を満たす指標値と決定するか、又は、当該一の仮の指標値を新たな基準の指標値として用いて、複数の仮の指標値の選択と複数のタスクの割り振りとを再度行う。【選択図】図１
2014123272.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを含む情報処理システムが実行する、指標値の確率分布を推定し所定の確率条件を満たす指標値を決定するシミュレーション方法であって、
基準の指標値を選択し、前記基準の指標値に基づいて複数の仮の指標値を選択し、
前記複数の仮の指標値に対応する複数のタスクを前記複数のプロセッサに割り振り、
各仮の指標値に対応するタスクとして、乱数から指標値のサンプルを生成するモデルと前記指標値のサンプルが当該仮の指標値を中心に生成されるようにバイアスをかけた乱数の分布とを用いて当該仮の指標値に対応する確率データを生成する処理を、当該タスクが割り振られたプロセッサにおいて実行し、
前記複数の仮の指標値それぞれに対応する前記確率データと前記所定の確率条件とを比較して一の仮の指標値を選択し、
前記選択した一の仮の指標値を前記所定の確率条件を満たす指標値と決定するか、又は、前記選択した一の仮の指標値を新たな基準の指標値として用いて前記複数の仮の指標値の選択と前記複数のタスクの割り振りとを再度行う
シミュレーション方法。
【請求項２】
前記モデルとバイアスをかけない乱数の分布とを用いて指標値の確率分布を推定し、当該確率分布と前記所定の確率条件とに基づいて最初の前記基準の指標値を選択する
請求項１に記載のシミュレーション方法。
【請求項３】
各仮の指標値に対応する前記確率データは当該仮の指標値における累積確率を示し、
前記複数の仮の指標値のうち、前記確率データが示す累積確率が前記所定の確率条件が示す所定の累積確率に最も近い仮の指標値を、前記一の仮の指標値として選択する
請求項１又は２に記載のシミュレーション方法。
【請求項４】
複数のプロセッサを含む情報処理システムが実行するシミュレーション方法であって、
指標値の値域を複数の区間に分割し、前記複数の区間それぞれで使用する指標値のサンプルの下限数ｓ（ｓは２以上の整数）を決定し、
前記複数のプロセッサにｐ個のタスク（ｐは２以上の整数）を割り振り、
各タスクとして、前記複数の区間それぞれに属する指標値のサンプルが少なくともｓ／ｐ個に達するまで乱数から指標値のサンプルを生成する処理を、当該タスクが割り振られたプロセッサにおいて実行し、
前記複数の区間それぞれについて各タスクからｓ／ｐ個の指標値のサンプルを収集し、収集された各区間ｓ個の指標値のサンプルを用いて指標値の確率分布を推定する
シミュレーション方法。
【請求項５】
各タスクでは、前記複数の区間それぞれについてｓ／ｐ個の指標値のサンプルとｓ／ｐ個を超えて生成された他の指標値のサンプルとを区別し、
複数のタスクから他の指標値のサンプルを収集し、前記収集した他の指標値のサンプルの中から前記複数の区間それぞれに属する他の指標値のサンプルの数が同じになるように一部又は全部の他の指標値のサンプルを選択し、
前記収集された各区間ｓ個の指標値のサンプルに加えて前記選択した一部又は全部の他の指標値のサンプルを用いて、前記指標値の確率分布を推定する
請求項４に記載のシミュレーション方法。
【請求項６】
指標値の確率分布を推定し所定の確率条件を満たす指標値を決定する情報処理システムに用いられるコンピュータに、
基準の指標値を選択し、前記基準の指標値に基づいて複数の仮の指標値を選択し、
前記複数の仮の指標値に対応する複数のタスクを複数のプロセッサに割り振り、
各仮の指標値に対応するタスクとして、乱数から指標値のサンプルを生成するモデルと前記指標値のサンプルが当該仮の指標値を中心に生成されるようにバイアスをかけた乱数の分布とを用いて当該仮の指標値に対応する確率データを生成する処理を、当該タスクを割り振ったプロセッサに実行させ、
前記複数の仮の指標値それぞれに対応する前記確率データと前記所定の確率条件とを比較して一の仮の指標値を選択し、
前記選択した一の仮の指標値を前記所定の確率条件を満たす指標値と決定するか、又は、前記選択した一の仮の指標値を新たな基準の指標値として用いて前記複数の仮の指標値の選択と前記複数のタスクの割り振りとを再度行う
処理を実行させるプログラム。
【請求項７】
コンピュータに、
指標値の値域を複数の区間に分割し、前記複数の区間それぞれで使用する指標値のサンプルの下限数ｓ（ｓは２以上の整数）を決定し、
複数のプロセッサにｐ個のタスク（ｐは２以上の整数）を割り振り、
各タスクとして、前記複数の区間それぞれに属する指標値のサンプルが少なくともｓ／ｐ個に達するまで乱数から指標値のサンプルを生成する処理を、当該タスクを割り振ったプロセッサに実行させ、
前記複数の区間それぞれについて各タスクからｓ／ｐ個の指標値のサンプルを収集し、収集された各区間ｓ個の指標値のサンプルを用いて指標値の確率分布を推定する
処理を実行させるプログラム。
【請求項８】
指標値の確率分布を推定し所定の確率条件を満たす指標値を決定する情報処理システムであって、
複数のプロセッサと、
基準の指標値を選択し、前記基準の指標値に基づいて複数の仮の指標値を選択し、前記複数の仮の指標値に対応する複数のタスクを前記複数のプロセッサに割り振る制御部と
を有し、
前記複数のプロセッサそれぞれは、割り振られた何れかの仮の指標値に対応するタスクとして、乱数から指標値のサンプルを生成するモデルと前記指標値のサンプルが当該仮の指標値を中心に生成されるようにバイアスをかけた乱数の分布とを用いて、当該仮の指標値に対応する確率データを生成する処理を行い、
前記制御部は、前記複数の仮の指標値それぞれに対応する前記確率データと前記所定の確率条件とを比較して一の仮の指標値を選択し、前記選択した一の仮の指標値を前記所定の確率条件を満たす指標値と決定するか、又は、前記選択した一の仮の指標値を新たな基準の指標値として用いて前記複数の仮の指標値の選択と前記複数のタスクの割り振りとを再度行う
情報処理システム。
【請求項９】
複数のプロセッサと、
指標値の値域を複数の区間に分割し、前記複数の区間それぞれで使用する指標値のサンプルの下限数ｓ（ｓは２以上の整数）を決定し、前記複数のプロセッサにｐ個のタスク（ｐは２以上の整数）を割り振る制御部と
を有し、
前記複数のプロセッサそれぞれは、割り振られたタスクとして、前記複数の区間それぞれに属する指標値のサンプルが少なくともｓ／ｐ個に達するまで乱数から指標値のサンプルを生成する処理を行い、
前記制御部は、前記複数の区間それぞれについて各タスクからｓ／ｐ個の指標値のサンプルを収集し、収集された各区間ｓ個の指標値のサンプルを用いて指標値の確率分布を推定する
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション方法、プログラム、及び情報処理システムに関する。
【背景技術】
【０００２】
シミュレーション手法の１つとして、問題の解を解析的に求める代わりに乱数を用いて近似的に求めるモンテカルロ・シミュレーションがよく利用されている。モンテカルロ・シミュレーションでは、ある乱数の分布に従って大量の乱数を発生させ、乱数から指標値のサンプルを生成するモデルにこれら大量の乱数を代入することで、大量のサンプルを生成する。これにより、指標値の確率分布を推定することができる。指標値の確率分布からは、指標値の期待値や分散などの各種の統計値を得ることができる。モンテカルロ・シミュレーションでは、生成するサンプルの数を増やすことで計算精度が向上する。
【０００３】
モンテカルロ・シミュレーションは、解析的に解くことが難しい問題や複雑な問題の解を求めるために有効な数値解析手法の１つである。例えば、ある製造現場における製品の歩留まりを解析したい場合に、モンテカルロ・シミュレーションを用いて不良品の発生確率を計算することが考えられる。また、金融資産のポートフォリオから生じる損益を予測してリスク指標を計算する場合や、複雑な金融派生商品の現在価値を計算する場合などにも、モンテカルロ・シミュレーションが利用され得る。
【０００４】
但し、モンテカルロ・シミュレーションでは、サンプル数の増加に対して計算精度は緩やかに向上していく。そのため、単純にサンプル数を増やすことで計算精度を上げようとすると、計算量が膨大になりシミュレーション時間が長くなってしまう。そこで、モンテカルロ・シミュレーションの計算量を抑制する方法として、例えば、重点サンプリング（Importance Sampling）法や層化抽出（Stratified Sampling）法などがある。
【０００５】
重点サンプリング法では、分散の大きいサンプル群を生成する代わりに、乱数の分布にバイアスをかけることで着目する特定の指標値を中心に分散の小さいサンプル群を生成する。重点サンプリング法を用いると、通常のモンテカルロ・シミュレーションと比べて、サンプル数を少なくしても着目する指標値周辺では高い精度の計算結果が得られる。層化抽出法では、指標値の値域を、予想される各区間の確率（確率密度の積分）が概ね均等になるように複数の区間に分割し、各区間から同数のサンプルを採用して指標値の確率分布を推定する。層化抽出法を用いると、値域を適切に分割できれば、通常のモンテカルロ・シミュレーションと比べてサンプル数を少なくしても高い精度の計算結果が得られる。
【０００６】
なお、リスクに与える影響の大小に応じてリスクファクタを分割し、分割したリスクファクタ毎に異なる方法で損失額を算出するリスク定量化システムが提案されている。このリスク定量化システムは、リスクに与える影響の大きいリスクファクタについてはモンテカルロ・シミュレーションで損失額を算出し、リスクに与える影響の小さいリスクファクタについては計算量の小さい方法で損失額を算出する。また、このリスク定量化システムは、算出した複数の損失額に基づいて損失額分布を生成する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−０９２３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記のように、重点サンプリング法や層化抽出法を用いることで、シミュレーションの計算量を抑制することができる。一方で、複数のプロセッサにタスクを分配してシミュレーションを並列処理化し、シミュレーション時間を短縮することも考えられる。上記の重点サンプリング法や層化抽出法に基づくシミュレーションも、解く問題によっては並列処理化してシミュレーション時間を短縮したいことがある。しかし、複数のプロセッサに対し、どのようにタスクを分配すれば並列処理が効率的になるかが問題となる。
【０００９】
例えば、重点サンプリング法では、特定の指標値に対応する確率を算出することは容易である一方、その逆に所定の確率条件を満たすような指標値を探すことは容易ではない。後者のような問題を解くとき、どのように並列処理化すればシミュレーション時間をより短縮できるかが問題となる。また、例えば、層化抽出法では、指標値の値域を複数の区間に分割することから、並列処理化する方法としては区間毎にプロセッサを割り当てる方法が考えられる。しかし、各区間に対して他の区間とは独立なタスクを設定すると、各プロセッサは自身が担当する区間に属さないサンプルが生成されたときそのサンプルを破棄することになり、大量のサンプルが破棄されて非効率的となる。
【００１０】
１つの側面では、本発明は、複数のプロセッサを効率的に用いてシミュレーションを行うことが可能なシミュレーション方法、プログラム、及び情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、複数のプロセッサを含む情報処理システムが実行する、指標値の確率分布を推定し所定の確率条件を満たす指標値を決定するシミュレーション方法が提供される。基準の指標値を選択し、基準の指標値に基づいて複数の仮の指標値を選択する。複数の仮の指標値に対応する複数のタスクを複数のプロセッサに割り振る。各仮の指標値に対応するタスクとして、乱数から指標値のサンプルを生成するモデルと指標値のサンプルが当該仮の指標値を中心に生成されるようにバイアスをかけた乱数の分布とを用いて当該仮の指標値に対応する確率データを生成する処理を、当該タスクが割り振られたプロセッサにおいて実行する。複数の仮の指標値それぞれに対応する確率データと所定の確率条件とを比較して一の仮の指標値を選択する。選択した一の仮の指標値を所定の確率条件を満たす指標値と決定するか、又は、選択した一の仮の指標値を新たな基準の指標値として用いて複数の仮の指標値の選択と複数のタスクの割り振りとを再度行う。
【００１２】
また、１つの態様では、複数のプロセッサを含む情報処理システムが実行するシミュレーション方法が提供される。指標値の値域を複数の区間に分割し、複数の区間それぞれで使用する指標値のサンプルの下限数ｓ（ｓは２以上の整数）を決定する。複数のプロセッサにｐ個のタスク（ｐは２以上の整数）を割り振る。各タスクとして、複数の区間それぞれに属する指標値のサンプルが少なくともｓ／ｐ個に達するまで乱数から指標値のサンプルを生成する処理を、当該タスクが割り振られたプロセッサにおいて実行する。複数の区間それぞれについて各タスクからｓ／ｐ個の指標値のサンプルを収集し、収集された各区間ｓ個の指標値のサンプルを用いて指標値の確率分布を推定する。
【００１３】
また、１つの態様では、コンピュータに実行させるプログラムが提供される。また、１つの態様では、複数のプロセッサと制御部とを有する情報処理システムが提供される。
【発明の効果】
【００１４】
一側面では、計算値の分布から算出される解を高速に計算することが可能になる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係る情報処理システムの例を示した図である。
【図２】第２の実施の形態に係る情報処理システムの例を示した図である。
【図３】第３の実施の形態に係る情報処理システムのハードウェアの例を示した第１の図である。
【図４】第３の実施の形態に係る情報処理システムのハードウェアの例を示した第２の図である。
【図５】第３の実施の形態に係る情報処理システムのハードウェアの例を示した第３の図である。
【図６】第３の実施の形態に係る情報処理システムの機能ブロックの例を示した図である。
【図７】ＶａＲの計算方法について説明するための図である。
【図８】重点サンプリング法について説明するための図である。
【図９】重点サンプリング法の並列化について説明するための第１の図である。
【図１０】重点サンプリング法の並列化について説明するための第２の図である。
【図１１】第３の実施の形態に係る情報処理システムによる処理の流れを示した図である。
【図１２】同精度のシミュレーション計算を実行して得られる計算値の発生頻度を比較した計算例を示す図である。
【図１３】第４の実施の形態に係る情報処理システムの機能ブロックの例を示した図である。
【図１４】層化抽出法について説明するための図である。
【図１５】層化抽出法の並列化について説明するための図である。
【図１６】層化抽出法による分布計算の流れを示した図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら実施の形態について説明する。
［第１の実施の形態］
第１の実施の形態について説明する。
【００１７】
図１は、第１の実施の形態に係る情報処理システムの例を示した図である。
第１の実施の形態に係る情報処理システム１０は、指標値の確率分布を推定し、所定の確率条件を満たす指標値を決定する。情報処理システム１０が実行するシミュレーションは、例えば、重点サンプリング法を用いたモンテカルロ・シミュレーションである。
【００１８】
情報処理システム１０は、制御部１１とプロセッサ１２−１〜１２−３を含む複数のプロセッサとを有する。「複数のプロセッサ」としては、例えば、次のようなものが挙げられる。（１）１つのCentral Processing Unit（ＣＰＵ）に含まれる複数のプロセッサコア。（２）１つの情報処理装置が備える複数のＣＰＵやGeneral-purpose Computing on Graphics Processing Units（ＧＰＧＰＵ）用の複数のＧＰＵ。（３）ネットワークに接続された複数の情報処理装置が備えるＣＰＵやＧＰＧＰＵ用のＧＰＵの集合。但し、「プロセッサ」は、Digital Signal Processor（ＤＳＰ）、Application Specific Integrated Circuit（ＡＳＩＣ）、Field Programmable Gate Array（ＦＰＧＡ）などの特定用途の電子回路であってもよい。各プロセッサは、例えば、Random Access Memory（ＲＡＭ）などのメモリに記憶されたプログラムに従ってタスクを実行する。
【００１９】
制御部１１は、プロセッサ１２−１〜１２−３を利用してシミュレーションを行う。制御部１１は、例えば、ＲＡＭなどのメモリに記憶されたプログラムを実行するプロセッサを含む。制御部１１とプロセッサ１２−１〜１２−３は、同じ情報処理装置に属していてもよいし、異なる情報処理装置に属していてもよい。制御部１１がプロセッサを含む場合には、以下に説明するタスクの少なくとも１つを制御部１１に割り当ててもよい。
【００２０】
制御部１１は、指標値の値域の中から基準の指標値を選択する。基準の指標値は、例えば、次のように選択する。まず、制御部１１は、乱数から指標値のサンプルを生成するモデルとバイアスをかけない乱数の分布とを用いて、指標値の確率分布を推定する。この確率分布は精度の低いものでよく、生成するサンプルの数は、重点サンプリング法を用いない通常のモンテカルロ・シミュレーションと比べて十分に少ない数（例えば、１／１００〜１／１０００程度）でよい。そして、制御部１１は、推定した確率分布から、所定の確率条件を満たすような指標値を基準の指標値として選択する。所定の確率条件は、例えば、累積確率＝１％といった確率に関する条件である。但し、指標値の確率分布を推定せず、過去のシミュレーション結果などを参照して基準の指標値を選択してもよい。
【００２１】
次に、制御部１１は、基準の指標値に基づいて複数の仮の指標値を選択する。例えば、制御部１１は、基準の指標値と、基準の指標値から前後に所定幅だけずれた２以上の指標値を、仮の指標値として選択する。図１の例では、指標値ｖ２が基準の指標値として選択され、指標値ｖ１〜ｖ３が仮の指標値として選択されている。制御部１１は、複数の仮の指標値に対応する複数のタスクを複数のプロセッサに割り振る。図１の例では、指標値ｖ１に対応するタスク１３−１がプロセッサ１２−１に割り当てられ、指標値ｖ２に対応するタスク１３−２がプロセッサ１２−２に割り当てられ、指標値ｖ３に対応するタスク１３−３がプロセッサ１２−３に割り当てられている。
【００２２】
何れかのタスクが割り当てられたプロセッサは、当該タスクとして次の処理を行う。ここでは、代表してタスク１３−１について説明する。プロセッサ１２−１は、仮の指標値である指標値ｖ１を中心に指標値のサンプルが生成されるように、乱数の分布にバイアスをかける。そして、プロセッサ１２−１は、乱数から指標値のサンプルを生成する上記のモデルとバイアスをかけた乱数の分布とを用いて、仮の指標値である指標値ｖ１に対応する確率データを生成する。確率データは、例えば、指標値ｖ１における累積確率（指標値がｖ１以下である確率）を示す。ここで生成するサンプルの数は、重点サンプリング法を用いない通常のモンテカルロ・シミュレーションと比べて十分に少ない数でよい。
【００２３】
他の仮の指標値についても、指標値ｖ１と同様に確率データが生成される。上記の複数のタスクは互いに独立に実行でき、異なるプロセッサに割り振ったタスクは並列に実行できる。例えば、タスク１３−１〜１３−３が並列に実行される。
【００２４】
複数のプロセッサに割り振った複数のタスクが完了すると、制御部１１は、各仮の指標値に対応する確率データと所定の確率条件とを比較することで、複数の仮の指標値の中から１つを選択する。例えば、確率データ及び所定の確率条件が累積確率を示す場合、所定の累積確率に最も近い累積確率が得られた仮の指標値を選択する。このとき、複数の仮の指標値の中に基準の指標値が含まれる場合であっても、基準の指標値ではない仮の指標値が選択される可能性がある。これは、バイアスをかけた乱数の分布を用いることで、基準の指標値を選ぶときよりも高い精度で確率データが計算され得るためである。
【００２５】
そして、制御部１１は、選択した一の仮の指標値を、所定の確率条件を満たす指標値として決定するか、又は、当該一の仮の指標値を新たな基準の指標値として上記の仮の指標値の選択とタスクの実行とを再度行う。仮の指標値の選択とタスクの実行とを繰り返すことで、確率データが所定の確率条件に近付いていくことが期待できる。繰り返しは、所定の停止条件が満たされたときに自動的に終了するようにしてもよい。停止条件は、生成したサンプルの総数、シミュレーション時間、繰り返し回数などを基準に決めてもよい。
【００２６】
第１の実施の形態に係る情報処理システム１０によれば、複数の仮の指標値が選択されて、各仮の指標値を中心に指標値のサンプルを生成するタスクが設定される。このようなタスクにより、仮の指標値に対応する確率データを少ないサンプルによって精度よく算出することができる。また、複数のタスクは互いに独立に実行でき、複数のタスクを複数のプロセッサに振り分けることでシミュレーションを効率的に並列処理化できる。また、複数のタスクそれぞれで算出された確率データに基づいて、複数の仮の指標値の中から一の指標値を選択することで、シミュレーションの精度を上げることができる。特に、上記の処理を繰り返せば、段階的に精度を上げていくことも可能となる。なお、第１の実施の形態に係るシミュレーション方法で生成するサンプルの総数は、重点サンプリング法を用いない通常のモンテカルロ・シミュレーションと比べて十分に少ない数に抑えられる。
【００２７】
［第２の実施の形態］
次に、第２の実施の形態について説明する。前述の第１の実施の形態との差異を中心に説明し、第１の実施の形態と同様の事項については適宜説明を省略する。
【００２８】
図２は、第２の実施の形態に係る情報処理システムの例を示した図である。
第２の実施の形態に係る情報処理システム２０は、指標値の値域を複数の区間に分割して指標値の確率分布を推定する。情報処理システム２０が実行するシミュレーションは、例えば、層化抽出法を用いたモンテカルロ・シミュレーションである。
【００２９】
情報処理システム２０は、制御部２１とプロセッサ２２−１〜２２−３を含む複数のプロセッサとを有する。第１の実施の形態で説明したように、「複数のプロセッサ」としては、１つのＣＰＵに含まれる複数のプロセッサコアなど様々なものが考えられ、「プロセッサ」としては、ＤＳＰやＡＳＩＣなど様々なものが考えられる。各プロセッサは、例えば、ＲＡＭなどのメモリに記憶されたプログラムに従ってタスクを実行する。
【００３０】
制御部２１は、プロセッサ２２−１〜２２−３を利用してシミュレーションを行う。制御部２１は、例えば、ＲＡＭなどのメモリに記憶されたプログラムを実行するプロセッサを含む。制御部２１とプロセッサ２２−１〜２２−３は、同じ情報処理装置に属していてもよいし、異なる情報処理装置に属していてもよい。制御部２１がプロセッサを含む場合には、以下に説明するタスクの少なくとも１つを制御部２１に割り当ててもよい。
【００３１】
制御部２１は、指標値の値域を複数の区間に分割する。値域の分割は、例えば、次のように行う。まず、制御部２１は、乱数から指標値のサンプルを生成するモデルと乱数の分布とを用いて、指標値の確率分布を推定する。この確率分布は精度の低いものでよく、生成するサンプルの数は、層化抽出法を用いない通常のモンテカルロ・シミュレーションと比べて十分に少ない数（例えば、１／１００〜１／１０００程度）でよい。そして、制御部２１は、推定した確率分布に従って、各区間の確率（当該区間の確率密度の積分）が同じになるように指標値の値域を複数の区間に分割する。但し、指標値の確率分布を推定せず、過去のシミュレーション結果などを参照して指標値の値域を分割してもよい。
【００３２】
区間の数は、例えば、１０〜２０程度とすることができる。区間数を１０とした場合、理想的には全ての区間の確率が等しく０．１（１０％）になる。なお、図２の例では、説明を簡単にするために、指標値の値域を３つに分割している。すなわち、図２に示すように、指標値の値域が区間Ｔ１、Ｔ２、Ｔ３に分割される。この場合、理想的には区間Ｔ１、Ｔ２、Ｔ３の確率は等しく０．３３（３３％）になる。
【００３３】
次に、制御部２１は、各区間で使用する指標値のサンプルの下限数ｓを決定する。下限数ｓは、シミュレーションの精度を考慮して決定される２以上の整数であり、ユーザにより指定されたものでもよい。全区間で使用するサンプルの下限総数ｍが指定されている場合、ｓ＝ｍ／区間数と計算してもよい。但し、下限総数ｍは、層化抽出法を行わない通常のモンテカルロ・シミュレーションと比べて十分に少ない数でよい。また、制御部２１は、複数のプロセッサにｐ個のタスクを割り振る。タスク数ｐは２以上の整数であり、例えば、タスクを割り当てるプロセッサの数に一致させる。図２の例では、タスク２３−１がプロセッサ２２−１に割り当てられ、タスク２３−２がプロセッサ２２−２に割り当てられ、タスク２３−３がプロセッサ２２−３に割り当てられている。
【００３４】
何れかのタスクが割り当てられたプロセッサは、当該タスクとして次の処理を行う。ここでは、代表してタスク２３−１について説明する。プロセッサ２２−１は、乱数から指標値のサンプルを生成するモデルと乱数の分布とを用いて、所定の個数条件が満たされるまで指標値のサンプルを生成する。個数条件は、各区間に属する指標値のサンプルがｓ／ｐ個に達することである。これは、最もサンプルの少ない区間のサンプル数がｓ／ｐ個に達したと言うこともできる。上記の個数条件が満たされたとき、１又はそれ以上の区間でｓ／ｐ個より多くのサンプルが生成されている可能性がある。
【００３５】
他のタスクでも、各区間について少なくともｓ／ｐ個のサンプルが生成される。上記の複数のタスクは互いに独立に実行でき、異なるプロセッサに割り振ったタスクは並列に実行できる。例えば、タスク２３−１〜２３−３が並列に実行される。
【００３６】
複数のプロセッサに割り振った複数のタスクが完了すると、制御部２１は、複数の区間それぞれについて各タスクを実行したプロセッサからｓ／ｐ個の指標値のサンプルを収集する。これにより、各区間ｓ個のサンプルが収集される。そして、制御部２１は、収集したサンプルを用いて指標値の確率分布を推定する。図２の例でタスク数ｐ＝３とすると、区間Ｔ１について、プロセッサ２２−１〜２２−３からｓ／３個ずつサンプルが収集されて合計ｓ個のサンプルが収集される。区間Ｔ２、Ｔ３についても、プロセッサ２２−１〜２２−３からｓ／３個ずつサンプルが収集されて合計ｓ個のサンプルが収集される。
【００３７】
このように、各タスクは何れか１つの指標値の区間を担当するのではなく、全ての指標値の区間を担当する。図２の例では、タスク２３−１〜２３−３それぞれは、区間Ｔ１、Ｔ２、Ｔ３の何れか１つを担当するのではなく、全ての区間を担当する。但し、タスク数を増やすことで各タスクにおいて生成すべきサンプルの数を減らすことができる。
【００３８】
なお、指標値の値域を複数の区間に分割するシミュレーション方法では、各区間のサンプル数を同じにすればよく、各区間のサンプル数が下限値ｓよりも多くなってもよい。むしろ、各区間のサンプル数が多い方が推定の精度が向上する。そこで、制御部２１は、各タスクで生成されたｓ／ｐ個を超える余分なサンプルを収集し、各区間のサンプル数が同じになるように、余分なサンプルの一部又は全部を確率分布の推定に用いてもよい。
【００３９】
例えば、プロセッサ２２−１が、区間Ｔ１でｓ／３個、区間Ｔ２でｓ／３＋α個、区間Ｔ３でｓ／３＋α個のサンプルを生成したとする。また、プロセッサ２２−２が、区間Ｔ１でｓ／３＋α個、区間Ｔ２でｓ／３個、区間Ｔ３でｓ／３＋α個のサンプルを生成したとする。また、プロセッサ２２−３が、区間Ｔ１でｓ／３＋α個、区間Ｔ２でｓ／３個、区間Ｔ３でｓ／３個のサンプルを生成したとする。すると、区間Ｔ１では２α個の余分なサンプルが収集され、区間Ｔ２ではα個の余分なサンプルが収集され、区間Ｔ３では２α個の余分なサンプルが収集される。この場合、区間Ｔ２のα個が余分なサンプル数の最小値であるため、確率分布の推定には最大で各区間ｓ＋α個のサンプルを使用できる。このとき、使用されなかった余分なサンプルは、制御部２１が破棄すればよい。
【００４０】
第２の実施の形態に係る情報処理システム２０によれば、指標値の値域が複数の区間に分割されると共に、各タスクが全ての区間を担当するように複数のタスクが設定される。これら複数のタスクは互いに独立に実行でき、複数のタスクを複数のプロセッサに振り分けることでシミュレーション時間を短縮することができる。また、分割された区間毎にタスクを設定する場合と比べて、確率分布の推定に使用しない無駄なサンプルの発生を抑制することができ、シミュレーションを効率的に並列処理化することができる。
【００４１】
また、各タスクに割り当てたサンプル数を超える余分なサンプルも収集して確率分布の推定に利用すれば、さらにシミュレーションの精度を上げることができる。なお、第２の実施の形態に係るシミュレーション方法で生成するサンプルの総数は、層化抽出法を用いない通常のモンテカルロ・シミュレーションと比べて十分に少ない数に抑えられる。
【００４２】
［第３の実施の形態］
次に、第３の実施の形態について説明する。
図３は、第３の実施の形態に係る情報処理システムのハードウェアの例を示した第１の図である。第３の実施の形態に係る情報処理システム１００の機能は、例えば、図３に示すようなコンピュータのハードウェアを利用して実現することができる。
【００４３】
図３に示すコンピュータは、ＣＰＵ９０１、ＲＡＭ９０２、ＨＤＤ９０３、画像信号処理部９０４、入力信号処理部９０５、ディスクドライブ９０６、及び通信インターフェース９０７を有する。また、ＣＰＵ９０１は、複数のコアＣ１、…、Ｃｎを有する。
【００４４】
なお、ＣＰＵ９０１は、第１の実施の形態の制御部１１及びプロセッサ１２−１、１２−２、１２−３の一例である。また、ＣＰＵ９０１は、第２の実施の形態の制御部２１及びプロセッサ２２−１、２２−２、２２−３の一例である。
【００４５】
ＣＰＵ９０１は、プログラムに記述された命令を実行する演算器を含むプロセッサである。ＣＰＵ９０１は、ＨＤＤ９０３に記憶されているプログラムやデータの少なくとも一部をＲＡＭ９０２にロードし、プログラムに記述された命令を実行する。なお、情報処理システム１００は、複数のＣＰＵ９０１を搭載していてもよい。
【００４６】
ＲＡＭ９０２は、ＣＰＵ９０１が実行するプログラムや、処理に用いられるデータを一時的に記憶するための揮発性メモリである。なお、情報処理システム１００は、ＲＡＭ９０２とは異なる種類のメモリを有していてもよい。また、情報処理システム１００は、複数のメモリを備えていてもよい。
【００４７】
ＨＤＤ９０３は、Operating System（ＯＳ）、ファームウェア、或いは、アプリケーションソフトウェアなどのプログラムや、処理に用いられるデータなどを記憶する不揮発性記憶装置の一例である。なお、情報処理システム１００は、フラッシュメモリやSolid State Drive（ＳＳＤ）など、ＨＤＤ９０３とは異なる種類の記憶装置を有していてもよい。また、情報処理システム１００は、複数の記憶装置を有していてもよい。
【００４８】
画像信号処理部９０４は、ＣＰＵ９０１による制御を受け、コンピュータに接続された表示装置９１に画像を出力する。表示装置９１は、例えば、Cathode Ray Tube（ＣＲＴ）ディスプレイ、Liquid Crystal Display（ＬＣＤ）、Plasma Display Panel（ＰＤＰ）、Organic Electro-Luminescence Display（ＯＥＬＤ）などの表示デバイスである。
【００４９】
入力信号処理部９０５は、コンピュータに接続された入力デバイス９２から入力信号を取得し、ＣＰＵ９０１に通知する。入力デバイス９２としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、トラックボール、リモートコントローラ、ボタンスイッチなどを用いることができる。
【００５０】
ディスクドライブ９０６は、記録媒体９３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体９３としては、例えば、Flexible Disk（ＦＤ）、ＨＤＤなどの磁気ディスク、Compact Disc（ＣＤ）やDigital Versatile Disc（ＤＶＤ）などの光ディスク、Magneto-Optical disk（ＭＯ）などの光磁気ディスクを用いることができる。ディスクドライブ９０６は、例えば、ＣＰＵ９０１による制御を受け、記録媒体９３から読み取ったプログラムやデータをＲＡＭ９０２又はＨＤＤ９０３に格納する。
【００５１】
通信インターフェース９０７は、ネットワーク９４を介して他のコンピュータと通信を行うためのインターフェースである。通信インターフェース９０７は、有線インターフェースであってもよいし、無線インターフェースであってもよい。
【００５２】
また、第３の実施の形態に係る情報処理システム１００の機能は、例えば、図４に示すようなコンピュータのハードウェアを利用しても実現することができる。図４は、第３の実施の形態に係る情報処理システムのハードウェアの例を示した第２の図である。
【００５３】
図４に示すコンピュータは、ＣＰＵ９０１、ＲＡＭ９０２、ＨＤＤ９０３、画像信号処理部９０４、入力信号処理部９０５、ディスクドライブ９０６、及び通信インターフェース９０７に加え、複数のＧＰＵ９１１、９１２、９１３を有する。なお、ＧＰＵ９１１、９１２、９１３は、例えば、General-purpose Computing on Graphics Processing Units（ＧＰＧＰＵ）用のＧＰＵである。
【００５４】
なお、ＣＰＵ９０１は、第１の実施の形態の制御部１１の一例である。また、ＧＰＵ９１１、９１２、９１３は、第１の実施の形態のプロセッサ１２−１、１２−２、１２−３の一例である。また、ＣＰＵ９０１は、第２の実施の形態の制御部２１の一例である。また、ＧＰＵ９１１、９１２、９１３は、第２の実施の形態のプロセッサ２２−１、２２−２、２２−３の一例である。
【００５５】
また、第３の実施の形態に係る情報処理システム１００の機能は、例えば、図５に示すような複数のコンピュータのハードウェアを利用しても実現することができる。図５は、第３の実施の形態に係る情報処理システムのハードウェアの例を示した第３の図である。
【００５６】
図５に示すように、複数のコンピュータ９０−１、９０−２、９０−３は、ネットワーク９４を介して接続されている。また、コンピュータ９０−１は、ＣＰＵ９２１、ＲＡＭ９２２、ＨＤＤ９２３、及び通信インターフェース９２４を有する。また、コンピュータ９０−２は、ＣＰＵ９３１、ＲＡＭ９３２、及び通信インターフェース９３３を有する。また、コンピュータ９０−３は、ＣＰＵ９４１、ＲＡＭ９４２、及び通信インターフェース９４３を有する。
【００５７】
なお、ＣＰＵ９２１、９３１は、上述したＣＰＵ９０１と実質的に同じである。但し、ＣＰＵ９３１は、例えば、ＧＰＧＰＵであってもよい。また、ＲＡＭ９２２、９３２は、上述したＲＡＭ９０２と実質的に同じである。また、ＨＤＤ９２３は、上述したＨＤＤ９０３と実質的に同じである。また、通信インターフェース９２４、９３３は、上述した通信インターフェース９０７と実質的に同じである。また、コンピュータ９０−１、９０−２、９０−３は、上述した画像信号処理部９０４、入力信号処理部９０５、ディスクドライブ９０６を有していてもよい。
【００５８】
なお、ＣＰＵ９２１は、第１の実施の形態の制御部１１の一例である。また、ＣＰＵ９３１は、第１の実施の形態のプロセッサ１２−１、１２−２、１２−３の一例である。また、ＣＰＵ９２１は、第２の実施の形態の制御部２１の一例である。また、ＣＰＵ９３１は、第２の実施の形態のプロセッサ２２−１、２２−２、２２−３の一例である。
【００５９】
図６は、第３の実施の形態に係る情報処理システムの機能ブロックの例を示した図である。
図６に示すように、情報処理システム１００は、第１プロセッサ１１０、複数の第２プロセッサ１２０−１、１２０−２、…、１２０−Ｎ、及び記憶装置１３０を有する。なお、複数の第２プロセッサ１２０−１、１２０−２、…、１２０−Ｎは同じ機能を有する。そこで、第２プロセッサ１２０−１を代表例とし、以下では、これを第２プロセッサ１２０と表記して説明を行う。
【００６０】
なお、第１プロセッサ１１０の機能は、ＣＰＵ９０１、９２１により実現できる。また、第２プロセッサ１２０−１、…、１２０−Ｎの機能は、ＣＰＵ９０１、ＧＰＵ９１１、９１２、９１３、又はＣＰＵ９３１により実現できる。また、第１プロセッサ１１０、及び第２プロセッサ１２０が有する機能の一部又は全部は、ＣＰＵ９０１、９２１が実行するプログラムのモジュールとして実現できる。また、第１プロセッサ１１０、及び第２プロセッサ１２０が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。また、記憶装置１３０は、ＲＡＭ９０２、９２２、９３２やＨＤＤ９０３、９２３に確保された記憶領域、或いは、ネットワーク９４に接続されたファイルサーバなどの外部記憶装置である。
【００６１】
第１プロセッサ１１０は、確率変数を含む計算式の値がとる確率分布を近似的に計算し、その確率分布から得られる指標値を算出する。なお、第１プロセッサ１１０は、乱数生成部１１１、分布計算部１１２、指標計算部１１３、指標選択部１１４、及び指標出力部１１５の機能を有する。
【００６２】
乱数生成部１１１は、上記の計算式に含まれる確率変数が従う密度関数ｐに基づいて乱数群を発生させる。なお、密度関数ｐの情報は、記憶装置１３０に格納されている。乱数生成部１１１が発生させた乱数群は、分布計算部１１２に入力される。
【００６３】
分布計算部１１２は、乱数生成部１１１が発生させた乱数群を利用して上記の計算式の値がとる確率分布を近似的に計算する。分布計算部１１２は、乱数群に含まれる各乱数を上記の計算式に含まれる確率変数の値として代入し、計算式の値（以下、第１計算値）を計算する。また、分布計算部１１２は、第１計算値の密度分布を生成する。分布計算部１１２が生成した密度分布は、指標計算部１１３に入力される。
【００６４】
指標計算部１１３は、分布計算部１１２が生成した密度分布に基づいて、ある条件を満たす指標値を計算する。指標値としては、例えば、密度分布の下方１パーセンタイル点、下方５パーセンタイル点、期待値、分散値、半値幅など、様々な統計値が考えられる。以下では、一例としてＰ0パーセンタイル点を指標値とする計算について考える。
【００６５】
指標計算部１１３は、計算した指標値を基準に複数の仮指標値を設定する。仮指標値は、例えば、指標値よりも５％、１０％大きな値、指標値よりも５％、１０％小さな値など、予め設定された条件を満たすように設定される。指標計算部１１３により設定された複数の仮指標値は、記憶装置１３０に格納される。
【００６６】
第２プロセッサ１２０は、仮指標値の１つを記憶装置１３０から読み出し、その仮指標値を利用して上記の計算式の値がとる確率分布を近似的に計算し、その確率分布から得られる累積密度と、指標値の算出基準とした確率Ｐ0との差分値を計算する。なお、第２プロセッサ１２０は、乱数生成部１２１、分布計算部１２２、及び累積密度計算部１２３の機能を有する。
【００６７】
乱数生成部１２１は、仮指標値の近辺に計算値が集中するような乱数群を発生させる密度関数を密度関数ｑに設定する。また、乱数生成部１２１は、密度関数ｑに基づいて乱数群を発生させる。乱数生成部１２１が発生させた乱数群は、分布計算部１２２に入力される。また、密度関数ｑの情報は、分布計算部１２２に入力される。
【００６８】
分布計算部１２２は、乱数生成部１２１が発生させた乱数群を利用して上記の計算式の値がとる確率分布を近似的に計算する。分布計算部１２２は、記憶装置１３０から密度関数ｐの情報を取得し、密度関数ｐ及びｑの情報を利用して上記の計算式の値を計算するための変換式を設定する。例えば、確率変数Ｘが密度関数ｐに従う場合、計算式Ｆ（Ｘ）の期待値Ｅp（Ｆ（Ｘ））は、下記の式（１）のように表現される。但し、Ｅp（・）は、密度関数ｐに従う確率変数Ｘに関する期待値を表す。
【００６９】
【数１】
2014123272.tif 000003
【００７０】
さらに、上記の式（１）は、下記の式（２）に示すように、密度関数ｑに従う確率変数Ｙに関する期待値Ｅq（・）へと変形することができる。このことは、変換式ｐ（Ｙ）／ｑ（Ｙ）を利用することで、密度関数ｐに従う確率変数Ｘに関する期待値を密度関数ｑに従う確率変数Ｙに関する期待値に置き換え可能であることを意味する。ちなみに、モンテカルロ・シミュレーションによる積分Ｉの解ＩMCは、ｙ1，…，ｙNを密度関数ｑに従う互いに独立な乱数として下記の式（３）により得られる。なお、ここでは期待値を例に挙げたが、他の統計値についても同様に変換式による確率変数の置き換えが可能である。
【００７１】
【数２】
2014123272.tif 000004
【００７２】
【数３】
2014123272.tif 000005
【００７３】
分布計算部１２２は、乱数群に含まれる各乱数を上記の計算式及び変換式の積に含まれる確率変数の値として代入し、当該積の値（以下、第２計算値）を計算する。また、分布計算部１２２は、第２計算値の密度分布を生成する。分布計算部１２２が生成した密度分布は、累積密度計算部１２３に入力される。累積密度計算部１２３は、分布計算部１２２が生成した密度分布について仮指標値までの累積密度を計算する。また、累積密度計算部１２３は、計算した累積密度と、指標値の算出基準とした確率Ｐ0との差分値を計算する。累積密度計算部１２３により計算された差分値は、記憶装置１３０に格納される。
【００７４】
記憶装置１３０には、複数の第２プロセッサ１２０−１、…、１２０−Ｎにより計算された複数の差分値が格納される。指標選択部１１４は、記憶装置１３０に格納された複数の差分値の中から最小の差分値を抽出し、抽出した差分値に対応する仮指標値を選択する。また、指標選択部１１４は、選択した仮指標値を基準に新たな複数の仮指標値を設定する。仮指標値は、例えば、指標値よりも４％、８％大きな値、指標値よりも４％、８％小さな値など、予め設定された条件を満たすように設定される。指標選択部１１４により新たに設定された複数の仮指標値は、記憶装置１３０に格納される。
【００７５】
また、複数の第２プロセッサ１２０−１、…、１２０−Ｎは、新たに設定された複数の仮指標値について上記の差分値を計算し、記憶装置１３０に格納する。指標選択部１１４は、記憶装置１３０に格納された複数の差分値の中から最小の差分値を抽出し、抽出した差分値に対応する仮指標値を選択する。複数の第２プロセッサ１２０−１、…、１２０−Ｎによる差分値の計算、及び指標選択部１１４による仮指標値の選択は、終了条件を満たすまで繰り返し行われる。終了条件としては、例えば、ユーザによる停止操作、予め設定された繰り返し回数、最小の差分値の閾値判定、或いは、差分値の収束判定などが考えられる。
【００７６】
終了条件を満たした場合、指標選択部１１４は、選択した仮指標値を計算結果として指標出力部１１５に入力する。指標出力部１１５は、指標選択部１１４が入力した仮指標値を指標値の計算結果として出力する。例えば、指標出力部１１５は、計算結果の情報を表示装置９１に表示させる。また、指標出力部１１５は、ネットワーク９４を介して計算結果の情報を他の機器に提供してもよい。また、指標出力部１１５は、終了条件を満たしていない場合でも、指標選択部１１４が選択した仮指標値を逐次出力してもよい。
【００７７】
以上説明したように、第３の実施の形態に係る情報処理システム１００によれば、第１プロセッサ１１０により計算対象の指標値が計算される。また、その指標値周辺に複数の仮指標値を設定し、各仮指標値の近辺に計算値が集中するような乱数群を発生させることで、より精度の高い密度分布が計算される。さらに、複数の仮指標値の中から、求めたい指標値に近い仮指標値が選択され、その仮指標値が計算結果として出力される。
【００７８】
このように、第１プロセッサ１１０による計算結果を利用して、より高精度の計算が実行されるため、第１プロセッサ１１０による計算は少ない乱数を用いて実行されてもよい。また、第２プロセッサ１２０による計算は仮指標値の近辺に計算値が集中するような乱数群を用いて実行されるため、この計算に用いる乱数の数も少なくてよい。さらに、複数の第２プロセッサ１２０−１、…、１２０−Ｎによる計算は互いに独立しているため、並列に実行される。
【００７９】
従って、第３の実施の形態に係る情報処理システム１００によれば、通常のモンテカルロ・シミュレーションによって指標値を計算する場合に比べ、指標値の計算に用いる乱数の数を低減することができ、シミュレーション計算の実行回数を削減できる。また、シミュレーション計算の一部が並列実行されることから、計算資源を効率的に活用して高速な演算が可能になる。
【００８０】
以下、Value at Risk（ＶａＲ）の計算方法を例に挙げ、第３の実施の形態に係る情報処理システム１００による処理について説明する。
図７は、ＶａＲの計算方法について説明するための図である。
【００８１】
ＶａＲは、市場リスク管理のためのリスク指標として利用される。例えば、図７に示すように、複数の金融資産を組み合わせたポートフォリオから将来発生する損益額の密度分布における下方Ｐ0パーセンタイルを与える点がＶａＲとして用いられる。なお、確率Ｐ0は、１％や５％に設定されることが多い。ＶａＲは、モンテカルロ・シミュレーションを利用して計算することができる。
【００８２】
一例として、１つの株式及びそのヨーロピアンコールオプション（以下、オプション）から成るポートフォリオのＶａＲをモンテカルロ・シミュレーションにより計算する方法を紹介する。なお、オプションの満期をＴ、オプションの権利行使価格をＫ、時点ｔにおける株価をＳt、金利をｒd、株価投資収益率のボラティリティをσと表記する。また、リスク中立な株価の確率過程を考える。この場合、ウィナー過程に従うランダム項をｄＷtと表記すると、株価の確率過程は、下記の式（４）のように表現される。また、オプションにより生じるキャッシュフローＣは、下記の式（５）のように表現される。
【００８３】
【数４】
2014123272.tif 000006
【００８４】
【数５】
2014123272.tif 000007
【００８５】
モンテカルロ・シミュレーションを適用するため、上記の式（４）に示した確率微分方程式を差分方程式で近似する。満期Ｔまでの期間をＮ等分し、Ｎ等分した時間刻みをΔｔと表現する。また、平均０、分散１の標準正規分布に従う乱数εを用いてウィナー過程に従うランダム項ｄＷtを表現する。このような近似により、上記の式（４）に示した確率微分方程式は、下記の式（６）に示すような差分方程式で表現することができる。
【００８６】
【数６】
2014123272.tif 000008
【００８７】
現在の株価Ｓ0が与えられた場合、上記の式（６）に従ってＳΔt、Ｓ2Δt、…、ＳNΔtを順に計算することで株価のパスが得られる。また、上記の式（５）に基づいてオプションにより生じるキャッシュフローＣ（ＳT）が得られる。また、満期Ｔにおける株式及びオプションから成るポートフォリオの価値が下記の式（７）により得られる。また、株価のパスを十分な数だけ発生させることで、ポートフォリオの価値の分布を計算することができる。
【００８８】
【数７】
2014123272.tif 000009
【００８９】
ポートフォリオの価値の分布が得られると、その分布の下方Ｐ0パーセンタイル点に対応するポートフォリオの価値が計算できる。確率Ｐ0が５％である場合、発生させた多数のパスについて計算したポートフォリオの価値の中から、価値の低い順に数えて全体の５％にあたるポートフォリオの価値がＶａＲに相当する。例えば、株価のパスを１万通り発生させた場合、価値の小さい順に数えて５００番目にあたるポートフォリオの価値が、このポートフォリオにおけるＶａＲとなる。
【００９０】
上記のような方法により、モンテカルロ・シミュレーションを用いてＶａＲを計算することができる。しかし、上記のような単純なモンテカルロ・シミュレーションの場合、大量のパスを発生させなければ十分な計算精度が得られない。
【００９１】
そこで、少ないパスで精度良くＶａＲを計算できるようにする方法について考える。上記の式（５）から、満期株価ＳTが権利行使価格Ｋを下回るパスは、オプションの価値に寄与しないことが分かる。また、ポートフォリオの価値がＶａＲを大きく上回るパスはＶａＲの計算にほとんど寄与しないことが分かる。これらの状況を考慮すると、重点サンプリング法を適用して、ＶａＲの付近に計算結果が集中するようなパスを生成する方法が効果的である。
【００９２】
図８は、重点サンプリング法について説明するための図である。
重点サンプリング法は、乱数が従う密度関数を変形し、特定の範囲に乱数の発生を集中させることで求めたい解を効率的に計算する方法である。例えば、適切な密度関数ｑを選べば、図８に示すように、ＶａＲ付近に計算結果が集中するような乱数を発生させることができ、求めたい解であるＶａＲを効率的に計算することができる。
【００９３】
ここで、密度関数ｑの選び方について考える。例えば、上記の式（２）に示した積分値Ｉを計算する場合、モンテカルロ・シミュレーションにおける解ＩMCの誤差分散を減らすように密度関数ｑを選ぶことができれば重点サンプリング法が実現する。解ＩMCの誤差分散を最小化するような密度関数ｑは、近似的に下記の式（８）により与えられる。なお、ＶａＲを計算する場合、計算式Ｆを上記の式（７）とし、解ＩをＶａＲの値とすれば、同様にして誤差分散を最小化する密度関数ｑを得ることができる。
【００９４】
【数８】
2014123272.tif 000010
【００９５】
ここで、上記のようなシミュレーション計算の並列実行を効率化する方法について考える。なお、ここでもＶａＲの計算を例に説明を進める。
図９は、重点サンプリング法の並列化について説明するための第１の図である。
【００９６】
図９に示すように、第３の実施の形態に係る並列化されたシミュレーション計算は段階的に実行される。
第１段階（＃１）では、通常のモンテカルロ・シミュレーション（ＭＣ計算）が実行され、下方Ｐ0パーセンタイル点を示すＶａＲ1が算出される。但し、第１段階（＃１）では、高い精度のＶａＲを計算しなくてもよいため、少ない数の乱数（パス）でＶａＲ1が計算される。例えば、通常のモンテカルロ・シミュレーションだけでＶａＲを計算する際に１０万パスを要する場合、第１段階（＃１）の計算では、１００〜１０００パス程度でＶａＲ1が算出される。第１段階（＃１）で計算されたＶａＲ1は、第２段階（＃２）で利用する仮指標値（ＶａＲ11、ＶａＲ12、…、ＶａＲ1M）の設定に利用される。
【００９７】
なお、第１段階（＃１）で実行されるシミュレーション計算は、第１プロセッサ１１０により実行される。また、仮指標値の数Ｍは任意に設定することができる。
第２段階（＃２）で利用する仮指標値は、ＶａＲ1を基準に上下数％ずれた値が設定される。例えば、ＶａＲ11は０．９＊ＶａＲ1、…、ＶａＲ1Mは１．１＊ＶａＲ1などと設定される。なお、仮指標値の設定方法は、この例に限定されず任意に決めてよい。仮指標値が設定されると、第２段階（＃２）の計算が実行される。
【００９８】
第２段階（＃２）では、複数の仮指標値ＶａＲ11、…、ＶａＲ1Mを用いて重点サンプリング法（ＩＳ）に基づくモンテカルロ・シミュレーションが実行される。なお、第２段階（＃２）で仮指標値毎に実行されるシミュレーション計算は互いに独立しているため、複数のシミュレーション計算を並列実行することが可能である。例えば、ＶａＲ11を用いたシミュレーション計算を第２プロセッサ１２０−１で実行し、ＶａＲ12を用いたシミュレーション計算を第２プロセッサ１２０−２で実行するといった並列処理を実現することができる。
【００９９】
なお、第２段階（＃２）で実行する複数のシミュレーション計算は、利用する仮指標値が異なる以外は実質的に同じ計算内容となる。そこで、ＶａＲ11を用いたシミュレーション計算を例に説明を行う。
【０１００】
ＶａＲ11が設定されると、ＶａＲ11を基準として重点サンプリング法を実現するための密度関数ｑが設定される。密度関数ｑは、モンテカルロ・シミュレーションによる近似解ＩMCをＶａＲ11として上記の式（８）により与えられる。
【０１０１】
また、設定した密度関数ｑに基づいて重点サンプリング法によるモンテカルロ・シミュレーションが実行され、ポートフォリオの価値の密度分布が計算される。また、計算された密度分布の下方ＶａＲ11までの面積（累積密度Ｐ11）が算出される。同様にして、他の仮指標値ＶａＲ12、…、ＶａＲ1Mについても、それぞれ密度分布が計算され、累積密度Ｐ12、…、Ｐ1Mが算出される。なお、第２段階（＃２）で実行されるシミュレーション計算は、重点サンプリング法が適用されるため、第１段階（＃１）のシミュレーション計算と同程度又はそれよりも少ないパスで実行されてもよい。
【０１０２】
第２段階（＃２）で算出された複数の累積密度Ｐ11、…、Ｐ1Mは、第３段階（＃３）でＶａＲの選択処理に利用される。第３段階（＃３）では、複数の累積密度Ｐ11、…、Ｐ1MのそれぞれとＰ0との差分値が計算され、差分値が最小となる累積密度に対応する仮指標値が選択される。例えば、差分値が最小となる累積密度がＰ1kであった場合、第３段階（＃３）では仮指標値ＶａＲ1kが選択される。選択された仮指標値ＶａＲ1kは、第４段階（＃４）で利用する仮指標値（ＶａＲ21、ＶａＲ22、…、ＶａＲ2M）の設定に利用される指標値ＶａＲ2となる。
【０１０３】
なお、第４段階（＃４）で利用する仮指標値の数はＭでなくてもよい。また、第４段階（＃４）で利用する仮指標値は、例えば、ＶａＲ2を基準に上下数％ずれた値が設定される。例えば、ＶａＲ21は０．９５＊ＶａＲ2、…、ＶａＲ2Mは１．０５＊ＶａＲ2などと設定される。但し、仮指標値の設定方法は、この例に限定されず任意に決めてよい。また、第４段階（＃４）で利用する仮指標値の設定に用いるずれ量は、第２段階（＃２）で利用する仮指標値の設定に用いたずれ量よりも小さく（例えば、半分程度に）設定してもよい。
【０１０４】
仮指標値が設定されると、第４段階（＃４）の計算が実行される。第４段階（＃４）で実行されるシミュレーション計算は、仮指標値が異なる点を除いて第２段階（＃２）で実行されたシミュレーション計算と実質的に同じ内容である。第４段階（＃４）では、仮指標値ＶａＲ21、…、ＶａＲ2Mについて、それぞれ密度分布が計算され、累積密度Ｐ21、…、Ｐ2Mが算出される。なお、第４段階（＃４）で実行されるシミュレーション計算は、第１段階（＃１）又は第２段階（＃２）のシミュレーション計算と同程度又はそれよりも少ないパスで実行されてもよい。
【０１０５】
その後、第３段階（＃３）の処理と同様に、累積密度Ｐ21、…、Ｐ2Mに基づいて仮指標値が選択され、次の段階で利用する複数の仮指標値が設定される。そして、第４段階（＃４）と同様に、複数の仮指標値に基づいて累積密度が計算される。このように、第３段階（＃３）及び第４段階（＃４）と同様の処理が繰り返し実行される。この繰り返し処理は、終了条件を満たすまで実行される。終了条件を満たした場合、第３段階（＃３）と同様の処理により選択された仮指標値が計算結果として出力される。
【０１０６】
なお、上記の終了条件としては、例えば、ユーザによる停止操作や予め設定した繰り返し回数の満了などが考えられる。また、シミュレーション計算に利用したパス数が、通常のモンテカルロ・シミュレーションだけを用いる場合に要するパス数の１０分の１程度に達した場合に繰り返し処理を終了するといった方法なども考えられる。また、複数の差分値の差が閾値を下回った場合に繰り返し処理を終了する方法なども考えられる。
【０１０７】
ところで、図９の例では、ＶａＲ1を計算するために第１段階（＃１）で通常のモンテカルロ・シミュレーションを実行したが、例えば、デルタ・ガンマ法などを利用してＶａＲ1を計算する方法もある。デルタ・ガンマ法は、ポートフォリオから生じる損益を原資産価格の関数とみなし、その関数をテーラー展開の２次の項までで近似したモデルを用いてＶａＲなどのリスク指標を計算する方法である。デルタ・ガンマ法はモンテカルロ・シミュレーションに比べて精度が低いが、図９に例示した方法のように、重点サンプリング法を実施するための仮指標値を決める基準として用いることは可能である。
【０１０８】
図１０は、重点サンプリング法の並列化について説明するための第２の図である。
図１０（Ａ）に示すように、通常のモンテカルロ・シミュレーションにより密度分布が得られる。この密度分布から、下方Ｐ0パーセンタイル点であるＶａＲ1が得られる。また、ＶａＲ1が得られると、ＶａＲ1を基準に複数の仮指標値ＶａＲ11、…、ＶａＲ1Mを設定することができる。また、図１０（Ｂ）に示すように、例えば、仮指標値ＶａＲ1kに基づいて重点サンプリング法に基づくシミュレーション計算を実行することで密度分布が得られ、その密度分布における下方ＶａＲ1kまでの面積である累積密度Ｐ1kが計算できる。また、累積密度Ｐ1kとＰ0との差分値が計算できる。
【０１０９】
同様にして、複数の仮指標値ＶａＲ11、…、ＶａＲ1Mについて差分値を計算し、差分値が最小になる仮指標値が選択される。また、選択された仮指標値に基づいて新たな複数の仮指標値が設定され、上記と同様にして新たな複数の仮指標値のそれぞれについて差分値が計算される。また、差分値が最小となる仮指標値が選択される。このように、仮指標値の設定及び差分値の計算が繰り返し行われ、終了条件を満たした場合に、選択された仮指標値が計算結果として出力される。なお、仮指標値が選択される度に、選択された仮指標値が計算結果の途中経過として出力されるようにしてもよい。
【０１１０】
図１１は、第３の実施の形態に係る情報処理システムによる処理の流れを示した図である。なお、ポートフォリオ価値のＶａＲの計算方法を例に挙げて処理の流れを説明する。
（Ｓ１０１）乱数生成部１１１は、ある密度関数に従う乱数群を発生させる。
【０１１１】
（Ｓ１０２）分布計算部１１２は、乱数生成部１１１が発生させた乱数群を用いてポートフォリオ価値の密度分布を計算する。指標計算部１１３は、分布計算部１１２が計算した密度分布の下方Ｐ0パーセンタイル点であるＶａＲを計算する。
【０１１２】
（Ｓ１０３）指標計算部１１３は、Ｓ１０２の処理で計算したＶａＲを基準に複数の仮ＶａＲを設定する。例えば、指標計算部１１３は、Ｓ１０２の処理で計算したＶａＲを上下５％ずつずらした値を仮ＶａＲに設定する。
【０１１３】
（Ｓ１０４）乱数生成部１２１は、仮ＶａＲを基準に密度関数を設定する。例えば、乱数生成部１２１は、仮ＶａＲの近辺に計算値が集中するような乱数群を発生させる密度関数を設定する。
【０１１４】
（Ｓ１０５）乱数生成部１２１は、Ｓ１０４で設定した密度関数に従う乱数群を発生させる。
（Ｓ１０６）分布計算部１２２は、Ｓ１０５で発生させた乱数群を利用し、重点サンプリング法に基づくモンテカルロ・シミュレーションによりポートフォリオ価値の密度分布を計算する。累積密度計算部１２３は、分布計算部１２２が計算した密度分布における仮ＶａＲまでの面積（累積密度）を計算する。
【０１１５】
なお、Ｓ１０４〜Ｓ１０６の処理は、複数の仮ＶａＲのそれぞれについて複数の第２プロセッサ１２０−１、…、１２０−Ｎにより実行される。また、各仮ＶａＲに対応する累積密度の値は、記憶装置１３０に格納される。
【０１１６】
（Ｓ１０７）指標選択部１１４は、各仮ＶａＲに対応する累積密度の値とＰ0との差分値を計算する。
（Ｓ１０８）指標選択部１１４は、Ｓ１０７で計算した差分値のうち、最小となる差分値に対応する仮ＶａＲを選択する。
【０１１７】
（Ｓ１０９）終了条件に達した場合、処理はＳ１１０に進む。一方、終了条件に達していない場合、処理はＳ１０３に進む。終了条件としては、例えば、ユーザによる停止操作や予め設定した繰り返し回数の満了などが考えられる。
【０１１８】
（Ｓ１１０）指標出力部１１５は、指標選択部１１４が選択した仮ＶａＲを計算結果として出力する。
Ｓ１１０の処理が終了すると、一連の処理が完了する。なお、図１１に示した処理の流れにおいてはＳ１０９で終了条件を満たした場合に計算結果が出力されるものとしたが、Ｓ１０８の処理で選択された仮ＶａＲが選択の都度出力されるようにしてもよい。
【０１１９】
図１２は、同精度のシミュレーション計算を実行して得られる計算値の発生頻度を比較した計算例を示す図である。
図１２に示すように、通常のモンテカルロ・シミュレーション（通常のＭＣ計算）を実行する場合、計算値の分布は、損益額がＶａＲから離れた位置にまで広がっている。一方、重点サンプリング法に基づくシミュレーション計算（ＩＳに基づくＭＣ計算）を実行する場合、計算値の分布は、ＶａＲ付近に集中する。また、同じ精度の計算結果を得るために用いる計算値の発生頻度は、通常のモンテカルロ・シミュレーションに比べ、重点サンプリング法に基づくシミュレーション計算の方が格段に少ない。すなわち、重点サンプリング法を適用することにより、シミュレーション計算の実行回数が少なくて済む。上記の情報処理システム１００によれば、図１５に示すのと同様の効果が得られ、シミュレーション計算の高速化及び効率化が実現される。
【０１２０】
以上、第３の実施の形態について説明した。
［第４の実施の形態］
次に、第４の実施の形態について説明する。
【０１２１】
図１３は、第４の実施の形態に係る情報処理システムの機能ブロックの例を示した図である。なお、第４の実施の形態に係る情報処理システム２００は、第３の実施の形態に係る情報処理システム１００と同じハードウェアを用いて実現できる。
【０１２２】
図１３に示すように、情報処理システム２００は、第１プロセッサ２１０、複数の第２プロセッサ２２０−１、２２０−２、…、２２０−Ｎ、及び記憶装置２３０を有する。なお、複数の第２プロセッサ２２０−１、２２０−２、…、２２０−Ｎは同じ機能を有する。そこで、第２プロセッサ２２０−１を代表例とし、以下では、これを第２プロセッサ２２０と表記して説明を行う。
【０１２３】
なお、第１プロセッサ２１０の機能は、ＣＰＵ９０１、９２１により実現できる。また、第２プロセッサ２２０−１、…、２２０−Ｎの機能は、ＣＰＵ９０１、ＧＰＵ９１１、９１２、９１３、又はＣＰＵ９３１により実現できる。また、第１プロセッサ２１０、及び第２プロセッサ２２０が有する機能の一部又は全部は、ＣＰＵ９０１、９２１が実行するプログラムのモジュールとして実現できる。また、第１プロセッサ２１０、及び第２プロセッサ２２０が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。また、記憶装置２３０は、ＲＡＭ９０２、９２２、９３２やＨＤＤ９０３、９２３に確保された記憶領域、或いは、ネットワーク９４に接続されたファイルサーバなどの外部記憶装置である。
【０１２４】
第１プロセッサ２１０は、確率変数を含む計算式の値がとる確率分布を近似的に計算し、その確率分布を複数の区間に分割する。なお、第１プロセッサ２１０は、乱数生成部２１１、分布計算部２１２、区間分割部２１３、分布合成部２１４、及び結果出力部２１５の機能を有する。また、乱数生成部２１１及び分布計算部２１２の機能は、それぞれ第３の実施の形態に係る乱数生成部１１１及び分布計算部１１２の機能と同じである。従って、乱数生成部２１１及び分布計算部２１２の機能に関する説明は省略する。
【０１２５】
区間分割部２１３は、分布計算部２１２により生成された密度分布を複数の区間に分割する。例えば、区間分割部２１３は、各区間に対応する密度分布の各領域が有する面積が等しくなるように密度分布を複数の区間に分割する。区間分割部２１３により分割された複数の区間を示す情報は、記憶装置２３０に格納される。
【０１２６】
また、区間分割部２１３は、複数の第２プロセッサ２２０−１、…、２２０−Ｎにより計算したい計算値の数を設定する。まず、区間分割部２１３は、密度分布の計算に用いる計算値の総数の下限値Ｍ1を設定する。なお、この下限値は、予め設定されていてもよい。また、区間分割部２１３は、複数の第２プロセッサ２２０−１、…、２２０−Ｎのそれぞれが計算する各区間の計算値の数の下限値Ｍ2を設定する。例えば、密度分布がＬ個の区間に分割された場合、下限値Ｍ2は、Ｍ1／Ｎ／Ｌに設定される。
【０１２７】
第２プロセッサ２２０は、上記の区間を示す情報を記憶装置２３０から読み出し、各区間に属する計算値の数が下限値Ｍ2に達するまで乱数の発生及び計算値の計算を実行する。なお、第２プロセッサ２２０は、乱数生成部２２１、分布計算部２２２、及び結果保持部２２３の機能を有する。
【０１２８】
乱数生成部２２１は、所定の密度関数に基づいて乱数群を発生させる。乱数生成部２１１が発生させた乱数群は、分布計算部２２２に入力される。分布計算部２２２は、入力された乱数群を用いて計算値を算出する。また、分布計算部２２２は、記憶装置２３０から区間を示す情報を読み出し、算出した計算値が属する区間を判別する。分布計算部２２２は、各区間に属する計算値の数が下限値Ｍ2に達するまで計算値の算出を繰り返す。
【０１２９】
なお、分布計算部２２２は、ある区間に属する計算値の数が下限値Ｍ2に達した後、その区間に属する計算値がさらに算出された場合には当該計算値を余分な計算値として結果保持部２２３に保持させる。一方、分布計算部２２２は、ある区間に属する計算値の数が下限値Ｍ2に達するまでに計算された計算値を計算結果として結果保持部２２３に保持させる。全ての区間について計算値の数が下限値Ｍ2に達した場合、分布計算部２２２は、結果保持部２２３に保持された計算値を記憶装置２３０に格納する。
【０１３０】
同様に、複数の第２プロセッサ２２０−２、…、２２０−Ｎにより計算値が計算され、計算値が記憶装置２３０に格納される。分布合成部２１４は、記憶装置２３０に格納された計算値を読み出し、複数の第２プロセッサ２２０−１、…、２２０−Ｎにより計算された計算値の集合について密度分布を生成する。
【０１３１】
まず、分布合成部２１４は、余分な計算値の集合から、各区間に属する計算値の数が等しくなるように計算値を抽出し、残りの計算値を破棄する。例えば、各区間に属する余分な計算値の数の最小数がｂ個である場合、分布合成部２１４は、各区間に属する余分な計算値をｂ個ずつ抽出する。また、分布合成部２１４は、余分な計算値の集合から抽出した計算値の集合と、複数の第２プロセッサ２２０−１、…、２２０−Ｎにより計算結果として得られた計算値の集合とを用いて密度分布を生成する。分布合成部２１４により生成された密度分布の情報は、結果出力部２１５に入力される。結果出力部２１５は、密度分布の情報を出力する。例えば、結果出力部２１５は、計算結果の情報を表示装置９１に表示させる。また、結果出力部２１５は、ネットワーク９４を介して計算結果の情報を他の機器に提供してもよい。
【０１３２】
以上説明したように、第４の実施の形態に係る情報処理システム２００によれば、第１プロセッサ２１０により区間の分割に用いる密度分布が計算される。そのため、密度分布が予め与えられていない場合でも、各区間に属する計算値の数が均等になるように密度分布の計算に用いる計算値を抽出することが可能になる。また、複数の第２プロセッサ２２０−１、…、２２０−Ｎにより各区間に属する計算値の数が所定数となるように計算値の計算を実行することで、計算の並列化による高速計算が実現される。
【０１３３】
また、複数の第２プロセッサ２２０−１、…、２２０−Ｎにおいて、各区間の計算値が所定数となるまで繰り返し計算値の算出を行う際、所定数を超えて算出される余分な計算値も保持しておき、分布合成部２１４により密度分布の計算に利用する。その結果、有効利用される余分な計算値の分だけ多くの計算値を密度分布の計算に利用できるようになり、精度を向上させることが可能になる。なお、全体の１割以下くらいの余分な計算値が発生するものと期待される。例えば、Ｍ1／Ｌが５０なら、複数の第２プロセッサ２２０−１、…、２２０−Ｎのそれぞれで５個以下くらいの余分な計算値が算出される。
【０１３４】
なお、複数の第２プロセッサ２２０−１、…、２２０−Ｎがそれぞれ層化抽出法により計算値を算出し、余分な計算値を破棄するように構成すると、多くの計算値が破棄されることになる。しかしながら、情報処理システム２００によれば、余分な計算値の一部を破棄せずに有効利用することで、破棄される計算値の数を減らし、より多くの計算値を利用できるようになる。結果として、計算の効率化及び高精度化が実現される。
【０１３５】
なお、第１プロセッサ２１０による計算結果は区間の分割に利用されるものであるため、第１プロセッサ２１０による計算は少ない乱数を用いて実行されてもよい。また、層化抽出法による精度の向上が見込めるため、第２プロセッサ２２０による計算に用いる乱数の数も通常のモンテカルロ・シミュレーションを実行する場合に比べて少なくてよい。
【０１３６】
以下、第４の実施の形態に係る情報処理システム２００による処理について説明する。
図１４は、層化抽出法について説明するための図である。
層化抽出法は、密度分布を均等な面積を持つ複数の領域に分割し、発生させた乱数が各領域に等しく分配されるように調整する方法である。例えば、図１４に示すように、密度分布が与えられ、面積が等しい６つの領域（Ａ1、…、Ａ6）に分割されているとする。また、１００個の乱数を発生させ、各乱数について計算値を算出した結果、Ａ1に１８個、Ａ2に１６個、Ａ3に１２個、Ａ4に１２個、Ａ5に２０個、Ａ6に２２個の計算値が含まれるものとなったとする。この場合、層化抽出法では、Ａ1から１２個、Ａ2から１２個、Ａ3から１２個、Ａ4から１２個、Ａ5から１２個、Ａ6から１２個の計算値を抽出し、抽出した計算値が後の計算に利用され、その他の計算値は捨てられる。そして、選択された計算値を利用して求めたい解が計算される。
【０１３７】
層化抽出法によれば、密度分布に近い計算値の集合が求めたい解の計算に利用されるため、より少ない乱数で十分な計算精度を得ることができる。但し、層化抽出法を適用するには、密度分布の知識が前提となる。また、無駄になる乱数の数が多い。そこで、こうした問題を解決すべく次のような方法を提案する。
【０１３８】
図１５は、層化抽出法の並列化について説明するための図である。
図１５に示すように、ここで提案する層化抽出法（ＳＳ）は３つの段階を含む。第１段階（＃１）では、通常のモンテカルロ・シミュレーションにより仮の密度分布Ｄ0が計算される。なお、第１段階（＃１）で実行されるシミュレーション計算は、通常のモンテカルロ・シミュレーションだけを利用して最終的な密度分布を計算する場合に比べ、少ない数の乱数を利用して実行される。
【０１３９】
第２段階（＃２）では、仮の密度分布Ｄ0を面積が均等になるように複数の領域に分割し、各領域に属する計算値の数が等しくなるように計算値をサンプリングする。なお、第２段階（＃２）の処理は、図１５に示すように並列に実行される。また、分割数Ｌや密度分布の計算に利用する計算値の総数の下限値Ｍ1、並列に実行される各処理で算出される領域毎の計算値の数の下限値Ｍ2などは予め設定されているものとする。
【０１４０】
例えば、第１番目の処理では、第２プロセッサ２２０−１が、分割した各領域に属する計算値の数が下限値Ｍ2になるまで計算値の算出を繰り返し実行する。このとき、第２プロセッサ２２０−１は、ある区間に属する計算値の数が下限値Ｍ2に達した後、その区間に属する計算値がさらに算出された場合には当該計算値を余りＥ1として保持する。また、第２プロセッサ２２０−１は、ある区間に属する計算値の数が下限値Ｍ2に達するまでに計算された計算値を計算結果Ｄ1として保持する。全ての区間について計算値の数が下限値Ｍ2に達した場合、第２プロセッサ２２０−１は、結果Ｄ1及び余りＥ1を出力する。
【０１４１】
同様に、第２番目の処理では結果Ｄ2及び余りＥ2が出力され、第３番目の処理では結果Ｄ3及び余りＥ3が出力される。このようにして第２段階（＃２）では、結果Ｄ2、…、ＤL及び余りＥ1、…、ＥNが得られる。なお、第１番目〜第Ｎ番目の処理は互いに独立している。そのため、第１番目〜第Ｎ番目の処理は、それぞれ独立に第２プロセッサ２２０−１、…、２２０−Ｎにより実行される。
【０１４２】
第３段階（＃３）では、結果Ｄ1、…、ＤNから第１の密度分布が計算される。また、余りＥ1、…、ＥNの集合から、各領域に等しく計算結果が含まれるように一部の計算結果がサンプリングされて第２の密度分布が計算される。例えば、各領域に属する余分な計算値の数の最小数がｂ個である場合、各領域に属する余分な計算値がｂ個ずつ抽出され、第２の密度分布が計算される。そして、第１及び第２の密度分布が合成され、最終的な密度分布が計算される。つまり、結果Ｄ1、…、ＤN、及び余りＥ1、…、ＥNからサンプリングされた計算値の集合を用いて最終的な密度分布が作成される。
【０１４３】
上記のように、仮の密度分布Ｄ0を求めることで複数の分割領域を計算できるため、層化抽出法を実現することが可能になる。また、層化抽出法に基づくシミュレーション計算を並列実行することでシミュレーション計算が高速化される。また、第３段階（＃３）で余りを再利用することにより、計算値が有効に利用され、シミュレーション計算の効率化及び精度の向上が図れる。例えば、並列して実行される各処理で余分な計算値を破棄する場合に比べて、計算の効率化及び精度の向上を図ることが可能になる。
【０１４４】
なお、図１５に示した層化抽出法は、第３の実施の形態に係る重点サンプリング法に基づくシミュレーション計算に組み合わせることが可能である。例えば、図９の第２段階（＃２）で実行される各シミュレーション計算において、図１５に示した方法を適用することができる。この場合、図９の第１段階（＃１）で密度分布が得られているため、図１５の第１段階（＃１）を省略することが可能である。また、図９の第２段階（＃２）と実質的に同じ内容の計算を行う第４段階（＃４）及びそれ以降の段階におけるシミュレーション計算にも上記の層化抽出法を適用することができる。
【０１４５】
図１６は、層化抽出法による分布計算の流れを示した図である。
（Ｓ２０１）第１プロセッサ２１０は、少ない乱数群を用いて、層化抽出法を適用しない通常のモンテカルロ・シミュレーションを実行して密度分布を計算する。
【０１４６】
（Ｓ２０２）第１プロセッサ２１０は、分割数Ｌに基づき、Ｓ２０１の処理で算出した密度分布を面積の等しい複数の領域に分割する。
（Ｓ２０３）第１プロセッサ２１０は、密度分布の計算に利用する計算値の総数の下限値Ｍ1に基づき、複数の第２プロセッサ２２０−１、…、２２０−Ｎがそれぞれ計算する領域毎の計算値の数の下限値Ｍ2を設定する。例えば、下限値Ｍ2は、Ｍ1／Ｎ／Ｌに設定される。
【０１４７】
（Ｓ２０４）複数の第２プロセッサ２２０−１、…、２２０−Ｎは、それぞれ各領域に属する計算値の数が下限値Ｍ2に達するまで計算値を算出する。例えば、第２プロセッサ２２０−１は、各領域に属する計算値の数が下限値Ｍ2になるまで計算値の算出を繰り返し実行する。このとき、第２プロセッサ２２０−１は、ある区間に属する計算値の数が下限値Ｍ2に達した後、その区間に属する計算値がさらに算出された場合には当該計算値を余りとして保持する。また、第２プロセッサ２２０−１は、ある区間に属する計算値の数が下限値Ｍ2に達するまでに計算された計算値を結果として保持する。第２プロセッサ２２０−２、…、２２０−Ｎについても同様である。
【０１４８】
（Ｓ２０５）第１プロセッサ２１０は、複数の第２プロセッサ２２０−１、…、２２０−Ｎが余りとして保持した計算値の集合から、各領域に属する計算値の数が等しくなるように計算値をサンプリングする。例えば、各領域に属する余りの計算値の数の最小数がｂ個である場合、各領域に属する余りの計算値がｂ個ずつサンプリングされる。
【０１４９】
（Ｓ２０６）第１プロセッサ２１０は、複数の第２プロセッサ２２０−１、…、２２０−Ｎが結果として保持した計算値の集合及びＳ２０５の処理でサンプリングした計算値を用いて密度分布を生成する。Ｓ２０６の処理を終了すると、層化抽出法による分布計算を完了する。
【０１５０】
以上説明したように、第４の実施の形態によれば、シミュレーション計算の一部を並列化することにより計算を高速化することができる。また、層化抽出法の適用によりシミュレーション計算を効率化することができる。また、破棄される計算値の数を減らすことで、より多くの計算値を利用可能になり計算精度を向上させることができる。
【０１５１】
以上、第４の実施の形態について説明した。
【符号の説明】
【０１５２】
１０、２０、１００、２００  情報処理システム
１１、２１  制御部
１２−１〜１２−３、２２−１〜２２−３  プロセッサ
１３−１〜１３−３、２３−１〜２３−３  タスク
ｖ１〜ｖ３  指標値
Ｔ１〜Ｔ３  区間
１１０、２１０  第１プロセッサ
１１１、２１１、１２１  乱数生成部
１１２、１２２、２１２、２２２  分布計算部
１１３  指標計算部
１１４  指標選択部
１１５  指標出力部
１３０、２３０  記憶装置
１２０、１２０−１、１２０−２、１２０−Ｎ、２２０、２２０−１、２２０−２、２２０−Ｎ  第２プロセッサ
１２３  累積密度計算部
２１３  区間分割部
２１４  分布合成部
２１５  結果出力部
【図１】
2014123272.tif 000011
【図２】
2014123272.tif 000012
【図３】
2014123272.tif 000013
【図４】
2014123272.tif 000014
【図５】
2014123272.tif 000015
【図６】
2014123272.tif 000016
【図７】
2014123272.tif 000017
【図８】
2014123272.tif 000018
【図９】
2014123272.tif 000019
【図１０】
2014123272.tif 000020
【図１１】
2014123272.tif 000021
【図１２】
2014123272.tif 000022
【図１３】
2014123272.tif 000023
【図１４】
2014123272.tif 000024
【図１５】
2014123272.tif 000025
【図１６】
2014123272.tif 000026