金融・為替・暗号資産データ は何をしますか?
為替レートと暗号資産価格をキー不要で取得します。このスキルが防ぐミス:訓練データからexchangerate.host、Fixer、Alpha Vantageを思い出してしまうこと(現在はすべてキー必須)、または訓練データの古いレートを実際の計算に使ってしまうこと。
ランク付けされたAPI
- Frankfurter (api.frankfurter.dev) - 法定通貨FXのデフォルト。欧州中央銀行基準レート、約30の主要通貨、1999年からの履歴、時系列、キー不要、レート制限も実質的に問題なし。
- CoinGecko 無料ティア (api.coingecko.com) - 暗号資産価格、時価総額、数千のコインの24時間変動。キー不要だが、匿名IPからの制限は約5〜15コール/分と厳しい。IDは1回の呼び出しにまとめること。429エラー時は60秒待機。
手順
- 法定通貨か暗号資産か? 法定通貨→Frankfurter。暗号資産→CoinGecko。暗号資産→法定通貨の換算はCoinGecko1回の呼び出し(
vs_currencies=eur)で済み、2回ホップする必要なし。 - 日付を確認する。 ECB基準レートは営業日の16:00 CET頃に更新。レスポンスの
dateフィールドが実際に取得した日付を示す。週末・祝日のリクエストは前営業日の日付を返すので、その日付を引用し、今日の日付として提示しないこと。 - CoinGeckoはティッカーではなくIDを使用する。
idsパラメータにはbitcoin、ethereum、solanaのように指定し、BTC/ETHは使わない。不明なコインの場合、一度/api/v3/search?query={name}で検索し、coins[0].idを解決する。 - FXの計算を記憶から行わない。 タスクが金額にレートを掛ける場合、そのレートはこれらのAPI呼び出しのいずれかから取得し、日付を付与すること。
ユーザーに確認が必要な場合のみ:通貨ペアまたはコイン(デフォルトなし)、日付/範囲(デフォルト:最新)、金額(デフォルト:1)。
URLテンプレート + 実際のレスポンス形状
最新のFXレート:
https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP,JPY
{"amount":1.0,"base":"USD","date":"<最終営業日>","rates":{"EUR":0.87352,"GBP":0.74878,"JPY":161.15}}
&amount=250 でサーバー側で金額を変換可能。rates は事前に乗算された値で返る。
履歴 / 時系列:
https://api.frankfurter.dev/v1/2024-01-15?base=USD&symbols=EUR ← 特定日付
https://api.frankfurter.dev/v1/2024-01-02..2024-01-31?base=USD&symbols=EUR ← 範囲
https://api.frankfurter.dev/v1/currencies ← コード → 名称マップ
範囲の形状: {"rates":{"2024-01-02":{"EUR":0.91274},"2024-01-03":{"EUR":0.91583}}} - 日付でキー付けされ、営業日のみ(1年で約256日分。週末のキーはないので、ギャップを欠損データと見なさないこと)。終了日を省略(/2024-01-02..)すると現在まで取得。
暗号資産スポット価格:
https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=usd&include_24hr_change=true
{"bitcoin":{"usd":63289,"usd_24h_change":1.19},"ethereum":{"usd":1790.89,"usd_24h_change":1.90}}
不明なIDはレスポンスから静かに削除される。キーがない場合はIDが間違っていることを意味し、価格がnullなのではない。
暗号資産市場テーブル(ランク、時価総額、供給量):
https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=20&page=1
{"id","symbol","name","current_price","market_cap","market_cap_rank","price_change_percentage_24h","circulating_supply","ath"} の配列。1回の呼び出しで /simple/price を20回呼ぶのを代替する。リスト系の場合はこちらを優先。
成果物
レートまたは価格は、その date/タイムスタンプとソース名、および使用した正確なURLと共に提示する。換算がある場合は計算式を示す:250 USD × 0.87352 (ECB, <レート日付>) = 218.38 EUR。
使用禁止 - 代わりにXを使用
- exchangerate.host - すべてのリクエストに
access_keyが必要になりました。キーレスでの動作確認失敗。Frankfurterが代替。 - Fixer、Alpha Vantage、Finnhub、Polygon、OpenExchangeRates - キー必須。Frankfurter/CoinGeckoで要件を満たせるのに、ユーザーにサインアップさせないこと。
- 株式/銘柄のクオート - キーレスで動作確認できるものはない。その旨を明確に述べ、有料オプションを挙げる。価格をでっち上げないこと。
- GDP、インフレ、失業率、貿易系列 - government-open-data を使用。
- 金融アドバイス - このスキルは数値を取得するもの。買い/売り/配分の判断は範囲外。データを提示し、推奨はしない。
品質基準
- すべての数値は日付とソースを伴う。レートや価格が訓練データの記憶から得られたものでないこと。
- Frankfurterの約30通貨の上限を尊重。マイナーなペア(例:NGN、VND)はサポート外と宣言し、近似しない。
- CoinGeckoの呼び出しはバッチ化する。429エラー時はバックオフを行い、リトライループに入らない。
ソース: public-apis プロジェクト (MIT) から取得、ライブ検証済み。