メインコンテンツまでスキップ

経済カレンダー

cMindは独自の経済カレンダーを提供します — リリーススケジュール実績、予測、改訂、 データ駆動型インパクトモデル — 一次情報源(中銀と国統計機関)から、 ForexFactory、FXStreet、Investing.comなどのアグリゲータへの依存ゼロ。 ポイントインタイム正確で、≥10年間の歴史を保持、 取引、パブリックAPI、MCP、cBot、AI、アラート、バックテストに配線されています。 decoupled moduleであり、取引コアにゼロ効果で無効化できます。

ステータス。 P0–P4 は実装済みでリリース済みです。ドメインコア、永続化(EF calendarスキーマ、 append-only読み取り/書き込み、FRED + BLS + 中央銀行スケジュールソース、ソースごとの鮮度追跡付き 設定ゲート取り込みワーカー)、バージョン付きJWT REST API、モバイルファースト /economic-calendar UI、MCPツール、cBot JWT API、高影響イベントアラート、copy-tradeニュースブラックアウト一時停止、 バックテストイベントオーバーレイ、SSEストリーム、HMAC署名Webhook、型付き CmindCalendarClient はすべて実装され統合テスト済みです。P5エクストラ(サプライズ分析、iCal/CSVエクスポート、 キーワード検索、プラガブルコンセンサス)が残りの項目です — 以下のロールアウトフェーズを参照。

何が違うのか​

大手カレンダーの繰り返し苦情が私たちの設計制約になりました:

  • インパクト評価のサイレント変更なし。 当社のインパクト評価は決定論的、バージョン管理、監査可能です。 すべての変更は記録された改訂として記録 — 決してサイレント上書きではありません。 ユーザーはイベントがHighである理由を正確に見ることができます。
  • イベントごとに1つのUTCアンカー。 すべてのイベント是一次情報源の公式スケジュールの 1つのUTC瞬間でアンカー; 情報源自身のタイムゾーンが保存され、 ユーザーごとの描画は明示的なIANAタイムゾーンでDSTをゾーンデータベースで処理 — 手動の±1hトグルではなく。
  • どこでも完全な改訂チェーン。 元の値とすべての改訂は一流であり、API、MCP、cBotサーフェスで 同一に公開。
  • ≥10年間の歴史、壁なし。 無制限のブラウジング範囲; 60日間cap、 registration gateなし。
  • 構築によるポイントインタイム。 すべてのfactがKnownAt(私たちが学んだとき)と EffectiveAt(イベント瞬間)を運ぶ。「時刻Tに見たカレンダーの样子」は一流クエリであるため、 バックテストされたニュースルールはライブと正確に動作 — 履歴で改訂値を使用してのルック-aheadなし。

インパクトモデル​

インパクトスコアは[0, 100]の純粋で決定論的関数で、Low / Medium / High / Criticalにバンド化。 その入力はスコアリング時に知られているデータのみ(未来リークなし):

  • シリーズ事前確率 — インジケータークラスのベースライン重み (金利決定 > CPI > マイナーサーベイ)。
  • 実現ボラティリティ足跡 — このシリーズの過去リリース後の主要受影响シンボルの 中央絶対リターン:「このリリースは歴史的にこれだけの価格を動かした」。
  • サプライズ敏感性 — 絶対サプライズ(zスコア)が事後移動とhistorically相関していた強さ。

スコアは固定重みでブレンドし、ImpactModelVersionをスタンプ。再計算は明示的でログ取りされた操作で、 突然変異ではなく新しい改訂を生成 — そのためスコアは常にその入力から再現可能。

国 → 通貨 → シンボルマッピング​

algo統合で最も引用されるペーパーcutは1回だけ、純粋関数として解決されます: 国は通貨にマッピング(すべてのユーロ圏メンバーはEURにファンイン)、 通貨はどちらかのレッグでそれをクォートするウォッチリストシンボルにマッピング。 そのためEURUSDはEUとUSの両方のイベントに影響を受ける; XAUUSDはUSDに影響を受ける; US500はUSDにマッピング。これはニュースフィルタ、 影響を受けるシンボルの解決、ブラックアウト数学を驱动します。

ニュースウィンドウポリシー​

NewsWindowRuleは{ minImpact, beforeMinutes, afterMinutes, currencies?, series? }。 単一で共有、純粋実装が「瞬間TはシンボルSのブラックアウト内か?」に回答 — cBotニュースフィルタ、コピー取引一時停止、AIリスクガードで使用されるため、決して divergentない。 不確実性のについては=blackout回答は設定された保守的な値にデフォルト(デフォルトでフェイルクローズ)、 そのためデータギャップが高インパクトリリース間の取引をサイレントに許可永远不会。

ポイントインタイムと改訂​

実績、予測、インパクトスコアはappend-only。各イベント所有の順序付き改訂チェーン、 KnownAtで単調:

  • Scheduled — イベントが最初にスケジュールされた (事前インパクト、実績なし)。
  • Released — 最初の印刷された実績に到着。
  • Revised — 後の改訂値に到着。
  • Rescheduled — 情報源がリリース瞬間を移動 (監査可能、アラート可能)。
  • Rescored — 新しいモデルバージョンでインパクトスコアが再計算。

過去瞬間as ofとしてクエリすると、その時点で知られていた正確に改訂が返されます — バックテストされたニュースルールでのルック-aheadを殺す保証。

予測/コンセンサス​

エコノミストのサーベイ中央値は一次情報源では自由に公開されていません — 那是アグリゲータの独自の価値增加值であり、私たちはそれを fabricate しません。 イベントスキーマはnullable Forecastを運ぶ; デプロイはオプションのIForecastProviderポート(BYOK、デフォルトオフ)を通じて ライセンスされたコンセンサスフィードを配線できます。 前回の値と改訂は常に公式情報源から取得。

データ情報源​

2つの分離れたレイヤーで、すべて一次 — アグリゲータではない:

  • スケジュール/タイミング: FRED釋放カレンダー; 国統計機関 (BLS, BEA, Census, Eurostat, ONS, Destatis, INSEE, e-Stat, ABS, StatCan); 中銀ミーティングカレンダー(Fed, ECB, BoE, BoJ, RBA, BoC, SNB, RBNZ)。
  • 実績値: FRED(改訂とポイントインタイムのヴィンテージ日付付き)+ BLS, BEA, Census, ECB SDW, Eurostat, OECD SDMX API。

信息来源が停止しても、その情報源のcoverageのみが低下; カレンダーは残りを提供服务し続け、鲜度 метри크としてギャップを surface。

レート制限とバックアッププラン​

外部プロバイダはレート制限を publish(FREDは約120リクエスト/分)。 カレンダーは プロバイダの制限を決して超えないように構築され、 スロットルまたはカットオフが読取を低下させることもありません:

  • プロアクティブスロットリング。 各情報源のHTTPクライアントは設定された予算 (App:Calendar:FredRequestsPerMinute、デフォルト100 — プロバイダの上限より意図的に低く)に向かうアウトバウンドリクエストを間隔を空ける 共有スレッドセーフレートゲートを共有します。 リクエストはキューイングされてペース配分され、バーストされません。
  • 429 Retry-Afterを尊重。 プロバイダが429 Too Many Requestsを返した場合、 ゲートはサーバー要求のクールダウン(またはApp:Calendar:RateLimitBackoff、デフォルト60s) だけその情報源全体をバックオフしてから次の呼び出し — タイトなリトライループなし。
  • 標準レジリエンス。 各情報源クライアントはアプリ全体のレジリエンスハンドラ (バックオフ + ジャター付きリトライ、サーキットブレーカー、タイムアウト)も継承するため、 一時的な障害は吸収され、永遠に失敗する情報源は他に影響を与えずにparked (そのcoverageは古くなる)。
  • バックアッププラン — 耐久性のある読み取りスキップキャッシュ。 読み取りは決して プロバイダを呼び出すことで提供服务されません。範囲がフェッチされると一度、 Postgresにappend-onlyで永続化され、その後かららは永遠に提供服务されます (§"オンデマンドロード"参照)。 そのため、情報源がレート制限または停止しても、カレンダーはキャッシュされた ポイントインタイム正しいデータから提供服务を継続; 欠落しているスパンは単に未Coveredのままになり、次の取り込みサイクルでリトライされます。 ブラックアウト回答はさらに不確実性下で保守的なデフォルトに失敗するため、 データギャップが高インパクトリリース間の取引を許可永远不会。
  • 安いポーリング。 条件付きフェッチ(ETag / If-Modified-Since / 情報源ヴィンテージカーソル)と 「スパン一度フェッチ、二度としない」キャッシュで、実際のリクエスト量を通常の運用で任意の制限下に維持 — レートゲートはセーフティネット而不是共通パス。

有効化/無効化​

2つの獨立した層で、其他cMind機能と正確に同理:

  • 層1 — ランタイム機能トグル(Feature.EconomicCalendar)はFeatures管理UIからflip; 再デプロイ不要、ライブで有効。
  • 層2 — ホワイトラベルハードゲート(App:Branding:EnableEconomicCalendar、デフォルトtrue)。 リセラーがfalseに設定して機能を完全に削除; オペレーターが再度有効にすることはできません。

有効な状態はBranding.EnableEconomicCalendar && FeatureToggle.EconomicCalendar。 無効な場合、ナビエントリが非表示になり/economic-calendar、/api/calendar/**と MCPカレンダーツールはクリーンなfeature-disabled 404を返します — 500ではなく。 永続化された履歴はランタイムトグルオフで保持されるため、再有効化は즉시。

ロールアウトフェーズ​

  • P0 — ドメインコア(実装済み):集約、値オブジェクト、ポート、インパクトモデル、 国→シンボルマッピング、ニュースウィンドウポリシー、2層ゲーティング、完全ユニットスイート。
  • P1 — 永続化 + 1つの情報源(実装済み):EF calendarスキーマ(独自のテーブル、append-only、 ホットインデックス)、ポイントインタイムasOfを持つIEconomicCalendarリーダー、멱等append-only 書き込みサービス、弾力性のある型付きクライアントの背後にあるFREDコネクタ、 設定ゲート付き取り込みワーカー; Testcontainers統合テスト (永続化、PIT、멱等性、ブラックアウト)。
  • P2 — パブリックJWT REST API + Web UI(実装済み): バージョン管理されたJWT保護/api/calendar/v1 API — クライアント発行、トークン交換、コアルードエンドポイント (events、history、series、surprises、next、blackout、affected-symbols、health) + スコープ実施と2層ゲーティング、統合テスト済み。 モバイルファースト**/economic-calendarページ** — цвет-bandedインパクト_chipのあるphoneに優しいカード形式の今後リリースの议程 + MudBlazorフィルタダイアログ(通貨 + 最小インパクト + From-dateピッカーで過去任意の日付にジャンプ — 60日間capなし、壁なし); ナビエントリ、smoke/mobile/a11y/E2Eテスト済み。 per-インジケーターシリーズ履歴ページ(/economic-calendar/series/{code}、 各イベントからリンク)はシリーズの完全な印刷履歴を列表。 サプライズチャート + 無限スクロールブラウザが续く。
  • P3 — 更多信息源 & ウォームアップ(開始): コアシリーズカタログ(CPI、Core CPI、NFP、失業率、GDP、PCE、Fed funds、小売販売 → それらのFRED ID)は起動時に自動的にシードされ、 1回限りの멱等、年チャンク付きプロアクティブバックフィルが≥10年の履歴を引き出すため、 ユーザーがmissするのを待たずに共通ケースがウォーム; 取り込みはデフォルトでオン(App:Calendar:IngestionEnabled、デフォルトtrue): 中銀スケジュール情報源はAPIキー不要なので、FOMC / ECB / BoE決定カレンダーが箱から出して すぐに設定されます — バックフィルは最近の歴史とフォワードホライゾンの両方に これらのミーティング日付をシードするため、先月(または過去のウィンドウ)をブラウズすると、 FRED/BLSキーが設定される前にミーティングが表示; 値はこれらのキーが設定されると埋まります。 ワーカーはカレンダーの2層ゲートを尊重 — ホワイトラベルデプロイまたは所有者が 経済カレンダー機能を無効にすると取り込みが停止し、App:Calendar:IngestionEnabled=falseで 明示的にオフに設定。 per-情報源鲜度も実装:ワーカーは各情報源の最後の成功ポーリング、 連続失敗カウント、トリップされたサーキットフラグを記録 (アプリ設定に永続化、クロスプロセス)、 /healthエンドポイント + calendar_health MCPツールが情報源ごとに真実のstale判定をレポート。 BLS(2番目の値情報源)と中銀スケジュール情報源 (FOMC / ECB / BoE決定日付、ワーカーによって最近の歴史とフォワードホライゾンウィンドウに同期)が実装。 まだ実装中:BEA/Census/ECB-SDW/Eurostat/OECD値情報源と和解パス。
  • P4 — 深い統合: MCPツール(実装済み — 完全なリードAPIパリティ: calendar_events、calendar_event、calendar_history、calendar_series、calendar_surprises、 calendar_next、calendar_blackout、calendar_affected_symbols、calendar_health、 機能ゲート付き)+ EconomicEventトリガー付きアラート(*実装済み — 間もなく登場するAlertRuleで、 選択されたインパクト以上の今後の釋放のN分前に発火、通貨にオプションで絞り込み; 既存のalertワーカーで評価、AIなし、釋放ごとに重複排除; POST /api/alerts/rules/economic-eventで作成)。 prop-guardニュースブラックアウトゲートと コピー取引ブラックアウト一時停止が実装 (§5.1 — オプトインApp:Copy:NewsPauseEnabled、デフォルトオフ: Criticalインパクトのブラックアウト内にあるシンボルのソースオープンはスキップ、 オフの場合byte-identicalホットパス)。 バックテストイベントオーバーレイが実装 — GET /api/calendar/v1/for-symbolと calendar_events_for_symbol MCPツールがシンボルのポイントインタイム正しいイベントを返す + インスタンス/バックテストレポートページがエクイティカーブの下でバックテストウィンドウ内に 入った高インパクト釋放をレンリング (著者がどの取引がNFPに着いた見るため)、ゲートされ、ローカライズ済み。 計画全体が実装されました。
  • P5 — エクストラ: サプライズ分析、iCal/CSVエクスポート、キーワード検索、プラグイン可能コンセンサス。

統合サーフェスについては cBot & REST APIリファレンスを参照。

データ情報源が必要(それなしでは機能は非表示)​

カレンダーは設定された値情報源(FREDまたはBLS)からの実績/予測/前回の値のみをsurfacedします。 App:Calendar:FredApiKeyまたはApp:Calendar:BlsApiKeyがない場合、機能はナビゲーションから非表示; ключなしで強制有効化されている場合(ホワイトラベル/所有者)、 ページは空の値ではなく「データ情報源を設定」noticeを表示し、 情報源が設定されるまでフィルターアクションが非表示のまま。 イベント行はシリーズ名(カタログから)を表示、生のシリーズコードではなく。