CDM は、システムの設計、会社の間での取引データの照合、規制報告のデータの整備のように、取引の表し方をそろえたい場面で使うための標準です。
何のために作られたか
CDM は、会社やシステムごとに違う取引の表し方を、1 つの標準にそろえるために作られました。FINOS(Fintech Open Source Foundation)の文書では、取引のライフサイクルの出来事の記録のしかたが会社ごとに違うと、その違いから照合の作業が生まれるとされています1。標準の表し方によって、システムや会社の間の接続を個別に作る負担を減らし、手作業を減らして一続きで処理するストレート・スルー・プロセシング(STP)の土台にすることが目指されています2。
目的は、次の 3 つです1。
- 会社、ソリューション、プラットフォームの間で、データをやりとりしやすくし、STP を進めること。
- 規制当局と市場参加者が、同じ表し方で取引のデータを見られるようにし、規制報告の一貫性を高めること。
- 分散型台帳、スマート・コントラクト、クラウド、人工知能などの技術を金融市場に適用するときの共通の土台を用意すること。
CDM が対象にするのは、店頭デリバティブ、現物の証券、証券の貸し借りなどの証券金融、コモディティです3。
モデルは何でできているか
CDM は、商品、イベント、法的契約、処理、参照データの 5 つの軸で定義されています4。
| まとまり | 表すこと | 資料にある主な部品 |
|---|---|---|
| 商品(product) | 2 者の間で金融上のリスクを移す契約や商品そのもの | 資産(Asset)、支払いの条件(Payout)、経済条件(EconomicTerms) |
| イベント(event) | 取引のライフサイクルで起きる出来事と、そのときの取引の状態 | 取引の状態(TradeState)、ビジネス・イベント(BusinessEvent)、ワークフロー |
| 法的契約(legal agreement) | 取引の当事者間の関係全体を定める契約の内容 | マスター契約のスケジュール、信用補完の文書 |
| 処理(process) | 業界で使う処理や計算 | 関数(function)で書いた処理 |
| 参照データ(reference data) | 当事者、法人、変動金利の指標など、ほかの 4 つが参照する実体 | 当事者(Party)、法人 |
商品のまとまりでは、まず現金、コモディティ、デジタル資産、金融商品(上場デリバティブ、ローン、証券)を資産として表します。そのうえで、将来の資産の受け渡しの約束を部品(Payout)として組み立て、商品全体の経済条件を表します5。どの種類の資産にも識別子の欄があり、識別子の種類(ISIN など)も添えられます5。
法的契約のまとまりは、契約の文書を、人が読んで解釈する文章のままでなく、構造のあるデータとして表します。このため、担保の管理のように、契約の中の取り決め(担保の受け渡しの条件など)を参照して進める処理を、データから直接実装できます6。CDM では、1 つの取引を 1 つのマスター契約に結びつけ、1 つのマスター契約を複数の取引に結びつけられます6。取り扱う範囲には、マスター契約のスケジュールの汎用的な表現と、国際スワップ・デリバティブズ協会(ISDA)の信用補完の文書の種類が含まれます6。
イベントごとに作られる取引の状態
イベントのまとまりは、取引のライフサイクルを「状態の移り変わり」として表します。ライフサイクル・イベントは、取引が当事者の指図、契約の条件、外部の要因によって 1 つの状態から次の状態に移ることとされています7。CDM は、この表し方に次の原則を置いています7。
- イベントの前後で、取引の状態が違っていなければなりません。
- 状態を移すロジックは、小さな部品の組み合わせで作ります。
- 取引のライフサイクルのどの時点でも、状態の履歴を再現できます。
- 取引の対象になる商品の定義は変わりません。
- 状態は、商品ごとでなく取引ごとに持ちます。同じ商品の取引が複数あれば、取引ごとに別の状態を持ちます。
この原則を、金利スワップの例で見ます。約定は最初のイベントで、その結果として、約定した取引の状態ができます。約定は新しい取引を作るイベントなので、前の状態がありません。その後、変動金利の確定のような自動的なイベントは、商品の定義を変えず、確定の情報を取引の状態に結びつけ、確定の履歴に加えます7。
約定、変動金利の確定、条件の変更が続く金利スワップの架空の例で考えます。状態の番号は説明のために付けたもので、CDM の項目ではありません。
| 状態 | 起きたイベント | 参照する前の状態 | 状態のできかた |
|---|---|---|---|
| 状態 1 | 約定 | なし | 新しい取引の状態ができる |
| 状態 2 | 変動金利の確定 | 状態 1 | 商品の定義は同じまま、確定の情報が確定の履歴に加わる |
| 状態 3 | 当事者による条件の変更の合意 | 状態 2 | 経済条件が変わり、新しい商品か取引のデータが作られる |
約定のあとのように、前の状態があるイベントでは、新しい状態は前の状態を参照して作られます。この参照の連なりは、CDM で系譜(lineage)と呼ばれます8。当事者が条件の変更を合意した場合は、取引の経済条件が変わるため、そのイベントの結果として新しい商品か取引のデータが作られます7。
CDM は、イベントのデータを次の 4 つの部品で表します7。
| 部品 | 役割 |
|---|---|
| 取引の状態(TradeState) | 約定から決済、満期までの、取引の今の状態。取引、状態、確定の履歴、資金の受け渡しの履歴の欄を持つ9 |
| 基本の操作(primitive operator) | 状態を 1 つ前から次へ変える最小の部品 |
| ビジネス・イベント(business event) | 基本の操作を組み合わせた、1 つ以上の取引に関わるライフサイクル・イベント |
| ワークフロー(workflow) | ビジネス・イベントを起こすために必要な手順の集まり。取引の当事者以外が加わることも、自動の手順と手作業の手順が混ざることもある10 |
業務としての流れは取引期間中のイベント処理で扱います。
「コードで表す」とはどういうことか
CDM は、図や文章で書いた仕様書でなく、専用の記述言語で書かれたモデルの定義と、そこから作ったコードの組み合わせで配られます。モデルは Rune DSL という言語で書かれ、名前空間ごとに分けたファイルにまとめられています11。コードは、このモデルの定義から、コード生成の仕組みで自動的に作られます。Rune DSL には Java へのコード生成が標準で入っていて、ほかの言語へのコード生成は、利用者が書いて共有できます11。Java の配布物には、手書きの既定の実装も含まれます11。
図の説明
この図は、モデルの定義からコードを作り、取り入れる側が既定の実装を使うか拡張するかを選ぶまでの順番を表します。ほかの言語の配布物は、モデルの一部だけのことがあります。
CDM の処理のまとまり(Process Model)は、業界の処理を支える技術的な標準を、標準化された形に変換するものです。その形は、「機械が読める(machine-readable)」かつ「機械が実行できる(machine-executable)」ものです12。この 2 つは、市場参加者の間の実装の食い違いをなくし、技術どうしの接続を進めるのに欠かせないとされています12。処理の中身は、必要な出力のすべてを決める関数にも、一部だけを決める関数にもなります13。
次の日数計算は、「機械が実行できる」ことの例です。CDM には、日数計算を行う関数の部品があります14。日数計算の規則の 1 つの 30E/360 は、各月を 30 日として数え、月の 31 日は 30 日に置き換えます15。30E/360 を使う、開始日と終了日が違う 2 行の架空の例で考えます。出力は規則から求めた値で、CDM の出力そのものではありません。
| 開始日 | 終了日 | 規則 | 出力(期間が 1 年のどれだけにあたるか) |
|---|---|---|---|
| 2026 年 1 月 15 日 | 2026 年 7 月 15 日 | 30E/360 | 0.5(6 か月 × 30 日 ÷ 360 日) |
| 2026 年 1 月 31 日 | 2026 年 2 月 28 日 | 30E/360 | 約 0.0778(開始日を 30 日に置き換えるため 28 日 ÷ 360 日) |
CDM はこの種の計算を、各社が個別に実装する代わりに、コードを生成できる定義として用意しています15。2 行目のように 2 月の末日を含む期間は、各月を 30 日として数える別の規則では違う値になることがあります15。
処理のまとまりが現在扱う範囲は、証券、契約型の商品、外国為替の取引の後の処理(ポスト・トレード)です。約定と確認、清算、配分、決済、オプションの行使、証拠金の計算、規制報告が含まれます16。規制報告では、ISDA のデジタル規制報告(DRR)が、業界で合意した新しい報告規則や改正の解釈を、CDM のコードに変えるものとして挙げられています17。
配布されるものは、次の 3 つの部分でできています11。
| 部分 | 内容 |
|---|---|
| モデルの定義 | 商品、イベント、法的契約、処理、参照データを書いた定義の集まり |
| 生成されたコード | 定義から自動で作ったコード。Java の配布物はモデル全体と既定の実装を含む |
| 既定の実装 | Java で手書きしたコード。生成されたコードと合わせて、完全な実装になる |
ほかの言語の配布物は、モデルの一部だけのことがあります。たとえば TypeScript の配布物はデータのモデルだけで、関数の実行コードを含みません11。既定の実装は、金融機関が配布物を使って実装を組み立て、試せるように同梱されています11。既定の実装を使うか、無効にするか拡張するかは、取り入れる側が選びます。
FINOS が管理する公開仕様
CDM は、FINOS が、オープンな管理の仕組み(Community Specification)のもとで開発する標準です。基になるコード資産は Community Specification License 1.0 で公開されています18。2022 年 9 月に、ISDA、ISLA、ICMA が、見積依頼(RFQ)の手続きを経て FINOS を選んだと発表しました。2023 年 2 月 16 日には、FINOS が CDM のオープンソースの公開を発表しました19。
文書は版ごとに公開されます。2026 年 10 月 2 日に確かめた文書は、版 7.0.0 のものでした。古い版(6.0.0 など)の文書も残っています18。仕様の版は更新されていくため、取り入れるときは、使う版と変更の履歴を確かめます。
CDM には、デリバティブ、担保、技術の構成、トークン化された資産などの作業部会があります18。
金融機関のシステムでの使い方
金融機関が CDM を使う形は、FINOS の文書が示す範囲では、次のものがあります。
- 配布された Java のコードを、Maven で組み込んで使う20。
- 配布された定義から、別の言語のコードを生成する11。
- ソフトウェア会社が提供する CDM に基づくアプリケーションを使う。これには、オープンソースのものと、商用条件のものがある。FINOS は、特定のアプリケーションを推奨していません21。
- 文書にある用途の例を参考にする。担保の適格資産の表現、リポ取引、証券貸借、取引前の処理などが挙がっています22。
FpML は、店頭デリバティブなどの取引の情報を電子的にやりとりして処理するための、XML で書くオープンソースの標準です23。CDM は、既存の業界のメッセージの形式への対応づけを設計原則の 1 つにしています24。たとえば、取引のデータの一部は FpML の取引確認書の見方の要素を取り入れ、取引前の見方に対応する部品もあります25。
注
-
FINOS「Overview of the FINOS CDM」の "Purpose"。取引のライフサイクルのイベントの記録が会社ごとに違うことから照合の必要が生じること、規制報告の一貫性を、標準の表し方と、機械が実行できる報告の要件で高めること。 ↩ ↩2
-
FINOS「Common Domain Model」のトップページの "What is the purpose of the CDM?"("Enhance interoperability & straight through processing")。 ↩
-
FINOS「Overview of the FINOS CDM」の "Scope"。 ↩
-
FINOS「Overview of the FINOS CDM」の "FINOS CDM Distribution" と "Model Overview"。表の部品の名前は、Product Model、Event Model、Legal Agreements、Process Model の各文書による。 ↩
-
FINOS「Product Model」の "Financial Product"(資産と Payout と EconomicTerms の関係)、"Asset"(現金、コモディティ、デジタル資産、金融商品。識別子の種類)、"Instrument"(上場デリバティブ、ローン、証券)。 ↩ ↩2
-
FINOS「Legal Agreements」の "Legal Agreements in the CDM"、"The Use of Agreements in Financial Markets" の "Introduction"。 ↩ ↩2 ↩3
-
FINOS「Event Model」の "Introduction to the Event Model"。ライフサイクル・イベントの定義、原則、約定と変更の例、4 つの部品。 ↩ ↩2 ↩3 ↩4 ↩5
-
FINOS「Event Model」の "Lineage"。 ↩
-
FINOS「Event Model」の "Trade State"(TradeState の定義。trade、state、resetHistory、transferHistory の 4 つの欄)。 ↩
-
FINOS「Event Model」の "Workflow" の説明(当事者以外の関与、自動と手作業の手順、各手順の間の系譜)。 ↩
-
FINOS「Overview of the FINOS CDM」の "CDM Components"("FINOS CDM Distribution" の 3 つの部分、"Rune DSL")。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
FINOS「Process Model」の "What Is the Process Model" と "How Does It Work"。 ↩ ↩2
-
FINOS「Process Model」の "Granularity"(関数のロジックが "fully defined" か "partially defined" か)。 ↩
-
FINOS「Process Model」の日数計算の節("The CDM includes a library for performing day counting calculations.")。 ↩
-
FINOS「Process Model」の "Year Fraction"(30/360 系の 3 つの規則、30E/360 の関数の例、コード生成)。表の値は架空です。 ↩ ↩2 ↩3 ↩4
-
FINOS「Process Model」の "Coverage"。 ↩
-
FINOS「Overview of the FINOS CDM」の "What is the FINOS CDM?" の後の ISDA の Digital Regulatory Reporting(DRR)の説明。 ↩
-
FINOS「Common Domain Model」のトップページ(開発の仕組み、ライセンス、版の一覧、作業部会)。確かめた日は 2026 年 10 月 2 日で、文書の版は 7.0.0。 ↩ ↩2 ↩3
-
FINOS「FINOS Launches Common Domain Model Project…」(2023 年 2 月 16 日)の第 3 段落。ISLA は International Securities Lending Association、ICMA は International Capital Market Association の略。 ↩
-
FINOS「Overview of the FINOS CDM」の "Using the CDM (Java)"。 ↩
-
FINOS「Overview of the FINOS CDM」の "CDM Applications"。 ↩
-
FINOS「Common Domain Model」のドキュメントのトップページの "Use Cases" の一覧(Eligible Collateral Representation、Repurchase Agreement Representation、Securities Lending、Pre-trade Processing など)。 ↩
-
TC68 国内委員会事務局「ISO 20022 の概要」(2015 年 3 月)の 6 ページ、脚注 13。FpML が ISDA の後援を受けて開発されたオープンソースの標準であることを示す。 ↩
-
FINOS「Overview of the FINOS CDM」の "Design Principles"("Mapping to existing industry messaging formats")。 ↩
-
FINOS「Event Model」の "Trade" の注記(Trade と ContractDetails の欄が FpML の trade confirmation view の要素を取り入れ、TradableProduct が pre-trade view に対応する)。 ↩