cafci について
cafciは、CAFCIの4つの公開データソースからアルゼンチンの投資信託情報を取得するコマンドラインスキルです。ファンド一覧、日次データ、リターン、ポートフォリオ構成をまとめ、日次キャッシュを使った検索にも対応します。
主な機能
- 01ファンドとクラスの一覧取得
- 02日次価格と資産データの取得
- 03期間別リターンと保有銘柄の確認
- 04ファンドのローカル検索とID解決
- 05一覧と日次データの日次キャッシュ
活用シーン
- 01カテゴリー別の資産規模の比較
- 02ファンドの手数料とメタデータの確認
- 03ファンドのリターンと保有資産の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gauss314/ skills --skill cafciインストール後、Claude Code で/cafciを入力して読み込まれたか確認します。
同梱ファイルreferences/REFERENCE.mdscripts/fetch_cafci.py
詳細
CAFCI — アルゼンチンの投資信託
CAFCI(アルゼンチン投資信託協会)の公式4ソースを通じて、アルゼンチンの投資信託に関する公開情報を取得するスキルです。
2026-06時点で有効な1152のファンドと4615のクラスを対象としています。マネーマーケット、債券、株式、バランス型、PyMes、トータルリターン、インフラ、クローズドエンド型ファンド、ASG、RG900に対応しています。
⚠️ 法的通知
- 公式ドキュメントのない公開 API です。エンドポイントは予告なく変更されることがあります(2026-04に廃止された以前の REST API のように)。
- CAFCI の利用規約を遵守してください。
- データは遅延データです(営業日の終値、ART 18時ごろ)。
- 商用で大量に利用する場合は、公式フィードについて CAFCI にお問い合わせください。
- 過去の運用実績は将来の運用実績を保証するものではありません。
📌 重要:以前の REST API は廃止されました
REST API の api.pub.cafci.org.ar/tipo-renta、/fondo/{id}、
/estadisticas/... は2026-04に廃止されました(HTTP 403 "Route not
allowed")。このホストで現在も有効なパスは /pb_get のみです。
このスキルでは、廃止された API に代わる4つのソースを使用します。
/consulta-de-fondos.json(完全なカタログ)/pb_get(日次 XLSX)defuddle.md/.../fondos/{F}?clase={C}(Markdown ファンド情報).../fondos/{F}?clase={C}(ポートフォリオ構成用 HTML)
スクリプト
| スクリプト | 説明 |
|---|---|
| fetch_cafci.py | メインスクリプト:すべてのエンドポイントと照会関数 |
必要なもの: pip install openpyxl(日次 XLSX の解析用)。
クイックスタート
# ── DATASETS ENTEROS (con cache local diario) ──────────────────────────
# Catalogo completo: 1152 fondos, 4615 clases con IDs, honorarios, metadata
py scripts/fetch_cafci.py catalogo
py scripts/fetch_cafci.py catalogo -o catalogo.json # guarda 2.7MB
py scripts/fetch_cafci.py catalogo --no-cache # fuerza refetch
# Snapshot diario: VCP, patrimonio, variaciones (dia/mes/YTD/12m)
py scripts/fetch_cafci.py diario
py scripts/fetch_cafci.py diario -o diario.json
py scripts/fetch_cafci.py diario --no-cache
# ── CONSULTAS SOBRE EL CACHE ───────────────────────────────────────────
# Buscar fondo por nombre (parcial, case-insensitive)
py scripts/fetch_cafci.py buscar "ahorro"
py scripts/fetch_cafci.py buscar "delta"
py scripts/fetch_cafci.py buscar "renta fija"
# Resolver IDs (mas compacto: solo fondo_id, clase_id, nombres)
py scripts/fetch_cafci.py resolve "ieb estrategico"
py scripts/fetch_cafci.py resolve "1810"
# Top N por patrimonio en una categoria del diario
py scripts/fetch_cafci.py top "Mercado de Dinero Peso Argentina"
py scripts/fetch_cafci.py top "Mercado de Dinero Peso Argentina" --limit 20
py scripts/fetch_cafci.py top "Renta Variable Peso Argentina"
py scripts/fetch_cafci.py top "Renta Fija Peso Argentina" --limit 5
# ── FICHAS INDIVIDUALES ────────────────────────────────────────────────
# Ficha markdown (rendimientos TNA: 7d/1m/90d/180d/YTD/12m + datos del fondo)
py scripts/fetch_cafci.py ficha 304 308 # 1810 Ahorro
py scripts/fetch_cafci.py ficha 1717 5772 # otro fondo
py scripts/fetch_cafci.py ficha 304 308 -o ficha.md # guarda markdown
# Composicion de cartera (top activos + porcentaje)
py scripts/fetch_cafci.py cartera 304 308
py scripts/fetch_cafci.py cartera 1717 5772
# Ficha COMPLETA todo-en-uno (combina catalogo + diario + ficha + cartera)
py scripts/fetch_cafci.py fondo 304 308
py scripts/fetch_cafci.py fondo 304 308 -o 1810_ahorro_completo.json
# ── COMBINADO ──────────────────────────────────────────────────────────
# Catalogo + diario juntos (sin fichas individuales)
py scripts/fetch_cafci.py all -o cafci_snapshot.json
# ── OUTPUT ─────────────────────────────────────────────────────────────
# Modo silencioso (solo JSON/markdown, sin logs)
py scripts/fetch_cafci.py top "Mercado de Dinero Peso Argentina" -q
利用可能なエンドポイント
| モード | データ | URL |
|---|---|---|
catalogo | カタログ:1152のファンド、4615のクラス、ID、手数料、メタデータ | GET /consulta-de-fondos.json |
diario | 日次スナップショット:VCP、純資産、マーケットシェア、変動 | GET /pb_get (XLSX) |
ficha FONDO CLASE | Markdown ファンド情報:期間別 TNA リターン | GET defuddle.md/.../fondos/{F}?clase={C} |
cartera FONDO CLASE | ポートフォリオ構成(上位資産と割合) | GET .../fondos/{F}?clase={C} (HTML) |
buscar QUERY | 部分一致する名前でファンドを検索 | (ローカル、カタログを対象) |
resolve QUERY | 名前から fondoId/claseId を特定 | (ローカル、カタログを対象) |
top CATEGORIA | カテゴリ別の純資産上位 N 件 | (ローカル、日次データを対象) |
fondo FONDO CLASE | 全項目をまとめたファンド情報(4つのエンドポイントを組み合わせ) | (ローカル + 4 リクエスト) |
all | カタログと日次データのスナップショット | (ローカル + 2 リクエスト) |
合計:HTTP エンドポイント4つ + キャッシュを利用する照会関数5つ。
ローカルキャッシュ
カタログと日次データの大きなデータセットは、システムの一時ディレクトリに1日1回キャッシュされます。
$TMP/cafci-catalog-YYYY-MM-DD.json (~2.7 MB)
$TMP/cafci-daily-YYYY-MM-DD.json (~1-2 MB)
- Windows:
C:\Users\<user>\AppData\Local\Temp\ - Linux/Mac:
/tmp/
1日に複数回照会する場合(一般的なワークフロー)、キャッシュは自動的に再利用されます。--no-cache を指定すると、再取得を強制できます。
対応する収益タイプ
| タイプ | ファンド数 |
|---|---|
| 債券 | 542 |
| バランス型 | 271 |
| マネーマーケット | 96 |
| 株式 | 76 |
| PyMes | 65 |
| トータルリターン | 42 |
| インフラ | 23 |
| クローズドエンド型ファンド | 22 |
| ASG | 10 |
| RG900 | 5 |
日次データのカテゴリ(top 用)
日次データのカテゴリは、tipo_renta + moneda + region を文字列として組み合わせたものです。よくある例:
| カテゴリ | 対象 |
|---|---|
Renta Variable Peso Argentina | アルゼンチン株式 |
Mercado de Dinero Peso Argentina | ペソ建てマネーマーケット |
Renta Fija Peso Argentina | ペソ建て債券 |
Renta Fija Dolar Estadounidense Argentina | アルゼンチンの米ドル建て債券 |
Renta Mixta Peso Argentina | ペソ建てバランス型ファンド |
Retorno Total Peso Argentina | ペソ建てトータルリターン |
全リストを表示するには:
py scripts/fetch_cafci.py diario -q | jq '.categorias'
技術上の考慮事項
catalogo が返すデータ
トップレベル:
| フィールド | 説明 |
|---|---|
generated_at | カタログの ISO タイムスタンプ。 |
total_fondos, total_clases | 件数。 |
filtros | enum のカタログ:tipo_renta、region、moneda、benchmark、duration、horizonte、sociedad_gerente、tipo_dinero、tipo_renta_mixta。 |
fondos[] | ファンドの配列。 |
各 fondos[] には、id、nombre、codigo_cnv、estado、objetivo、tipo_dinero、
valuacion、dias_liquidacion、inicio、sociedad_gerente、sociedad_depositaria、
moneda、tipo_renta、region、duration、benchmark、horizonte、clases[] が含まれます。
各 clases[] には、id、nombre、moneda、inversion_minima、honorarios
(ingreso、rescate、transferencia、administracion_gerente、administracion_depositaria、
gasto_ordinario_gestion)、suscripcion、liquidez、rg384、log_abierto、
ticker_bloomberg、ticker_isin が含まれます。
⚠️
honorarios.*は 文字列 です(浮動小数点数ではありません)。比較する前にfloat()でキャストしてください。
diario が返すデータ
{
"fecha_reporte": "2026-06-04",
"categorias": ["Renta Variable Peso Argentina", ...],
"fondos": [
{
"nombre": "Allaria Equity Selection - Clase A",
"categoria": "Renta Variable Peso Argentina",
"moneda": "ARS",
"region": "Arg",
"horizonte": "Cor",
"fecha": "2026-06-04",
"vcp_actual": 1642.85,
"vcp_anterior": 1628.345,
"variacion_dia_pct": 0.891,
"vcp_reexp_pesos": 1642.85,
"variacion_mes_pct": -1.181,
"variacion_ytd_pct": 11.939,
"variacion_12m_pct": 61.542,
"cantidad_cuotapartes": 1276470413.29,
"patrimonio": 2097049572.01,
"market_share": 0.107,
"depositaria": "Banco Comafi S.A.",
"codigo_cnv": "1603"
}
]
}
cartera が返すデータ
{
"fondo_id": 304,
"clase_id": 308,
"fecha_cartera": "15/05/2026",
"composicion": [
{"nombre": "Cta Cte $ Rem Bco Credico", "porcentaje": 17.4},
{"nombre": "Pzo Fi $ Bco Nacion", "porcentaje": 14.8},
...
{"nombre": "Resto de Activos", "porcentaje": 29.2}
]
}
CAFCI が公開するのは 上位約14件の資産 と、まとめられた「Resto de Activos」のみです。 cartera の日付は diario より約2~3週間遅れます。
fondo が返すデータ(一括)
{
"meta": { ...del catalogo... },
"diario": { ...del XLSX... },
"ficha_md": "...markdown defuddle...",
"cartera": { ...composicion... }
}
推奨ワークフロー
A)手数料を含む純資産額の上位 N 件:
top "<categoria>" --limit N→ ファンドの一覧- 各
nombreに対してresolveを実行し、fondo_id, clase_idを取得 catalogoでclases[].nombreが完全一致する項目の手数料を確認
B)ファンドの完全な情報:
resolve "<query>"→ ID を取得fondo FONDO_ID CLASE_ID→ 一括取得
C)ユーザーがクラスを指定していない場合:
buscarまたはresolveを使い、利用可能なクラスを表示します- クラスが1つだけの場合は、そのクラスで自動的に続行します
フラグ
| フラグ | 説明 |
|---|---|
--limit N | 結果数(top)。デフォルト:10 |
--no-cache | カタログ/diario を強制的に再取得します(ローカルキャッシュを無視) |
-o archivo | 出力を JSON または Markdown ファイルに保存します |
-q / --quiet | サイレントモード(ログなしで JSON/Markdown のみを出力) |
レート制限
レート制限は文書化されていません。次を推奨します:
- CAFCI へのリクエスト間隔を最低0.3秒空けてください。
defuddle.md(外部プロキシ)では、タイムアウトが発生した場合はさらに長く待ってください。- 大量のバッチ処理では、最大5の同時実行数でプールを使用してください。
エラー処理
| ステータス | 主な原因 |
|---|---|
| 200 | OK |
403 Route not allowed | 以前の REST API で廃止されたパス |
403(/pb_get) | ブラウザーのヘッダー(Origin、Referer)が不足しています — スクリプトはすでにこれらを送信します |
| 404 | URL の形式が正しくない、または ID が存在しません |
defuddle.md のタイムアウト | 外部プロキシの応答が遅い — 再試行してください |
エンコーディング
有効な UTF-8 です。Windows のコンソールではアクセント記号が ? と表示されますが、UTF-8 ファイルは正しく保存されます(スクリプトでは ensure_ascii=False を使用します)。
スキルの構成
skills/cafci/
├── SKILL.md # Este archivo (guia rapida)
├── references/
│ └── REFERENCE.md # Documentacion completa de los 4 endpoints + cache
└── scripts/
└── fetch_cafci.py # Script principal
詳細なドキュメント: 完全な JSON スキーマ、網羅的なフィールド表、 tipo_renta/region/horizonte/moneda のコード、ローカルキャッシュ、エラー処理、技術的な考慮事項については references/REFERENCE.md を参照してください。
着想元: ferminrp/agent-skills/cafci-fondos-comunes-argentina — この実装は、同じ4つのデータソースの設計を、このリポジトリの SKILL.md / references/REFERENCE.md / scripts/fetch_*.py アーキテクチャに移植しています。