💰

Funciones Financieras

RATE, NPV, IRR, PMT, FV, PV, amortización, bonos y todos los instrumentos financieros disponibles en DAX

Avanzado
🔍
🎯

Para quién son estas funciones

Las funciones financieras de DAX son básicamente las mismas que tiene Excel desde hace décadas — si trabajas en banca, gestión de inversiones, contabilidad o análisis financiero y ya las conoces de Excel, en DAX funcionan exactamente igual. Si no tienes ese background, estas funciones son muy específicas y probablemente no las necesites para dashboards operativos. ¡Pero aquí están todas por si las necesitas! 💰

Clasificación de las 50 funciones por uso:

  • DINERO EN EL TIEMPO (valor actual, valor futuro, VPN, TIR) — para inversiones y proyectos
  • PRÉSTAMOS Y PAGOS (cuota, interés, principal, plazo) — para hipotecas y financiación
  • DEPRECIACIÓN (amortización de activos) — para contabilidad
  • BONOS Y RENTA FIJA (precio, rendimiento, cupón, accrual) — para tesorería y mercados
💡 Equivalencia con Excel
Todas estas funciones tienen equivalente exacto en Excel con el mismo nombre. Si ya sabes usarlas en Excel, en DAX son idénticas. La única diferencia es que en DAX las usas como medidas o columnas calculadas del modelo, no en celdas de hoja.
📈

Valor del dinero en el tiempo

El concepto fundamental: ¿cuánto vale hoy el dinero del futuro?

El concepto central de las finanzas: 1.000 € hoy valen más que 1.000 € en el futuro, porque hoy podrías invertirlos y ganar intereses. Estas funciones calculan esas equivalencias.

PV(<tasa>, <nper>, <pmt>, [<fv>], [<tipo>])
Avanzado
Calcula el VALOR PRESENTE (hoy) de una serie de pagos futuros regulares. Responde a: "¿Cuánto valen hoy esos pagos futuros?"
  • tasa — tasa de interés por período
  • nper — número de períodos
  • pmt — pago por período (negativo si es salida de dinero)
  • fv — valor futuro al final (opcional, por defecto 0)
  • tipo — 0=pago al final del período, 1=al inicio
// ¿Cuánto vale hoy recibir 1.000€ al mes durante 5 años con una tasa del 5% anual?
VP Pagos = PV(0.05/12, 60, -1000)
// Tasa mensual: 5%/12, Períodos: 60 meses, Pago: 1.000€/mes
// Resultado: aprox. 52.991€ (lo que deberías invertir hoy para recibir eso)

// Valor presente de una sola cantidad futura:
VP Unico = PV(0.08, 10, 0, -1000000)
// ¿Cuánto vale hoy 1.000.000€ en 10 años con 8% de rendimiento anual?
// Resultado: aprox. 463.193€
FV(<tasa>, <nper>, <pmt>, [<va>], [<tipo>])
Avanzado
Calcula el VALOR FUTURO de una inversión con pagos periódicos constantes. "Si ahorro X€ al mes durante N años con una tasa Y%, ¿cuánto tendré?"
// Ahorro 500€/mes durante 20 años con rentabilidad del 7% anual:
Ahorro Final = FV(0.07/12, 240, -500)
// Resultado: aprox. 262.481€

// Plan de pensiones — valor al jubilarse:
Pensión Final =
FV(
    'PlanPensión'[TasaAnual]/12,
    'PlanPensión'[Meses],
    -'PlanPensión'[AportaciónMensual]
)
NPV(<tasa>, <valor1>, <valor2>, ...)
Avanzado
Calcula el Valor Presente Neto de una inversión con flujos de caja que ocurren en períodos regulares. Un NPV > 0 indica que el proyecto crea valor.
// Inversión inicial: -100.000€
// Flujos anuales: año 1=20.000, año 2=30.000, año 3=40.000, año 4=50.000
// Tasa de descuento: 10%
VPN Proyecto = NPV(0.10, 20000, 30000, 40000, 50000) - 100000
// Resultado positivo = proyecto viable, negativo = destruye valor
XNPV(<tasa>, <valores>, <fechas>)
Avanzado
Como NPV pero con fechas irregulares — los flujos de caja no ocurren necesariamente en períodos regulares. Más realista para proyectos reales.
// Tabla 'FlujosProyecto' con columnas Fecha e Importe:
VPN Real =
XNPV(
    0.10,  -- tasa de descuento
    'FlujosProyecto'[Importe],
    'FlujosProyecto'[Fecha]
)
📊

Tasas y rendimientos

RATE(<nper>, <pmt>, <va>, [<vf>], [<tipo>], [<estimar>])
Avanzado
Calcula la tasa de interés por período dada una serie de pagos. Responde a: "Si me ofrecen un préstamo con estas condiciones, ¿cuál es la tasa real?"
// Préstamo de 10.000€ a pagar en 36 cuotas de 320€:
Tasa Mensual = RATE(36, -320, 10000)
Tasa Anual = RATE(36, -320, 10000) * 12
// Resultado: aprox. 1.07% mensual = 12.84% anual (TAE aproximada)
IRR(<valores>, [<estimar>])
XIRR(<valores>, <fechas>, [<estimar>])
Avanzado
IRR: Tasa Interna de Retorno para flujos en períodos regulares
XIRR: TIR para flujos con fechas irregulares
Una inversión es atractiva cuando TIR > tasa de descuento (coste del capital).
// TIR de un proyecto con flujos anuales:
// Año 0: -50.000 (inversión inicial)
// Años 1-5: +15.000, +20.000, +25.000, +20.000, +15.000
TIR Proyecto = IRR({-50000, 15000, 20000, 25000, 20000, 15000})
// Si TIR > coste del capital → proyecto viable

// TIR con fechas reales:
TIR Real = XIRR('Flujos'[Importe], 'Flujos'[Fecha])

Otras funciones de rendimiento:

  • YIELDDISC — rendimiento de un bono con descuento (letra del tesoro)
  • YIELDMAT — rendimiento a vencimiento con interés en vencimiento
🏠

Préstamos y pagos — Hipotecas y financiación

PMT(<tasa>, <nper>, <va>, [<vf>], [<tipo>])
Avanzado
Calcula la CUOTA (pago periódico) de un préstamo. La función más usada del grupo — cualquier tabla de amortización empieza aquí.
// Hipoteca de 200.000€ a 30 años al 3.5% anual:
Cuota Mensual = ABS(PMT(0.035/12, 360, 200000))
// ABS porque PMT devuelve valor negativo (es un pago)
// Resultado: aprox. 897€/mes

// Cuota dinámica (con parámetros del modelo):
Cuota Hipoteca =
ABS(PMT(
    'Hipoteca'[TasaAnual] / 12,  -- tasa mensual
    'Hipoteca'[Años] * 12,        -- número de cuotas
    'Hipoteca'[Capital]           -- capital prestado
))
IPMT(<tasa>, <período>, <nper>, <va>)
PPMT(<tasa>, <período>, <nper>, <va>)
Avanzado
IPMT: la parte de INTERÉS de una cuota específica
PPMT: la parte de CAPITAL (principal) de una cuota específica
Juntas permiten construir una tabla de amortización completa.
// Para el mes número N de la hipoteca:
Intereses Cuota N = ABS(IPMT(0.035/12, [NúmeroCuota], 360, 200000))
Principal Cuota N = ABS(PPMT(0.035/12, [NúmeroCuota], 360, 200000))
// Cuota N = Intereses N + Principal N (siempre igual a PMT)

// Tabla de amortización completa (tabla calculada):
Amortización =
ADDCOLUMNS(
    GENERATESERIES(1, 360, 1),  -- 360 meses
    "Cuota Total", ABS(PMT(0.035/12, 360, 200000)),
    "Interés", ABS(IPMT(0.035/12, [Value], 360, 200000)),
    "Principal", ABS(PPMT(0.035/12, [Value], 360, 200000))
)

Otras funciones de préstamos:

  • NPER(<tasa>, <pmt>, <va>) — calcula el número de períodos necesarios para pagar un préstamo
  • CUMIPMT(<tasa>, <nper>, <va>, <inicio>, <fin>, <tipo>) — intereses acumulados entre dos períodos
  • CUMPRINC(<tasa>, <nper>, <va>, <inicio>, <fin>, <tipo>) — principal amortizado entre dos períodos
🏭

Depreciación y amortización de activos

FUNCIÓN MÉTODO DESCRIPCIÓN
SLN Línea recta Deprecia igual cada año
SYD Suma de dígitos Más depreciación al inicio
DB Saldo decreciente fijo % fijo sobre valor residual
DDB Doble saldo decreciente Como DB pero el doble de rápido
VDB Saldo decreciente variable El más flexible, permite cambiar métodos
SLN(<costo>, <valor_residual>, <vida>)
Avanzado
Depreciación en línea recta — el mismo importe cada año.
// Maquinaria: 50.000€, valor residual 5.000€, vida útil 10 años:
Depreciación Anual = SLN(50000, 5000, 10)
// (50.000 - 5.000) / 10 = 4.500€ por año
DB(<costo>, <valor_residual>, <vida>, <período>, [<mes>])
Avanzado
Depreciación por saldo decreciente — mayor al inicio, menor al final. Usa un porcentaje fijo aplicado al valor en libros.
// Mismo activo, depreciación del primer año:
Dep Año 1 = DB(50000, 5000, 10, 1)
VDB(<costo>, <valor_residual>, <vida>, <inicio>, <fin>, [<factor>], [<sin_cambio>])
Avanzado
Depreciación en doble saldo decreciente con posibilidad de cambiar a línea recta. El más completo y el que usan los sistemas contables profesionales.
📜

Bonos y letras del Tesoro — Renta fija

Estas funciones son específicas para análisis de renta fija — bonos, letras del tesoro, pagarés. Si trabajas en tesorería corporativa, gestión de activos o análisis de deuda pública, estas son tus funciones. Si tu ámbito es BI empresarial operativo, probablemente no las necesites.

FUNCIÓN DESCRIPCIÓN
ACCRINT Interés acumulado de un valor con pagos de interés periódicos
ACCRINTM Interés acumulado de un valor que paga interés al vencimiento
RECEIVED Importe recibido al vencimiento de un valor totalmente invertido
DISC Tasa de descuento de un valor
INTRATE Tipo de interés para un valor totalmente invertido
// Ejemplo ACCRINT — interés acumulado de un bono:
// Bono: emitido el 1/1/2024, primer cupón el 1/7/2024
// Liquidación: 31/3/2024, tasa 5%, valor nominal 1.000€, semestral
Interés Acumulado =
ACCRINT(
    DATE(2024,1,1),   -- emisión
    DATE(2024,7,1),   -- primer interés
    DATE(2024,3,31),  -- liquidación (hoy)
    0.05,             -- tasa del 5%
    1000,             -- valor nominal
    2                 -- frecuencia semestral
)
// Resultado: interés acumulado desde emisión hasta liquidación
🎫

Cupones de bonos

FUNCIÓN DESCRIPCIÓN
COUPDAYBS Días desde inicio del período de cupón hasta liquidación
COUPDAYS Días en el período del cupón actual
COUPDAYSNC Días desde liquidación hasta el próximo cupón
COUPNCD Fecha del próximo cupón después de la liquidación
COUPNUM Número de cupones pendientes entre liquidación y vencimiento
COUPPCD Fecha del último cupón antes de la liquidación
// Ejemplo COUPNUM — cuántos cupones quedan:
Cupones Restantes = COUPNUM(TODAY(), DATE(2030,1,1), 2)
// Bono con vencimiento 1/1/2030, semestral: cuántos cupones quedan hasta hoy
💵

Precio y rendimiento

FUNCIÓN DESCRIPCIÓN
PRICE Precio por 100€ de valor nominal de un bono con pagos periódicos
PRICEDISC Precio de un valor con descuento (sin cupones)
PRICEMAT Precio de un valor que paga interés al vencimiento
YIELD Rendimiento de un bono con pagos periódicos
// Ejemplo PRICE — precio de un bono:
// Bono al 6% anual con pagos semestrales, rendimiento de mercado 7%, 5 años
Precio Bono =
PRICE(
    TODAY(),          -- liquidación
    DATE(2029,1,1),   -- vencimiento
    0.06,             -- tasa del cupón
    0.07,             -- rendimiento de mercado
    100,              -- valor de rescate
    2                 -- frecuencia semestral
)
// Precio < 100 porque el rendimiento de mercado (7%) > tasa del cupón (6%)
🔄

Conversiones de tasa

EFFECT(<tasa_nominal>, <npery>)
NOMINAL(<tasa_efectiva>, <npery>)
Avanzado
EFFECT: Convierte tasa nominal a tasa efectiva anual (TEA/TAE)
NOMINAL: La inversa — de tasa efectiva a nominal
// Un depósito al 5% nominal capitalizado mensualmente:
TAE = EFFECT(0.05, 12)
// Resultado: 5.116% (la rentabilidad real incluyendo el efecto de la capitalización compuesta)

// Si la TAE es 5.116%, ¿cuál es la tasa nominal mensualizada?
Tasa Nominal = NOMINAL(0.05116, 12)
// Resultado: 5% (la tasa nominal original)
DOLLARDE(<precio_fraccionario>, <fracción>)
DOLLARFR(<precio_decimal>, <fracción>)
Avanzado
Convierten precios entre formato fraccionario (usado en mercados de bonos de EE.UU.) y decimal.
DOLLARDE: fraccionario a decimal
DOLLARFR: decimal a fraccionario
// En mercados de bonos USA, los precios se cotizan en 32avos:
// "100 y 16/32" se escribe como 100.16 en ese formato
DOLLARDE(100.16, 32)   -- 100.5 (el decimal real: 100 + 16/32 = 100.5)
DOLLARFR(100.5, 32)    -- 100.16 (de vuelta a formato de bonos)
🏆

Casos de uso reales en Power BI

Patrón 1 — Dashboard de hipoteca interactivo

// Con parámetros What-If para capital, tasa y plazo:
Cuota Mensual =
ABS(PMT('Tasa'[Valor]/12, 'Plazo'[Valor]*12, 'Capital'[Valor]))

Total Intereses =
([Cuota Mensual] * 'Plazo'[Valor] * 12) - 'Capital'[Valor]

Coste Total Hipoteca = 'Capital'[Valor] + [Total Intereses]

Patrón 2 — Análisis de inversión

VAN = XNPV('TasaDescuento'[Valor], 'Flujos'[Importe], 'Flujos'[Fecha])

TIR = XIRR('Flujos'[Importe], 'Flujos'[Fecha])

Decisión =
IF(
    [VAN] > 0 && [TIR] > 'TasaDescuento'[Valor],
    "✅ Inversión viable",
    "❌ No viable"
)

Patrón 3 — Tabla de amortización dinámica

// Tabla calculada con toda la amortización de una hipoteca:
Plan Amortización =
VAR Capital = 200000
VAR Tasa = 0.035/12
VAR NPer = 360
VAR Cuota = ABS(PMT(Tasa, NPer, Capital))
RETURN
ADDCOLUMNS(
    GENERATESERIES(1, NPer, 1),
    "Mes", [Value],
    "Cuota", Cuota,
    "Interés", ABS(IPMT(Tasa, [Value], NPer, Capital)),
    "Principal", ABS(PPMT(Tasa, [Value], NPer, Capital))
)
🚀 Siguiente paso
¡Las finanzas cuantitativas de DAX ya son tuyas! Cerramos la guía DAX con la categoría más especializada: las funciones Padre-Hijo para jerarquías irregulares como organigramas o estructuras de cuentas contables. 🚀