CNV — Composición de Cartera de FCI
Composición semanal de cartera de los Fondos Comunes de Inversión argentinos (artículo 34, Capítulo XI de las Normas CNV): por fondo y semana, los instrumentos que tiene (especie) con su porcentaje del patrimonio neto, agrupados por clase de activo, moneda y país, más el patrimonio neto total del fondo.
Qué incluye
- 21 columnas documentadas
- Formato Parquet y CSV
- Cobertura Snapshot semanal desde 2026-05
- Actualización semanal
- Acceso por descarga, API y MCP
- Schema versionado y trazable a la fuente
Casos de uso
- ¿Cuáles son las 10 mayores tenencias del FCI X al último snapshot?
- ¿Qué FCI tienen exposición a ON YPF y cuánto representa de su cartera?
- ¿Cómo se reparte la cartera del fondo X por clase de activo?
- ¿Qué fondos tienen mayor concentración en plazos fijos?
- ¿Qué exposición tiene toda la industria a un emisor dado?
- ¿Cómo cambió la composición sectorial de un fondo semana a semana?
Columnas21
Limitaciones conocidas
Pueden invalidar un análisis ingenuo. Documentadas como parte del control de calidad.
Dos columnas de porcentaje: pct_pn vs pct_pn_reexp
Las filas instrumento traen pct_pn (columna CNV % del P.N.,
calculado en la moneda de la sección). Las filas categoria traen
pct_pn_reexp (columna CNV % del P.N.(2), calculado sobre montos
reexpresados en la moneda del fondo). Ambas en decimal-fraction
(0.05 = 5%). La columna que no aplica al tipo de fila es NULL.
Filtrar siempre por tipo_fila
instrumento para analizar tenencias; categoria para el breakdown
por clase de activo. Mezclar ambas en una suma produce doble conteo:
las categorías ya agregan los instrumentos que las componen.
pct_desde_monto: fondos cerrados/estructurados normalizados
Para ~2% de los fondos (cerrados/FCIC, estructurados) CNV publica la
cartera en MONTOS ABSOLUTOS en pesos en vez de porcentajes (mismo header
"% del P.N."). Almanac lo detecta y normaliza por el total para recuperar
el % real, así que pct_pn/pct_pn_reexp son decimales válidos (suman a
1.0) en TODOS los fondos. pct_desde_monto = TRUE marca estos casos para
provenance: el % es derivado (no publicado directo) y pn_total se
reconstruyó del total de la cartera (CNV mostraba un factor 1, no el PN).
Lag de publicación ~2 semanas — el último snapshot NO es de esta semana
CNV publica la cartera con ~2 semanas de retraso. El MAX(snapshot_date)
disponible suele estar 2-3 semanas atrás de hoy — es lo esperado, no un
dato faltante. Para "la cartera más reciente" usá siempre
MAX(snapshot_date), nunca la fecha de hoy ni el último viernes.
snapshot_date es el cierre semanal real, no siempre un viernes
snapshot_date proviene del campo "Cartera al" publicado por el fondo:
habitualmente un viernes, pero los feriados lo corren al último día
hábil (ej. 2026-04-30, jueves, por el 1° de mayo). No asumir que toda
fecha es viernes. Es idempotente: re-correr sobre una semana ya
guardada no emite filas nuevas.
Fondos sin cartera
Algunos fondos no publican la pestaña de composición del art. 34 (fondos cerrados, en liquidación, o que aún no la habilitaron). Estos fondos quedan fuera del snapshot — su ausencia no implica cartera vacía, sino dato no disponible.
Multi-moneda: pn_total en moneda_pn, no siempre pesos
pn_total está reexpresado a moneda_pn (la moneda del fondo:
ARS, USD, etc.). moneda_seccion indica la moneda de cada sección
de la cartera. Para consolidar AUM en pesos de fondos en USD se
requiere el tipo de cambio del día — no está en este dataset.
Emisor no parseado — detalle es especie cruda
detalle contiene la descripción de la especie tal como la publica
CNV (ej. "ON YPF C 17", "Letra del Tesoro 14/06"). Almanac no parsea
emisor, ISIN, ni país fino: esa derivación es una capa gold futura.
Para buscar por emisor usar detalle ILIKE '%EMISOR%' como
aproximación — puede incluir falsos positivos.
Texto con acentos: ILIKE es accent-sensitive
Los valores de texto traen acentos (ej. "Dólares", "Información"). Un
ILIKE '%dolar%' NO matchea "Dólares" (ó≠o). Para encontrar el valor
exacto a filtrar usá data_distinct_values (busca accent-insensitive) en
vez de adivinar el ILIKE, o respetá los acentos en el patrón.
país suele venir NULL
CNV no puebla país para muchos fondos (queda NULL en todas sus filas).
Cuando país IS NULL no se puede separar emisor local vs cross-border
desde el dato — es ausencia en la fuente, no un filtro que devuelve vacío.
El join con cuotapartes-diarias es por NOMBRE, no por código
codigo_fondo es el ID interno del sitio CNV (Lfc, ej. 82276), un
espacio de identificadores DISTINTO al codigo_cnv que reporta CAFCI
en cnv.fci.cuotapartes-diarias (ej. el mismo fondo es Lfc 82276 acá y
codigo_cnv 1152 allá). Joinear codigo_fondo = codigo_cnv da CERO
matches. El puente práctico es por denominacion de fondo: carteras
es nivel fondo ("Balanz Capital Money Market"); cuotapartes es nivel
fondo+clase ("Balanz Capital Money Market - Clase A") — cortar el
sufijo " - Clase ..." antes de comparar. Para ponderar por patrimonio
NO hace falta el join: pn_total ya viene en este dataset.