MATLAB でのデータ解析の自動化によるシステム的な不正の検出
著者 Jan Eggers, MathWorks
マドフのポンジ スキームや最近注目の金利操作スキャンダルが示すように、不正は金融関連の組織、政府機関および個人投資家にとって重大な脅威です。金融サービスおよびその他の組織は、不正の検出にさらに力を注ぐことで対応しています。
システム的な不正の検出には、いくつかの課題があります。最初に、不正の検出方法には複雑な調査が必要であり、これには大量の異種データの処理が伴います。データは複数のソースから生成され、金融、経済、ビジネスおよび法律などの複数の知識領域にわたります。このデータを手動で収集して処理すると非常に時間がかかり、誤りが発生しやすくなります。2 番目に、不正の事件に起因するデータはほんのわずかであるため、不正は “干し草の山の中の針” の問題です。膨大な量の通常データ、つまり、不正ではないソースから生成されるデータは、不正の事例に紛れ込みがちです。3 番目に、詐欺師は自分の方法を継続的に変更します。つまり。検出戦略はしばしば何歩か後手に回りがちです。
この記事ではヘッジ ファンド データを例にとり、不正検出データの取得と解析のプロセスを自動化するために MATLAB® をどのように使用するかを具体的に示します。異種データをインポートおよび集計して、不正の可能性を示すインジケーターを特定するためにモデルを構築およびテストして、ファンドを不正または不正ではないものとして分類するために計算されたインジケーターを機械学習アルゴリズムに学習させる方法を示します。
説明する統計的な手法とワークフローは、小売およびロジスティック解析におけるデータ マイニングおよび運用リサーチ タスク、国防情報および医療情報を含む、さまざまなソースの大量の異種データの詳細な解析が必要な領域に適用できます。
ヘッジ ファンドのケース スタディ
ヘッジ ファンドの数はここ数年で急激に増加しています。ユーリカヘッジ データベースは、全世界で約 20,000 のアクティブなファンドがあることを示しています。1 ヘッジ ファンドは最低限の規制が行われている金融商品であり、したがって、不正の第一のターゲットです。たとえば、ヘッジ ファンドのマネージャーは、高利益が得られている錯覚を作り出し、より多くの投資者を引き付けるために利益データを偽造する可能性があります。
次の 3 つのヘッジ ファンドの 1991 年 1 月 から 2008 年 10 月までの月次利益データを使用します。
- ゲートウェイ ファンド
- グロース ファンド オブ アメリカ
- フェアフィールド セントリー ファンド
フェアフィールド セントリー ファンドは、偽のデータが計上されていることで知られるマドフ ファンドです。それ自体は、不正検出メカニズムの有効性を確認するためのベンチマークを提供しています。
異種データの収集
ゲートウェイ ファンドのデータは Natixis の Web サイトから、ファンドの月次の純資産総額 (NAV) を含む Microsoft® Excel® ファイルとしてダウンロードできます。MATLAB データ インポート ツールを使用して、データのインポート方法を定義します (図 1)。データ インポート ツールは MATLAB コードを自動的に生成して、定義されたインポート スタイルを再現します。
ゲートウェイ ファンドの NAV をインポートしてから、次のコードを使用して月次の利益を計算します。
% 月次の利益を計算
gatewayReturns = tick2ret(gatewayNAV);
グロース ファンド オブ アメリカの場合は、Datafeed Toolbox™ を使用して Yahoo! Finance でこのファンドのティッカー シンボル (AGTHX)、関連フィールドの名前 (調整後終値) および利息期間を指定してデータを取得します。
%Yahoo! に接続してデータをフェッチ c = yahoo; data = fetch(c, 'AGTHX', 'Adj Close', startDate, endDate);
残念なことに Yahoo! では、1991 年 1 月から 1993 年 2 月までの期間のデータが提供されません。この期間については、データを手作業で収集しなければなりません。
Financial Toolbox™ の金融時系列オブジェクトを使用して、インポートされた日次データを必要な月次の頻度に変換します。
%月次の利益に変換
tsobj = fints(dates, agthxClose);
tsobj = tomonthly(tsobj);
最後に、フェアフィールド セントリー ファンドの計上データをインポートします。2 つの無料で利用できる Java™ クラス、PDFBox および FontBox を使用して、PDF 版のフェアフィールド セントリー ファンドのファクト シートからテキストを読み取ります。
%必要なクラスをインスタンス化
pdfdoc = org.apache.pdfbox.pdmodel.PDDocument;
reader = org.apache.pdfbox.util.PDFTextStripper;
%データを読み取り
pdfdoc = pdfdoc.load(FilePath);
pdfstr = reader.getText(pdfdoc);
テキストをインポートしてから、利益のデータを含む部分、つまり月次の利益のテーブルを抽出します。
不正データのテストでは、ファンドの利益データと標準の市場データの比較が必要です。上記の手法を使用して、各ファンドのベンチマーク データをインポートします。
データがインポートされて利用可能になると、たとえば、すべての 3 つのファンドの正規化された実績を比較することでその一貫性を評価できます (図 2)。
プロットを表示するだけで、定性的評価が可能です。たとえば、マドフ ファンドは著しく円滑な成長を示し、高利益が挙がっています。さらに、根底にあるデータの不整合を明らかに示すものはありません。これは、不正行為を検出するために有効な方法を使用できることを意味します。
利益データの解析
ヘッジ ファンドにおける不適切または不法な行為自体が、主に誤って計上されたデータに現れるため、学術研究者は、操作されている可能性があるファンドの利益を解析してそれにフラグを設定するための方法を考案することに焦点を置いています。Bollen と Pool2 によって導入された指標を計算し、計上されたヘッジ ファンドの利益に対する不正の潜在的なインジケーターとして使用します。例:
- ファンドの利益の分布における零点での不連続性
- その他の資産との相関関係が薄く、市場のトレンドと矛盾
- 想定されるトレンドよりも平滑となる、無条件および条件付きの系列相関
- 利益がゼロのデータが多い
- 負の連続した同一データが多い
- 最初の 1 桁の分布 (ベンフォードの法則に従っているかどうか?) および計上済み利益の末尾の 1 桁 (均一かどうか?)
これらの手法について説明するために、零点での不連続性に注目します。
零点での不連続性の検証
正の利益が多いファンドはより多くの資本を引き付けることから、ファンド マネージャーは、負の利益を回避するために実績を誤って計上しようとします。これは、零点での不連続性が不正の潜在的なインジケーターとなることを意味します。
そのような不連続性のテストの 1 つは、3 つの隣り合うビン (ゼロの左側の 2 つと右側の 1 つ) にある利益のデータの数を数えることです。中央のビンにあるデータの数は、前後の 2 つのビンの平均とほぼ等しくなければなりません。中央のビンのデータの大幅な不足にはフラグを設定しなければなりません。
図 3 は、ファンドの利益のヒストグラムをゼロの前後の 2 つのビンを強調して表示します。緑の棒はフラグがないことを示し、赤の棒は不正の可能性があることを示します。このテストに合格しなかったのはマドフ ファンドのみでした。
検証している各ファンドの実績
マドフ ファンドには、10 のテストのうち 9 つにフラグが立っていますが、他の 2 つのファンドにもフラグが立っています。フラグの立ったテスト結果によって、指定のヘッジ ファンドには不正行為が伴っていたことは証明されません。ただし、図 4 に示すような表は、さらに調査を行う価値があるファンドを示します。
マドフ ファンドには、10 のテストのうち 9 つにフラグが立っていますが、他の 2 つのファンドにもフラグが立っています。フラグの立ったテスト結果によって、指定のヘッジ ファンドには不正行為が伴っていたことは証明されません。ただし、図 4 に示すような表は、さらに調査を行う価値があるファンドを示します。
機械学習による解析結果の分類
これで、不正のためのインジケーターとして使用される一連のフラグが用意できました。この解析を自動化すると、大きなデータセットを調査し、ファンドを不正または不正ではないものとして分類するために計算されたフラグを使用できます。この分類の問題には、たとえば、Statistics and Machine Learning Toolbox™ で TreeBagger アルゴリズムを使用して、バギングされた決定木などの機械学習の方法を使用して対応します。TreeBagger アルゴリズムには、モデルの学習のために教師あり学習用のデータが必要です。この例では、3 つのファンドのみのデータを使用していることに注意してください。バギングされた決定木またはその他の機械学習の方法を実際の問題に適用するには、この説明のための少数のセットよりもかなり多くのデータが必要です。
ファンドを不正または不正ではないものとして分類するためにモデルを構築して、「利益データの解析」のセクションで説明したようにインジケーターを予測子とします。モデルを作成するには、学習のデータセットが必要です。不正または不正ではないものとして知られる M個の ヘッジ ファンドについて考えます。この情報を M 行 1 列のベクトル yTrain に格納して、対応するインジケーターの M 行 N 列のマトリックス xTrain を計算します。それから次のコードを使用して、バギングされた決定木のモデルを作成します。
% 学習データに基づいて不正検出モデルを作成
fraudModel = TreeBagger(nTrees,xTrain,yTrain);
ここでは、nTrees は学習データのブートストラップされたサンプルに基づいて作成された決定木の数です。nTrees 決定木の出力は、1 つの分類に集計されます。
ここで、新しいファンドについては、以下によって分類を実行できます。
% 不正検出モデルを新しいデータに適用
isFraud = predict(fraudModel, xNew);
不正検出モデルを使用して、利益データのみに基づいてヘッジ ファンドを分類できます。モデルが自動化されているため、多数のファンドに拡張できます。
大局的な概念
この記事は、ヘッジ ファンドの利益に基づく不正検出のための完全に自動化されたアルゴリズムの開発プロセスの概要について説明しています。この手法は、MATLAB Parallel Server™ および Apache™ Hadoop®などの大規模なデータ処理ソリューションを使用してさらに大規模なデータセットに適用できます。両方の技術により単一のマシン上で利用可能なメモリ両を超えるデータを処理できます。
アルゴリズムが配布される方法は、アプリケーションのユース ケースによって大いに異なります。主に Excel を使用しているファンド マネージャーのファンドでは、アルゴリズムを Excel アドインとして配布することが好まれる場合があります。今後の投資について検討する際に、モジュールを使用してファンドを調査できます。監督官庁は、不正検出スキームをプロダクションシステムに統合して、ここで新しいデータに対する解析を定期的に実行し、自動的に生成されたレポートで結果の概要を説明できます。
高度な統計を使用して個々の不正インジケーターを検証し、機械学習を使用して分類モデルを作成しました。ここで説明したバギングされた決定木に加えて、MATLAB、Statistics and Machine Learning Toolbox および Deep Learning Toolbox™ ではその他の多くの機械学習手法を利用できます。これにより、プロジェクトの要件に応じて、提案されたソリューションの拡張または変更が可能です。
2 Bollen, Nicolas P. B., and Pool, Veronika K.. 「Suspicious Patterns in Hedge Fund Returns and the Risk of Fraud」(2011 年 11 月)。https://www2.owen.vanderbilt.edu/nick.bollen/
公開年 2014 - 92196v00