(57)【特許請求の範囲】
【請求項１】
コンピュータの処理により、反復的リスク指標を計算する方法であって、
前記コンピュータのメモリ上で、モンテカルロ法に基づくマルコフ決定過程により、状態をもつ複数の一連のデータを順次生成するステップと、
前記生成されたデータを、生成されたのと逆順を辿って、目下のデータの状態から遷移可能な複数の状態のリスク指標に基づき、バリュー・アット・リスクまたは超過確率を用いて、該目下のデータのリスク指標を計算するステップと、
前記リスク指標を計算するステップを開始のデータまで遡って実行するステップを有する、
反復的リスク指標を計算する方法。
【請求項２】
前記リスク指標を計算するステップが、目下のデータの状態から遷移可能な複数の状態のバリューをvi(i = 1,...,n)、遷移確率をpi(i = 1,...,n)としたとき、下記の数式
【数１】
0005759200.tif 000005
を用いてリスク指標を計算する、請求項１に記載の方法。
【請求項３】
前記リスク指標を計算するステップが、目下のオブジェクトの状態から遷移可能な複数の状態のバリューをvi(i = 1,...,n)、遷移確率をpi(i = 1,...,n)としたとき、下記の数式
【数２】
0005759200.tif 000006
を用いてリスク指標を計算する、請求項１に記載の方法。
【請求項４】
前記コンピュータに、請求項１乃至請求項３の方法を実行させるプログラム。
【請求項５】
コンピュータの処理により、反復的リスク指標を最小にするアクションを計算する方法であって、
前記コンピュータのメモリ上で、所定の状態から、可能なアクションと、該状態から遷移可能な状態の組み合わせのデータを生成する判断後ステップと、
前記生成された状態の組み合わせのデータから、各々の組み合わせに関連付けられたバリューの値に基づき、状態の組み合わせのデータを選択するステップと、
前記選択された状態の組み合わせのデータから、モンテカルロ法に基づくマルコフ決定過程により、状態を生成する判断前ステップと、
前記判断前ステップと前記判断後ステップとを反復することにより、状態のデータの列を生成するステップと、
前記生成された状態を、生成されたのと逆順を辿って、目下の前記判断前状態から遷移可能な複数の状態のリスク指標に基づき、バリュー・アット・リスクまたは超過確率を用いて、１つ前の前記判断後の状態のリスク指標を計算するステップと、
前記生成された状態を、生成されたのと逆順を辿って、目下の前記判断後の状態における最小バリューの状態のバリューを、１つ前の前記判断前の状態に設定するステップを有する、
アクションの決定方法。
【請求項６】
前記リスク指標を計算するステップが、目下のオブジェクトの状態から遷移可能な複数の状態のバリューをvi(i = 1,...,n)、遷移確率をpi(i = 1,...,n)としたとき、下記の数式
【数３】
0005759200.tif 000007
を用いてリスク指標を計算する、請求項５に記載の方法。
【請求項７】
前記リスク指標を計算するステップが、目下のオブジェクトの状態から遷移可能な複数の状態のバリューをvi(i = 1,...,n)、遷移確率をpi(i = 1,...,n)としたとき、下記の数式
【数４】
0005759200.tif 000008
を用いてリスク指標を計算する、請求項５に記載の方法。
【請求項８】
前記各々の組み合わせに関連付けられたバリューの値に基づき、状態の組み合わせを選択するステップが、その状態の訪問頻度に対する単調減少関数となる評価関数を用いる、請求項５に記載の方法。
【請求項９】
コンピュータの処理により、反復的リスク指標を計算するシステムであって、
前記コンピュータのメモリ上で、モンテカルロ法に基づくマルコフ決定過程により、状態をもつ一連の複数のオブジェクトを順次生成する手段と、
前記生成されたオブジェクトを、生成されたのと逆順を辿って、目下のオブジェクトの状態から遷移可能な複数の状態のリスク指標に基づき、バリュー・アット・リスクまたは超過確率を用いて、該目下のオブジェクトのリスク指標を計算する手段と、
前記リスク指標を計算する手段を、開始のオブジェクトまで遡って実行させる手段を有する、
反復的リスク指標を計算するシステム。
【請求項１０】
前記リスク指標を計算する手段が、目下のオブジェクトの状態から遷移可能な複数の状態のバリューをvi(i = 1,...,n)、遷移確率をpi(i = 1,...,n)としたとき、下記の数式
【数５】
0005759200.tif 000009
を用いてリスク指標を計算する、請求項９に記載のシステム。
【請求項１１】
前記リスク指標を計算する手段が、目下のオブジェクトの状態から遷移可能な複数の状態のバリューをvi(i = 1,...,n)、遷移確率をpi(i = 1,...,n)としたとき、下記の数式
【数６】
0005759200.tif 000010
を用いてリスク指標を計算する、請求項９に記載のシステム。
【請求項１２】
前記コンピュータに、請求項５乃至請求項８の方法を実行させるプログラム。
【請求項１３】
コンピュータの処理により、反復的リスク指標を最小にするアクションを計算するシステムであって、
前記コンピュータのメモリ上で、所定の状態から、可能なアクションと、該状態から遷移可能な状態の組み合わせのデータを生成する判断後手段と、
前記生成された状態の組み合わせのデータから、各々の組み合わせのデータに関連付けられたバリューの値に基づき、状態の組み合わせのデータを選択する手段と、
前記選択された状態の組み合わせのデータから、モンテカルロ法に基づくマルコフ決定過程により、状態を生成する判断前手段と、
前記判断前手段と前記判断後手段とを反復することにより、状態の列を生成する手段と、
前記生成された状態を、生成されたのと逆順を辿って、目下の前記判断前状態から遷移可能な複数の状態のリスク指標に基づき、バリュー・アット・リスクまたは超過確率を用いて、１つ前の前記判断後の状態のリスク指標を計算する手段と、
前記生成された状態を、生成されたのと逆順を辿って、目下の前記判断後の状態における最小バリューの状態のバリューを、１つ前の前記判断前の状態に設定する手段を有する、
アクションの決定システム。
【請求項１４】
前記リスク指標を計算する手段が、目下のオブジェクトの状態から遷移可能な複数の状態のバリューをvi(i = 1,...,n)、遷移確率をpi(i = 1,...,n)としたとき、下記の数式
【数７】
0005759200.tif 000011
を用いてリスク指標を計算する、請求項１３に記載のシステム。
【請求項１５】
前記リスク指標を計算する手段が、目下のオブジェクトの状態から遷移可能な複数の状態のバリューをvi(i = 1,...,n)、遷移確率をpi(i = 1,...,n)としたとき、下記の数式
【数８】
0005759200.tif 000012
を用いてリスク指標を計算する、請求項１３に記載のシステム。
【請求項１６】
前記各々の組み合わせに関連付けられたバリューの値に基づき、状態の組み合わせを選択する手段が、その状態の訪問頻度に対する単調減少関数となる評価関数を用いる、請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、リスクを考慮した最適なアクションを決定する技法に関し、より詳しくは、マルコフ決定過程（ＭＤＰ）を利用してアクションを決定する技法に関する。
【背景技術】
【０００２】
従来より、特開２００２−２３０２８０号に記載されているように、ポートフォリオの金利リスクと信用リスクを統合して評価するための新しいシミュレーションシステム及びシミュレーション方法が提案されている。これによれば、デフォルト・フリー金利過程モデルと、デフォルト過程モデルとに基いて、現在からリスク・ホライズンまでのシナリオを多数発生させ、発生させた個々のシナリオに対してリスク・ホライズンにおけるポートフォリオの価格及び個別資産の価格を算出し、その算出された価格に基いてポートフォリオの将来の価格分布及び／又は個別資産の将来の価格分布を求めることによって、ポートフォリオの金利リスクと信用リスクとを統合して評価することが行われる。
【０００３】
また、マルコフ過程を利用したリスクの計算技法が研究されている。マルコフ過程は、マルコフ性、すなわち将来の状態遷移が現在の状態のみに依存し、現在より過去の状態には無関係に決定される、という性質をもつ。さらに、マルコフ過程の応用である、マルコフ決定過程を利用したアクションの決定技法が研究されている。マルコフ決定過程問題とは、例えば、状態遷移することができる対象に対して、その対象から得られる期待累積報酬を最大にするように、各状態で実行するアクションを決める規則を算出する問題である。
【０００４】
特許第４４００８３７号は、設定した融資限度額の大小や経済環境等の外部要因の状況を将来の信用格付の遷移確率に反映することが可能な、債権の制御において最適な政策を選択するために用いられる債権ポートフォリオ制御技法を提供するために、１年目が既存債権の初期状態と外部要因の初期状態からなるノードで表現され、２年目からＴ年目までの間は、既存債権の各状態と外部要因の各状態の組み合わせのパターンが各々のノードに展開されて、１年目からＴ年目までの間の既存債権の各状態と外部要因の各状態の組み合わせの遷移が表現されたグラフとなるような手法を開示する。これは、末端のＴ年目のノードから遡りながら、動的計画法（ＤＰ）でＴ年間のマルコフ決定過程問題を解くことによって、Ｔ年間の期待総利得を最大化する最適政策を求めることである。
【０００５】
また最近では、反復的リスク指標が、金融機関が自己資本を決めるためのリスク指標として注目されている。(条件付)想定最大損失額((conditinal) value at risk)は、CTE(conditional tail expectation)とも呼ばれ、時間整合性(time consistency)の性質をもたないが、反復的リスク指標は、時間整合性の性質をもつ。これについては、下記の文献を参照されたい。
M. R. Hardy and J. L. Wirch, “The iterated CTE: A dynamic risk measure,” The North American Actuarial Journal, 62-75, 2004.
【０００６】
但し、バックワードに計算される反復的CTE(ICTE)は、一般的なモンテカルロ法では扱えず、計算負荷が大きいため、実装上の困難が大きいと考えられている。
【０００７】
反復的リスク指標は、期待効用や割引期待効用などでは表現できないが、合理的であるリスク嗜好を表現することができる。そこで、本願発明者らは、特願２０１０−２１１５８８号明細書で、動的計画法を用いて反復的リスク指標を最小にするようにマルコフ決定過程を最適化する技法を提示した。
【０００８】
ところが、特願２０１０−２１１５８８号明細書に記載された技法も、可能な状態数やアクション数が多くなると計算時間が膨大になり、現実に解ける問題が限られるという制約があった。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００２−２３０２８０号公報
【特許文献２】特許第４４００８３７号公報
【特許文献３】特願２０１０−２１１５８８号明細書
【非特許文献】
【００１０】
【非特許文献１】M. R. Hardy and J. L. Wirch, “The iterated CTE: A dynamic risk measure,” The North American Actuarial Journal, 62-75, 2004.
【発明の概要】
【発明が解決しようとする課題】
【００１１】
従って、本発明の目的は、マルコフ過程において、モンテカルロ法を用いて反復的リスク指標を高速に計算する手法を提供することにある。
【００１２】
この発明の他の目的は、厳密に最適化できない規模のマルコフ決定過程において、上記反復的リスク指標を高速に計算する手法を適用して、反復的リスク指標を最小にするアクションを近似的に決定する手法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の側面では、コンピュータの処理によって、マルコフ過程に基づき、順次、サンプリングにより状態の列（S1,S2,...,Sn)が生成される。次に、生成された順序と逆の順序（Sn,...,S2,S1)で、各状態の（反復的リスク指標の仮の）値（V(Sn),...,V(S2),V(S1))が更新される。
【００１４】
このとき、各状態Siの値、V(Si)は、その状態から１回の遷移で到達可能な状態
（Si+1(1),Si+1(2),...,Si+1(m))への遷移確率p(Si+1(j)|Si)、及び遷移先の値V(Si+1(j))から定義される、確率変数のリスク指標（特に、バリュー・アット・リスクや超過確率またはそれらを部分的に用いて計算される）の値に応じて更新される。以上の処理を所定の間反復することによって、反復的リスク指標の近似値が得られる。なお、この後、反復的リスク指標の仮の値を、単に値とも、あるいは、Valueとも呼ぶことがある。
【００１５】
本発明の第２の側面では、上記リスク指標を近似的に計算する手法を用いて、特定の状態において反復リスク指標を最小にするアクションを近似的に決定する手法が提供される。この手法は、上記第１の側面の手法において、判断前(predecision)状態と、判断後(postdecision)状態が交互にあらわれるように状態が生成される。
【００１６】
判断後状態の（反復的リスク指標の仮の）値は、上記第１の側面の手法の場合と同様に、次に到達可能な判断前状態の値を用いて計算され、判断前状態の（反復的リスク指標の仮の）値は、次に到達可能な判断後状態の反復的リスク指標の仮の値の最小値を用いて更新される。そして、反復の結果、反復リスク指標を最小にするアクションの列が選択される。
【発明の効果】
【００１７】
この発明によれば、厳密に計算すると非常に時間がかかる反復的リスク指標を、モンテカルロ法のような確率的手法によって近似的に高速に得る手法が提供される。
【００１８】
さらに、上記反復的リスク指標を近似的に高速に得る手法を用いて、反復リスク指標を最小にするアクションの列を高速に与える手法が提供される。
【図面の簡単な説明】
【００１９】
【図１】本発明を実施するための一例のハードウェア構成のブロック図である。
【図２】本発明に従い、反復的リスク指標を計算する処理の論理構成の機能ブロック図である。
【図３】本発明に従い、反復的リスク指標を計算する処理のフローチャートを示す図である。
【図４】反復的リスク指標計算処理におけるSAMPLE_POLICYルーチンの処理のフローチャートを示す図である。
【図５】SAMPLE_POLICYルーチンで参照される、状態と到達確率の対応を示す図である。
【図６】反復的リスク指標計算処理におけるUPDATE_VALUEルーチンの処理のフローチャートを示す図である。
【図７】UPDATE_VALUEルーチンで参照される、状態とValueと到達確率の対応を示す図である。
【図８】反復的リスク指標を計算する処理を模式的に示す図である。
【図９】本発明に従い、反復的リスク指標を最小にするアクションを決定する処理の論理構成の機能ブロック図である。
【図１０】本発明に従い、反復的リスク指標を最小にするアクションを決定する処理のフローチャートを示す図である。
【図１１】反復的リスク指標を最小にするアクションを決定する処理におけるEXPLORATION_POLICYルーチンの処理のフローチャートを示す図である。
【図１２】EXPLORATION_POLICYルーチンで参照される、判断後状態と、Valueと、カウンタの対応を示す図である。
【図１３】反復的リスク指標を最小にするアクションを決定する処理における、UPDATE_VALUE_MINルーチンの処理のフローチャートを示す図である。
【図１４】UPDATE_VALUE_MINルーチンで参照される、判断後状態と、Valueの対応を示す図である。
【図１５】反復的リスク指標を最小にするアクションを決定する処理を模式的に示す図である。
【発明を実施するための形態】
【００２０】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【００２１】
図１を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図１において、システム・パス１０２には、ＣＰＵ１０４と、主記憶（ＲＡＭ）１０６と、ハードディスク・ドライブ（ＨＤＤ）１０８と、キーボード１１０と、マウス１１２と、ディスプレイ１１４が接続されている。ＣＰＵ１０４は、好適には、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium（商標）  ４、Core(商標)2 Duo、Xeon(商標)、AMD社のAthlon（商標）などを使用することができる。主記憶１０６は、好適には、４ＧＢ以上の容量をもつものである。ハードディスク・ドライブ１０８は、大量のデータを格納できるように、例えば、５００ＧＢ以上の容量をもつものであることが望ましい。
【００２２】
ハードディスク・ドライブ１０８には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows XP(商標)、Windows(商標)7、アップルコンピュータのMac OS（商標）などの、ＣＰＵ１０４に適合する任意のものでよい。
【００２３】
ハードディスク・ドライブ１０８はさらに、マルコフ決定過程の確率計算のためのデータやパラメータ、及び本発明の処理のための処理ルーチンなどが格納されている。これらのパラメータや処理ルーチンの詳細は、図２を参照して後で説明する。
【００２４】
キーボード１１０及びマウス１１２は、オペレーティング・システムまたは、ハードディスク・ドライブ１０８から主記憶１０６にロードされ、ディスプレイ１１４に表示されたプログラム（図示しない）を起動したり、文字を打ち込んだりするために使用される。
【００２５】
ディスプレイ１１４は、好適には液晶ディスプレイであり、例えば、ＸＧＡ（１０２４×７６８の解像度）、またはＵＸＧＡ（１６００×１２００の解像度）などの任意の解像度のものを使用することができる。ディスプレイ１１４は、図示しないが、本発明の処理を開始するための操作ウインドウや、リスク、あるいは選択されたアクションの計算結果等を表示するために使用される。
【００２６】
次に、図２の機能ブロック図を参照して、本発明の、特に反復的リスク指標を近似的に計算する処理を実行するための処理ルーチンについて説明する。これらの処理ルーチンはC、C++、Java(R)などの既存のプログラム言語で予め作成されて、実行可能な形式でハードディスク・ドライブ１０８に保存され、オペレーティング・システムの動作で主記憶１０６にロードされて実行される。
【００２７】
この発明の処理は、これに限定される訳ではないが、この実施例では、所定の所持金をもって、各期に投資する株を選択する処理として説明する。そのシナリオとしては、所定の額の所持金から始めて、各期に投資する株を選択するものとする。このとき状態は、（所持金、投資している株、時間）の組で与えられる。アクションの候補は株の種類だけあり、各期において、アクションの候補は株の種類だけあり、どの株に投資するかを決定する。各状態でアクションをとった結果のリターンは、対応する株のその期間のリターンの予測値によって決定される。
【００２８】
メイン・ルーチン２０２は、本発明の全体の動作を統合するためのプログラムであり、図示しないが、ディスプレイ１１４に操作ウインドウを表示したり、ユーザの操作を受け付けて処理を開始したりする機能を有する。
【００２９】
パラメータ２０４は、様々な株価の推移を示すマルコフ決定過程の確率計算のためのパラメータやデータ、等を含む。
【００３０】
SAMPLE_POLICYルーチン２０６は、モンテカルロ法に従い、発生した乱数により所定の確率で状態を生成する処理を行うルーチンである。
【００３１】
UPDATE_VALUEルーチン２０８は、直接遷移可能な状態の集合を参照して、リスク指標を計算するルーチンである。
【００３２】
出力ルーチン２１０は、計算された結果のリスクの値を出力するルーチンであり、計算結果は必要に応じて、ディスプレイ１１４に表示される。
【００３３】
次に、図３のフローチャートを参照して、本発明の反復的リスク指標を近似的に計算する処理について説明する。この処理は例えば、ディスプレイ１１４に表示されているウィンドウ画面のメニューを、オペレータがキーボード１１０またはマウス１１２で操作することによって開始される。
【００３４】
以下説明する処理に先立って、この実施例では、状態を格納するための一連のデータ・オブジェクトが予め主記憶１０６にロードされているものとする。このデータ・オブジェクトは例えば、C++、またはJava(R)のクラスのインスタンスである。このようなデータ・オブジェクトを模式的に図示すると、図８に示すとおりである。すなわち、図８では、一連のデータ・オブジェクト８０２、８０４、８０６及び８０８が示されている。
【００３５】
ステップ３０２で、メイン・ルーチン２０２は、状態をあらわす変数sに、その初期値を、パラメータ２０４からセットする。ここでは、図８に示す最初のデータ・オブジェクトである、データ・オブジェクト８０２の属性値である変数sにセットされる。状態は、例えば、（所持金、投資している株、時間）の組で与えられるものとする。
【００３６】
メイン・ルーチン２０２は、ステップ３０４で、状態sをスタックにpushする。このようにスタックにpushするのは、後でpopして、状態をバックトラックするためである。
【００３７】
次にステップ３０６で、メイン・ルーチン２０２は、sを引数として、SAMPLE_POLICY(s)により、SAMPLE_POLICYルーチン２０６を呼び出す。
【００３８】
図４は、SAMPLE_POLICYルーチン２０６の処理の詳細を示す。図４において、SAMPLE_POLICYルーチン２０６は、ステップ４０２で、i = 1,...,nについて、iが確率piで生起するように乱数を生成する。そして、生起した乱数をm(1≦m≦n)とする。ここで、確率piとは、マルコフ過程の文脈で、状態sから状態siに遷移する確率である。
【００３９】
図５は、sからの、状態si毎の遷移確率を示す。このような対応の情報は、異なるs毎に、パラメータ２０４として、予め用意されている。
【００４０】
SAMPLE_POLICYルーチン２０６は、ステップ４０４で、乱数mに対応する状態smを出力して、戻る。
【００４１】
図３のステップ３０６に戻って、このようにして戻された値smがsに代入され、これは、図８では、データ・オブジェクト８０４の状態S2に遷移したということである。
【００４２】
ステップ３０８で、メイン・ルーチン２０２は、ステップ３０８で、状態sをスタックにpushする。そしてステップ３１０でメイン・ルーチン２０２は、前進サンプリング(forward sampling)が停止かどうか判断する。ここで、前進サンプリングを停止する基準は例えば、状態を所定の段数生成したかどうかである。ここで段数とは、図８の例では、状態８０２が第１段、状態８０４が第２段、状態８０６が第３段、状態８０８が第４段などである。あるいは、前進サンプリングを停止する基準は、処理を開始して所定の時間が経過したかどうかでもよい。
【００４３】
メイン・ルーチン２０２が前進サンプリングを停止する基準がまだ満たされていないと判断すると、ステップ３０６に戻って、SAMPLE_POLICYルーチン２０６の呼び出しを行う。
【００４４】
一方、ステップ３１０で、メイン・ルーチン２０２が、前進サンプリングを停止する基準を満たしたと判断すると、ステップ３１２に進み、メイン・ルーチン２０２は、スタックから状態sの値をpopする。
【００４５】
そして、メイン・ルーチン２０２は、ステップ３１４で、UPDATE_VALUE(s)により、UPDATE_VALUEルーチン２０８を呼び出す。
【００４６】
図６は、UPDATE_VALUEルーチン２０８の処理の詳細を示す。ステップ６０２は定義ブロックであり、{s1,s2,...,sn}をsから直接遷移可能な(遷移確率が0より大きい)状態の集合とする。ここで、nは、sから直接遷移可能な状態の数である。図８の模式的な例で説明すると、参照番号８０４ｃで示されている、状態S2から直接遷移可能な状態とは、状態８０６ａ、状態８０６ｂ、及び状態８０６ｃである。そして、i = 1,...,nについて、sからsiへの遷移確率をpiとし、siのValue(反復的リスク指標の仮の値)をviとする。この対応は、図７に示されている。図７において、状態と、sからの到達確率のフィールドは、予めパラメータ２０４に格納されている値に基づくが、Valueのフィールドは、初期的にはゼロを格納するようにしてもよい。すると、計算によって順次、値が格納されていく。あるいは、状態における所持金を、Valueの初期値としてもよい。この発明の目的のためには、その他の初期値の与え方も可能であることを理解されたい。
【００４７】
UPDATE_VALUEルーチン２０８は、ステップ６０４で、i = 1,...,nについて、値viを確率piでとるような確率変数Xのα%バリューアットリスクを下記の式により計算して、計算結果をVαとする。
【数１】
0005759200.tif 000002
尚ここで、Vαの代わりに、下記の式で超過確率を計算してもよい。
【数２】
0005759200.tif 000003
【００４８】
UPDATE_VALUEルーチン２０８は、ステップ６０６で、Vαまたは超過確率を用いて、Xのリスク指標vを計算する。この計算は例えば、v = E[X|X > Vα]によって行われる。あるいは、下記の、一部超過確率を用いた式でリスク指標vを計算してもよい。
【数３】
0005759200.tif 000004
この式で、I{}は、{}に書かれる式が真なら1、偽なら0を返す関数である。
【００４９】
UPDATE_VALUEルーチン２０８は、ステップ６０８で、こうして計算されたvを、状態sに対応するValueとして、格納する。図８の例で説明すると、例えば、状態８０６ａ、状態８０６ｂ及び状態８０６ｃに基づき計算されたリスク指標vが、状態S2に関連づけて格納される。
【００５０】
図３のフローチャートの処理に戻って、UPDATE_VALUE(s)を呼び出したステップ３１４の後、ステップ３１６で、メイン・ルーチン２０２は、スタックが空かどうか判断する。そうでなければ、ステップ３１２に戻る。
【００５１】
もしステップ３１６で、メイン・ルーチン２０２が、スタックが空であると判断すると、メイン・ルーチン２０２は、ステップ３１８で、停止条件を満たすかどうか判断する。ここで停止条件とは、これには限定されないが、図３のフローチャートで示す処理を開始してから所定の時間が経過したか、ステップ３０２からステップ３１８までのループが所定回数回ったか、あるいは、最終的に、図８でS1で示す開始点のところのリスク指標の計算値が、ステップ３０２からステップ３１８までのループにおける、一回前のループで計算した値に比べて、ある閾値以下しか変化していないことのどれかである。
【００５２】
メイン・ルーチン２０２が、ステップ３１８で、停止条件を満たしていないと判断すると、処理はステップ３０２に戻り、図８における最初の状態S1から、計算が再開される。但しこのとき、前回まで計算されたリスク指標の値（図７のフィールドValueで示す値）は維持されており、従って、最初はほとんど0であった途中のリスク指標の値も、ステップ３０２からステップ３１８までのループを繰り返すうちに次第に非ゼロの値で埋まってくる。
【００５３】
こうして、メイン・ルーチン２０２が、ステップ３１８で、停止条件を満たしていると判断すると、処理は終了し、図８における最初の状態S1に対応するリスク指標の値が、出力ルーチン２１０によって出力される。
【００５４】
次に、図９の機能ブロック図を参照して、本発明の、特定の状態において反復リスク指標を最小にするアクションを近似的に決定する処理を実行するための処理ルーチンについて説明する。これらの処理ルーチンもC、C++、Java(R)などの既存のプログラム言語で予め作成されて、実行可能な形式でハードディスク・ドライブ１０８に保存され、オペレーティング・システムの動作で主記憶１０６にロードされて実行される。
【００５５】
この反復リスク指標を最小にするアクションを近似的に決定する処理は、図２に示す反復リスク指標を近似的に計算するルーチンを利用するので、いくつか共通する処理ルーチンもあるが、ここでは改めて別の参照番号を付すことにする。
【００５６】
この実施例でも、所定の所持金をもって、各期に投資する株を選択する処理として説明する。そのシナリオとしては、所定の額の所持金から始めて、各期に投資する株を選択するものとする。このとき状態は、（所持金、投資している株、時間）の組で与えられる。アクションの候補は株の種類だけあり、各期において、アクションの候補は株の種類だけあり、どの株に投資するかを決定する。各状態でアクションをとった結果のリターンは、対応する株のその期間のリターンの予測値によって決定される。
【００５７】
メイン・ルーチン９０２は、本発明の全体の動作を統合するためのプログラムであり、図示しないが、ディスプレイ１１４に操作ウインドウを表示したり、ユーザの操作を受け付けて処理を開始したりする機能を有する。
【００５８】
パラメータ９０４は、様々な株価の推移を示すマルコフ決定過程の確率計算のためのパラメータやデータ、等を含む。
【００５９】
SAMPLE_POLICYルーチン９０６は、モンテカルロ法に従い、発生した乱数により所定の確率で状態を生成する処理を行うルーチンであり、図２のSAMPLE_POLICYルーチン２０６と同一でよい。
【００６０】
EXPLORATION_POLICYルーチン９０８は、判断後状態を選択するルーチンである。
【００６１】
UPDATE_VALUEルーチン９１０は、直接遷移可能な状態の集合を参照して、リスク指標を計算するルーチンであり、図２のUPDATE_VALUEルーチン２０８と同一でよい。
【００６２】
UPDATE_VALUE_MINルーチン９１２は、直接遷移可能な状態の集合のうちの最小のValueを返すルーチンである。
【００６３】
出力ルーチン９１４は、計算された結果のアクションの列を出力するルーチンであり、計算結果は必要に応じて、ディスプレイ１１４に表示される。
【００６４】
次に、図１０のフローチャートを参照して、本発明の反復リスク指標を最小にするアクションを近似的に決定する処理について説明する。この処理は例えば、ディスプレイ１１４に表示されているウィンドウ画面のメニューを、オペレータがキーボード１１０またはマウス１１２で操作することによって開始される。
【００６５】
以下説明する処理に先立って、この実施例では、状態を格納するための一連のデータ・オブジェクトが予め主記憶１０６にロードされているものとする。このデータ・オブジェクトは例えば、C++、またはJava(R)のクラスのインスタンスである。このようなデータ・オブジェクトを模式的に図示すると、図１５に示すとおりである。すなわち、図１５では、一連のデータ・オブジェクト１５０２、１５０４、１５０６、１５０８、１５１０、１５１２、１５１４及び１５１６が示されている。この実施例では、判断前状態と、判断後状態という２つの状態が使用される。図１５では、データ・オブジェクト１５０２、１５０６、１５１０及び１５１４が判断前状態に対応し、データ・オブジェクト１５０４、１５０８、１５１２、及び１５１６が判断後状態に対応する。
【００６６】
ステップ１００２で、メイン・ルーチン９０２は、状態をあらわす変数sに、その初期値を、保持されているパラメータ２０４からセットする。ここでは、図１５に示す最初のデータ・オブジェクトである、判断前状態に対応するデータ・オブジェクト１５０２の属性値である変数sにセットされる。状態は、例えば、（所持金、投資している株、時間）の組で与えられるものとする。
【００６７】
メイン・ルーチン９０２は、ステップ１００４で、状態sをスタックにpushする。このようにスタックにpushするのは、後でpopして、状態をバックトラックするためである。
【００６８】
メイン・ルーチン９０２は、ステップ１００６で、状態sを引数として、EXPLORATION_POLICY(s)により、EXPLORATION_POLICYルーチン９０８を呼び出す。
【００６９】
図１１は、EXPLORATION_POLICYルーチン９０８の詳細を示す。定義ステップ１１０２にあるように、EXPLORATION_POLICYルーチン９０８は、{a1,a2,...,an}を、状態sで取りうるアクションの集合とし、i = 1,...,nについて、sでaiをとった時の判断後状態をs'i = (s,ai)とし、s'iのvalueをvi、s'iの訪問数をciとする。ここでValueとは、図７に関連して説明したものと同じである。また、s'iの訪問数をciとする。ここで訪問数をciを記録するのは、訪問数が多い判断後状態をなるべく避けて、偏りが少ないアクションの列を選択するためである。このような、判断後状態と、Valueと、カウンタの対応の例が、図１２に示されている。
【００７０】
EXPLORATION_POLICYルーチン９０８は、ステップ１１０４で、関数f(vi,ci)を最小にするiを求める。
【００７１】
関数fは、これには限定されないが、例えば、
f(v,c) ≡ v + α(β/c)0.6のような式である。すなわち、vに対して単調増加で、cに対して単調減少になっていることが要件である。ここで、αとβは正の定数で、任意に設定できるパラメータである。
【００７２】
EXPLORATION_POLICYルーチン９０８は、ステップ１１０４で、求まったiをi*と置き、ステップ１１０６で、ci* = ci* + 1と増分して、ステップ１１０８でsi*を出力する。
【００７３】
si*を出力するということは、図１５を参照することにより、一層よく理解できる。すなわち、判断前状態１５０２から、可能な異なるアクションに従い、判断後状態１５０４ａ、１５０４ｂ及び１５０４ｃが取りうるが、特にステップ１１０４の計算に従い、ここでは、判断後状態１５０４ｃが選択される。
【００７４】
図１０のステップ１００６に戻って、ステップ１００６でEXPLORATION_POLICYルーチン９０８が完了して、s'が出力されると、メイン・ルーチン９０２は、ステップ１００８で、s'をスタックにpushする。
【００７５】
次にステップ１０１０で、メイン・ルーチン９０２は、s'を引数として、SAMPLE_POLICY(s')により、SAMPLE_POLICYルーチン９０６を呼び出す。
【００７６】
SAMPLE_POLICYルーチン９０６は、SAMPLE_POLICYルーチン２０６と同様に、モンテカルロ法とマルコフ決定過程の組み合わせで、遷移可能な状態の１つを選ぶ処理を行うが、その処理内容は、図４のフローチャートで説明したのと同様なので、ここでは説明を省略する。このような状態の選択は、図１５では、判断後状態１５０４における状態(S1)１５０４ｃから、判断前状態１５０６の状態１５０６ｂを選択することに対応する。
【００７７】
SAMPLE_POLICYルーチン９０６によってステップ１０１０で、s'からsが選ばれると、メイン・ルーチン９０２は、ステップ１０１２で、sをスタックにpushする。
【００７８】
次にメイン・ルーチン９０２は、ステップ１０１４で、前進サンプリング(forward sampling)が停止かどうか判断する。ここで、前進サンプリングを停止する基準は例えば、状態を所定の段数生成したかどうかである。あるいは、前進サンプリングを停止する基準は、処理を開始して所定の時間が経過したかどうかでもよい。
【００７９】
まだ前進サンプリングを停止する基準に達していなければ、メイン・ルーチン９０２は、ステップ１００６に戻って、EXPLORATION_POLICYルーチン９０８を呼び出す。
【００８０】
一方、ステップ１０１４で、メイン・ルーチン９０２が前進サンプリングを停止する基準に達したと判断すると、ステップ１０１６に進んで、スタックから状態sをpopする。
【００８１】
メイン・ルーチン９０２は次に、popされた状態sを以って、UPDATE_VALUE_MIN(s)により、UPDATE_VALUE_MINルーチン９１２を呼び出す。そこで次に、図１３のフローチャートを参照して、UPDATE_VALUE_MINルーチン９１２の処理について説明する。
【００８２】
図１３において、ステップ１３０２は、定義ステップである。ステップ１３０２において、{s'1,s'2,...,s'n}を、sから直接到達可能な判断後状態とする。そして、i = 1,...,nについて、s'iのvalueを、viとする。図１４は、判断後状態と、Valueの対応を示す図である。
【００８３】
次のステップ１３０２では、UPDATE_VALUE_MINルーチン９１２は、v = mini viにより、i = 1,...,nについて、viの最小値をvとおく、そして、こうして算出されたvは、ステップ１３０６で、sのvalueの値として格納される。このことを図１５の例で示すと、popされた状態sが、判断前状態における状態(S4)１５１４ｃであるとすると、状態１５１４ｃからみた、取りうるアクションは、アクション１５１６ａ、アクション１５１６ｂ、及びアクション１５１６ｃであり、アクション１５１６ａ、アクション１５１６ｂ、及びアクション１５１６ｃに関連付けられたvalueのうち最小のvalueがアクション１５１６ｃに関連付けられたvalueであるとすると、そのvalueが、状態１５１４ｃに格納される。
【００８４】
図１０のフローチャートに戻って、メイン・ルーチン９０２は、ステップ１０２０で、スタックが空かどうか判断する。もしスタックが空であるなら、メイン・ルーチン９０２は、ステップ１０２６で、停止条件を満たすかどうか判断する。ここで停止条件とは、図１０のフローチャートで示す処理を開始してから所定の時間が経過したか、ステップ１００２からステップ１０１４までのループが所定回数回ったか、あるいは、最終的に、図１５でS1で示す開始点のところのvalue値が、ステップ１００２からステップ１０１４までのループにおける、一回前のループで計算した値に比べて、ある閾値以下しか変化していないことのどれかである。
【００８５】
そして、メイン・ルーチン９０２は、停止条件を満たすと判断したなら、処理を停止し、そうでないなら、ステップ１００２に戻って、処理を最初のステップから再開する。このとき、状態にセットされたvalueの値は前のループのままであり、次の計算に利用される。
【００８６】
ステップ１０２０に戻って、メイン・ルーチン９０２が、スタックが空でないと判断したなら、メイン・ルーチン９０２は、ステップ１０２２でスタックから状態s'をpopする。そして、ステップ１０２４で、UPDATE_VALUE(s')により、UPDATE_VALUEルーチン９１０を呼び出してs'のValueを更新する。UPDATE_VALUEルーチン９１０の処理は実質的に、UPDATE_VALUEルーチン２０８の処理と同様であり、その詳細は図６のフローチャートで示すとおりである。図１５の例では、判断前状態の状態１５１４ａ、状態１５１４ｂ、及び状態１５１４ｃから、判断後状態(S3)１５１２ｂのValueが計算される。
【００８７】
メイン・ルーチン９０２は、ステップ１０２４の後、ステップ１０１６に戻る。この結果、アクション１５０４ｃ、アクション１５０８ａ、アクション１５１２ｂ、アクションアクション１５１６ｃというアクションの列が得られ、メイン・ルーチン９０２は、出力ルーチン９１４により、各々の判断前状態について、その判断前状態から直接遷移可能な判断後状態のうち最も小さなValueを持つ判断後状態(s,a)に関係付けられたアクションaを出力する。その結果は、好適にはディスプレイ１１４に表示し、あるいは、ファイルに書き出される。
【００８８】
以上、本発明の実施例を、所定の所持金をもって、各期に投資する株を選択する処理する適用例について説明してきたが、これには限定されず、時系列に従い順次、確率的にリスクの計算を行うことを伴う意思決定処理に適用可能である。
【００８９】
また、本発明は、コンピュータの特定のハードウェア及びソフトウェアのプラットフォームに限定されず、任意のプラットフォームで実施可能であることを理解されたい。
【符号の説明】
【００９０】
１０４  ＣＰＵ
１０６  主記憶
１０８  ハードディスク・ドライブ
２０２  メイン・ルーチン
２０４  パラメータ
２０６  SAMPLE_POLICYルーチン
２０８  UPDATE_VALUEルーチン
２１０  出力ルーチン
９０２  メイン・ルーチン
９０４  パラメータ
９０６  SAMPLE_POLICYルーチン
９０８  EXPLORATION_POLICYルーチン
９１０  UPDATE_VALUEルーチン
９１２  UPDATE_VALUE_MINルーチン
９１４  出力ルーチン
１５０２  判断前状態
１５０４  判断後状態
１５０６  判断前状態
１５０８  判断前状態
１５１０  判断後状態
１５１２  判断前状態
１５１４  判断前状態
１５１６  判断後状態
【図１】
0005759200.tif 000013
【図２】
0005759200.tif 000014
【図３】
0005759200.tif 000015
【図４】
0005759200.tif 000016
【図５】
0005759200.tif 000017
【図６】
0005759200.tif 000018
【図７】
0005759200.tif 000019
【図８】
0005759200.tif 000020
【図９】
0005759200.tif 000021
【図１０】
0005759200.tif 000022
【図１１】
0005759200.tif 000023
【図１２】
0005759200.tif 000024
【図１３】
0005759200.tif 000025
【図１４】
0005759200.tif 000026
【図１５】
0005759200.tif 000027