参照価格の構築方法
CantonCap APIは、公開している各通貨で、すべてのアセットの参照価格を約1分ごとに再計算しています。入力となるのは、公開されているCantonの取引所がそのアセットについて提示する価格です。各マーケットのティッカーを用い、ティッカーを公開していないマーケットではそのプールの状態を用います。ステーブルコインやCanton Coinなど別のアセット建ての価格は、そのアセット自身の参照価格で換算するため、どのステーブルコインもちょうど1ドルの価値があるとは仮定しません。
参照価格は、新しく、意味を持つだけの流動性があり、要求された通貨に換算可能な観測値のみから構築されます。取引所のプール状態、執行可能なオーダーブックの気配、決済済みの取引所約定は、それぞれ直接の構成要素となり得ます。通貨ラベル付きの外部参照値は、これらの観測値を目標通貨に換算するために使われることがありますが、通常はそれ自体が独立した価格構成要素になることはありません。
提示価格は、運営者が設定した範囲内にある場合にのみ採用されます。十分な流動性の裏付けがあること、他の提示価格との乖離が外れ値の許容範囲内であること、スプレッドと価格インパクトが上限内であること、1つの取引所が結果を動かせる幅の上限、換算ステップ数の上限、そして最大経過時間です。条件を満たした提示価格は加重して1つの数値にまとめます。各アセットは個別に計算されるため、あるアセットでの失敗が他のアセットを妨げることはありません。
Canton CoinのUSD価格は、3つの独立した中央集権型取引所の参照値(Bybit CC/USDT、OKX CC/USDT、Kraken CC/USD)の中央値です。USDT建てのレッグは、KrakenのUSDT/USDレートを用いて正確な10進数で換算しています。3つのソースを伴う1つのタグ付き集計値として公開され、換算の経路であると同時に直接の構成要素でもあります。
各価格に添える算出根拠
すべてのアセットページには、各取引所の提示価格が表示されます。各取引所でのそのアセットの最新価格、最安値と最高値の間のスプレッド、そしてそれらの中央値です。対象はそのアセットがベースとなっているマーケットのみで、マーケット数が最も多いクオートアセット1つに限ります。異なるクオートアセット建ての価格は同じ軸に並べられないためです。
取引所の数が偶数の場合、中央値は中央の2つの提示価格の平均ではなく、低い方とします。そのため中央値は常に、いずれかの取引所が実際に提示した価格になります。算出根拠は参照価格を公開で検証するためのものであり、計算そのものではありません。計算の加重と除外は管理用の記録です。
価格の出所
- AMMプールvenue_pool
- Cantonの取引所にあるオンチェーンのプールのリザーブから算出されます。
- オーダーブックvenue_book
- Cantonの取引所における執行可能な板の気配から算出されます。
- 取引所の約定venue_trade
- 取引所の約定記録にある決済済みの約定から取得されます。
- 外部参照値external_reference
- 通貨ラベル付きの参照値で、換算に使われ、価格を直接決めるものではありません。
- 算出値derived
- 直接観測したものではなく、採用済みの他の観測値から計算されます。
すべての観測値に適用されるチェック
観測値は、公開数値の裏付けとなる前に15項目のチェックで評価されます。不合格の場合は、段階とチェック名を記した品質インシデントとして記録されます。
これらの記録は公開用ではなく管理用です。公開APIが公開するのは残った値と最終更新時刻であり、監査証跡ではありません。一般の利用者が直接確認できるのは取引所間のスプレッドです。各アセットのページをご覧ください。
- 小数の妥当性decimal_validity
- 報告された値を正確な小数として解析できませんでした。
- タイムスタンプの妥当性timestamp_validity
- 観測値の時刻が欠落しているか、妥当ではありませんでした。
- 識別情報の照合identity_resolution
- レコードを既知のアセットまたはマーケットに結び付けられませんでした。
- 価格の妥当性price_validity
- 価格がゼロ以下であるか、その銘柄が取りうる範囲を外れていました。
- リザーブの妥当性reserve_validity
- プールのリザーブが、従うとされるカーブと整合していませんでした。
- 板の逆転book_crossed
- 最良買い気配が最良売り気配を上回っており、板の内部に矛盾がありました。
- 空の板book_empty
- 板の片側または両側に、価格算出の基準となる気配がありませんでした。
- シーケンスの欠落sequence_gap
- ソースのシーケンス番号が飛んでおり、少なくとも1件の更新が欠落しました。
- 鮮度切れstaleness
- 観測値が、この計算で許容される鮮度の期間より古いものでした。
- 価格の外れ値price_outlier
- 価格が、同種の価格に対して許容される分散の範囲から外れていました。
- 供給量ジャンプsupply_jump
- 観測と観測の間で、報告されたトークン供給量が発行で許容される以上に変動しました。
- OHLCの整合性ohlc_invariant
- ローソク足が自身の整合条件に反していました。高値が始値を下回る、安値が終値を上回るなどです。
- 重複イベントduplicate_event
- 同じソースイベントが2回届いたため、1回として数えました。
- 出来高の照合volume_reconciliation
- 報告された出来高が、同じ期間に観測された取引と一致しませんでした。
- 依存データ利用不可dependency_availability
- この数値の計算時に、依存する入力データが利用できませんでした。
流動性と流動性スコア
AMMプールの流動性は、そのリザーブのUSD評価額です。各リザーブは、Canton上の識別情報で照合したアセットの参照価格で評価します。価格のないアセットのリザーブがある場合、数値は推測せず空欄のままとし、空のプールはゼロとします。オーダーブックは代わりにデプスで測定するため、オーダーブック型のマーケットには単一の流動性の数値がありません。
2%以内のデプスとは、価格が参照価格から2%動くまでに売買できるUSD評価額です。オーダーブックでは板の気配から読み取り、AMMではプールの保存状態から手数料を含めてモデル化します。モデル化したデプスはカーブを測定したものであり、気配値でも約定の保証でもありません。
流動性スコアは、そのマーケットで取引する際のコストに基づき、マーケットを0〜100で評価します。APIはマーケットの現在の状態に対して$100、$500、$1,000、$5,000、$10,000の買いと売りを手数料を除いてシミュレーションし、その価格インパクトと、それぞれ約定できたかどうかを1つのスコアにまとめます。入力が不十分なマーケットにはスコアがなく、これはスコア0とは意味が異なります。
アセットのスコアは、ペアのいずれかの側でそのアセットを取引するマーケットのうち、スコア上位3つの平均です。スコアのあるマーケットが3つ未満ならそのすべての平均となり、1つしかなければそのマーケットのスコアがアセットのスコアになります。取引所のスコアはそのマーケット全体の平均です。「流動性上位」ビューは、アセットのスコアでアセットを並べています。
24時間出来高
出来高の定義はサイト全体で1つのため、テーブルと合計が食い違うことはありません。マーケットのUSD建て24時間出来高には、APIによるアクティビティ測定値があればそれを、なければ取引所がティッカーで報告するUSD建て出来高を、それもなければクオートアセット建ての出来高をそのアセットの参照価格で換算した値を用います。アセットの出来高は、ペアのいずれかの側でそのアセットが取引されるすべてのマーケットの合計、取引所の出来高はそのマーケットの合計、ネットワークの出来高は各マーケットを1回ずつ数えた合計です。
アクティビティ測定では、期間ごとに1つの想定元本を選び、3分以内の取引所基準の価格から導いたUSD値を優先します。取引所が報告する出来高を、その取引で観測された出来高に加算することはありません。1時間単位のスライスから集計し、5分ごとに新しいスナップショットを作成します。
出来高の数値には注意事項が付随します。更新時に使える値がない場合、APIは最新の値をその時刻とともに保持します。その時刻から1時間を超えると、数値は薄く表示していつの値かを示し、現在の値としては扱いません。部分的な数値は24時間の一部のみをカバーしていることを明示し、推定値は推定値であると表示します。不明な値をゼロと表示することはなく、古い数値、部分的な数値、推定値を含む合計にはその件数を示します。
Rockyが報告する出来高は、同取引所のマーケットに理由とともに薄く表示し、取引と整合するまではすべての合計から除外しています。最初の数値が、掲載アセットの供給量の数倍に達していたためです。
完全希薄化後評価額
FDVは、採用された参照価格と、承認済みレジストラによるポリシー適合の最新の総供給量観測値との、正確な10進数による積です。供給量の観測値が算出方法の認める最大経過時間より古い場合、または承認済みレジストラが公開していない場合、FDVは算出されず、数値の代わりにその理由を表示します。
総供給量は、承認済みレジストラがその銘柄について公開する数値で、報告されたとおりに保持します。丸め、スケール変更、補間は一切行いません。2回の観測の間に、発行で説明できる以上に供給量が変動した場合は、供給量ジャンプのチェックでフラグが立ちます。流通供給量と最大供給量は公開していません。
時価総額
時価総額は公開していません。流通供給量の数値が必要ですが、Cantonの銘柄についてレビュー済みの流通供給量の算出方法は存在しません。流通分をロック分、トレジャリー保有分、契約上の制限がある供給量と区別することは、データではなくガバナンスの問題です。
APIは空のフィールドを返すのではなく、ペイロード内でこれを明示します。グローバル指標のレスポンスにはmarket_cap.semantics = "unavailable_circulating_supply"が含まれます。その算出方法が確立されるまで、Cantonアセットの時価総額は推測に過ぎず、本サービスは推測を公開しません。
順位と比率
順位は、FDV、プールの流動性、直近24時間のローリング出来高に基づいて、全掲載アセットを並べたものです。掲載全体に対して一度だけ計算されるため、アセットはどのページ、どの通貨、どの並び順でも同じ順位になります。
流動性 / FDVは、アセットのAMMプールにおけるUSD建て流動性をFDVで割ったもので、対象となる各プールは一度だけカウントされます。オーダーブックのデプスは含みません。上限はなく、評価額が小さくプールが厚い場合は100%を超えることがあります。
出来高 / FDVは、アセットの利用可能な最良の直近24時間ローリング出来高(USD)をFDVで割ったもので、評価額のうち1日で取引された割合を示します。出来高には報告値または観測された取引のいずれかを用い、両者を合算することはありません。
FDVがない、古い、またはゼロの場合や、割る対象がない場合は、いずれの比率も表示しません。プールのないアセットには流動性比率がありません。各比率にはカバレッジが付随するため、一部のマーケットに基づく数値はその旨が明示されます。
どちらの比率も共通の4つの区分で読み取ることができ、各数値の横のバーで示されます。
| 区分 | 範囲 | 流動性 / FDV | 出来高 / FDV |
|---|---|---|---|
| 薄い, 閑散 | 1%未満 | 薄い | 閑散 |
| やや薄い, 低調 | 1%〜5% | やや薄い | 低調 |
| 中程度, 活発 | 5%〜10% | 中程度 | 活発 |
| 厚い, 非常に活発 | 10%以上 | 厚い | 非常に活発 |
チャート:ローソク足とライン
ローソク足は、アセットの始値、高値、安値、終値をUSDで示します。APIがそのアセットの価格算出に用いるマーケット全体で集計したもので、出来高が公開されている場合はその下に表示します。チップで1本のローソク足がカバーする期間(15m、1h、4h、24h、1W、1M)を選べます。短い3つは約200本分さかのぼり、24hは1年分、1Wと1Mは全履歴を読み込みます。
APIが提供するローソク足は最長1週間のため、月足は日足からUTCの暦月単位で構築します。月の最初の始値で始まり、最後の終値で終わり、最も高い高値と最も低い安値を範囲とし、各日に公開された出来高を合計します。
ローソク足は1つの連続した記録としてつなげます。各ローソク足は直前の終値から始まり、取引がなかった期間は空白ではなく、前の終値で出来高のない平らなローソク足とします。ローソク足の高値と安値は始値を含むように広げるため、実体がヒゲからはみ出すことはありません。
ラインは参照価格そのものを、24h、1W、1M、1Y、全期間で描画します。期間内の区間ごとに1点で、その区間の最新価格を用います。24時間では15分ごと、1週間では1時間ごと、1か月では4時間ごと、1年以上では1日ごとです。期間の最初の点より上なら緑、下なら赤で表示します。
チャートがさかのぼれるのは、APIが保持する履歴とサイトのアクセス権が許す範囲までで、最大31日の期間単位で読み込みます。ソースの履歴がCantonCapによる観測開始時点から始まる場合、それ以前の期間は存在しません。テーブルの各行にある小さなラインは、そのアセットの直近24時間の参照価格を1時間ごとに示したものです。
更新頻度とタイムスタンプ
取引所は、それぞれが許容する頻度に応じて30秒〜5分ごとに読み取り、参照価格は約1分ごとに再計算します。サイトは各応答を短期間再利用します。ソースステータスは30秒、価格、掲載一覧、マーケットは1分、出来高、取引所、チャート、スパークラインは5分です。開いているマーケットテーブルは45秒ごとに新しい価格を確認します。
APIが公開する時刻はすべてUTCで、サイトもUTCで時刻を表示します。計算された価格には計算時刻が、期間にわたる測定値には読み取り時刻ではなく対象期間の終了時刻が付きます。期間は開始時刻を含み、終了時刻を含みません。各数値の経過時間はその横に表示され、アプリでは最新の価格が30分前のものになると、価格を遅延として表示します。アプリのチャートの軸はスマートフォンの現地時刻で表示されます。
サンプルデータとライブデータ
すべての数値はページ構築時にCantonCap APIから読み込まれ、読み込みのたびにライブデータが返ったかどうかを記録します。本番環境でAPIに接続できない場合はエラーまたは正直な空欄を表示し、架空の数値でページを埋めることはありません。
開発版とプレビュー版では、APIに接続できない場合に固定のサンプルデータセットを表示することがあります。そのデータに基づくページには必ず理由を記したサンプルデータのバナーが表示され、数値は説明用であってマーケットデータフィードではありません。サンプルデータを実際のデータとして提示することはありません。
ウォッチ数、センチメント、発行体のポスト
「N人がウォッチ中」は、現在そのアセットをウォッチリストに登録しているメンバーの数で、ログイン中のメンバーのリストのみを対象とします。合計数のみで、リストそのものが表示されることはありません。サイトでの更新は最大で1分に1回です。
センチメントゲージは、メンバーをアセットごとに1人1回として数えます。アセットのページで投じた強気・弱気の投票は、投票時から7日間カウントされます。投票していないメンバーは、過去7日間にそのアセットについて行った直近の投稿の見通しでカウントされ、返信、非表示の投稿、削除された投稿は含みません。強気・弱気を示したメンバーのうち強気の割合を、強い弱気から強い強気までの5つの均等なゾーンに分けたダイヤル上に示します。これは意見の集計であってシグナルではなく、誰も見通しを示していない場合は空欄のままです。
発行体フィードには、発行体またはアセット提供者がXに投稿したポストを表示します。対象は、その発行体とアセットとの承認済みの関連付けをAPIが掲載している場合のみで、シンボルの一致でフィードを選ぶことはありません。ポストは投稿されたとおりに、UTCでの時刻と元のポストへのリンクとともに表示します。編集されたポストは最新版を表示し、表示制限、非公開、削除されたポストは取り除きます。開いているページは30秒ごとに再確認し、90秒より古い応答に含まれるポストは表示しません。CantonCapは、発行体のポストの内容を支持・推奨するものではありません。
カバレッジとスコープ
Cantonはサブトランザクション単位のプライバシーを適用しています。パーティは、トランザクションのうち自身に関係する部分のみを受け取ります。インテグレーターキーで参照できる取引所は一般には参照できず、パーティにスコープされた約定記録は他の誰からも参照できません。そのため、各数値にはそれが観測されたスコープが付随します。