Dividend yield en Google Sheets: dos soluciones
GOOGLEFINANCE no ofrece dividend yield en Google Sheets. Conoce dos fórmulas: un rendimiento trailing basado en dividendos pagados y una cifra forward.
Para calcular el dividend yield en Google Sheets, hay que construir el dato manualmente. GOOGLEFINANCE devuelve el precio, el EPS, el PE, la capitalización de mercado y una larga lista de otros campos de cotización, pero no incluye el dividend yield: =GOOGLEFINANCE("AAPL","yield") devuelve #N/A, y ninguna otra forma de escribir el término funciona. Hay dos alternativas fiables. Calcular un rendimiento trailing a partir de una columna de dividendos que mantenga en la hoja, o introducir en una celda la tasa forward declarada y dividir.
Por qué GOOGLEFINANCE no tiene un atributo de rendimiento por dividendo
Los atributos de la función pertenecen a dos familias. Están los campos de cotización en tiempo real, que se obtienen con dos argumentos: price, volume, pe, eps, marketcap, high52, changepct y alrededor de una docena más. Luego están los campos de precios históricos, que se obtienen con una fecha o un rango de fechas: open, high, low, close, volume. Los registros de dividendos no pertenecen a ninguna de las dos familias. Ningún atributo devuelve un historial de pagos o distribuciones. Por eso, el numerador del rendimiento debe obtenerse fuera de la función.
El rendimiento por dividendo es el dividendo anual por acción dividido entre el precio por acción, expresado como porcentaje. La parte del precio ocupa una celda. La parte del dividendo requiere el trabajo. Si el concepto es nuevo para usted, qué mide realmente el rendimiento por dividendo lo explica antes de abordar la mecánica de la hoja de cálculo, y cómo calcular el rendimiento por dividendo muestra las operaciones.
Este es el material de partida: cada pago realizado por una empresa pagadora durante aproximadamente los últimos tres años. Cada fila muestra una fecha ex-dividendo —la fecha a partir de la cual quien compra la acción ya no recibe el próximo pago— junto con el efectivo pagado por acción.
El SQL exacto detrás de cada cifra
SELECT
toString(ex_dividend_date) AS ex_date,
formatDateTime(ex_dividend_date, '%b %e, %Y') AS ex_date_label,
round(toFloat64(payment), 4) AS cash_amount,
round(toFloat64(payment) * 4, 4) AS annualized_run_rate
FROM
(
SELECT
ex_dividend_date,
max(cash_amount) AS payment
FROM global_markets.stocks_dividends
WHERE ticker = 'KO'
AND ex_dividend_date >= today() - 1120
AND ex_dividend_date <= today()
GROUP BY ex_dividend_date
)
ORDER BY ex_dividend_dateCoca-Cola pagó $0.46 por acción el Sep 14, 2023 y $0.53 el Jun 15, 2026, con 12 pagos durante el periodo. La segunda línea del gráfico muestra cada pago multiplicado por cuatro: la tasa anual implícita si ese pago trimestral se repitiera durante todo el año. La tasa sube una vez al año y permanece estable entre esos aumentos. Esa variación es la causa de la mayoría de los errores al calcular rendimientos en hojas de cálculo. El historial completo está en el historial de dividendos de Coca-Cola.
Dos formas de calcular el rendimiento por dividendos en Google Sheets
El primer método calcula un rendimiento histórico a partir de una columna propia. Coloca las fechas ex-dividendo en la columna A y el efectivo por acción en la columna B, con una fila por cada pago. Después:
- Total de los últimos doce meses:
=SUMIFS($B$2:$B,$A$2:$A,">="&EDATE(TODAY(),-12),$A$2:$A,"<="&TODAY()) - Precio actual:
=GOOGLEFINANCE("KO","price") - Rendimiento histórico, con la celda configurada como porcentaje:
=SUMIFS($B$2:$B,$A$2:$A,">="&EDATE(TODAY(),-12),$A$2:$A,"<="&TODAY())/GOOGLEFINANCE("KO","price") - Número de pagos en el mismo periodo, como comprobación:
=COUNTIFS($A$2:$A,">="&EDATE(TODAY(),-12),$A$2:$A,"<="&TODAY())
EDATE(TODAY(),-12) corresponde al mismo día calendario de hace doce meses, por lo que el periodo se actualiza automáticamente. Configura la celda del rendimiento como porcentaje en lugar de multiplicar por 100 dentro de la fórmula. Una hoja que hace ambas cosas muestra 290% cuando en realidad significa 2.9%.
El segundo método calcula un rendimiento proyectado a partir de la tasa declarada. Coloca en D2 la tasa por acción declarada más recientemente y en E2 el número de pagos anuales:
- Rendimiento proyectado:
=D2*E2/GOOGLEFINANCE("KO","price")
Nada automatiza D2. El consejo de administración declara una tasa, y tú la lees en el anuncio y la introduces manualmente. Esa es la versión correcta de un rendimiento proyectado. La diferencia entre los dos numeradores es el tema central de rendimiento histórico frente a rendimiento proyectado por dividendos.
Dos notas adicionales sobre la función. Las cotizaciones tienen un retraso de hasta 20 minutos, y el retraso de cada celda puede consultarse con =GOOGLEFINANCE("KO","datadelay"). Además, una consulta histórica devuelve un arreglo de dos por dos en lugar de un número. Por eso debes envolverla: =INDEX(GOOGLEFINANCE("KO","close",DATE(2026,6,30)),2,2) devuelve únicamente el precio de cierre.
El paso de anualización y el error que oculta
La fórmula defectuosa más común en una hoja de dividendos multiplica el último pago por cuatro. Funciona hasta que la empresa aumenta el dividendo. Después del aumento, tres de los cuatro pagos realizados durante los últimos doce meses correspondieron a la tasa anterior. Multiplicar por cuatro la nueva tasa sobreestima lo que realmente recibió un accionista.
El panel siguiente dimensiona esa diferencia para ocho grandes pagadoras: cuánto pagó cada empresa por acción durante los últimos doce meses, junto con cuatro veces su pago más reciente.
El SQL exacto detrás de cada cifra
SELECT
ticker,
round(toFloat64(sum(cash_amount)), 4) AS paid_last_12m,
round(toFloat64(argMax(cash_amount, ex_dividend_date)) * 4, 4) AS latest_x4,
round((toFloat64(argMax(cash_amount, ex_dividend_date)) * 4
/ toFloat64(sum(cash_amount)) - 1) * 100, 2) AS gap_pct,
count() AS payment_count
FROM
(
SELECT
ticker,
ex_dividend_date,
max(cash_amount) AS cash_amount
FROM global_markets.stocks_dividends
WHERE ticker IN ('KO', 'JNJ', 'PG', 'AAPL', 'MSFT', 'CVX', 'ABBV', 'IBM')
AND ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
GROUP BY ticker, ex_dividend_date
)
GROUP BY ticker
ORDER BY gap_pct DESCOrdenada por la diferencia, JNJ ocupa el primer lugar. Realizó 4 pagos que sumaron $5.24 por acción durante el periodo, mientras que cuatro veces su pago más reciente equivale a $5.36, 2.29% más. En una acción con un rendimiento cercano al 3%, un error de ese tamaño modifica la cifra publicada en una décima de punto porcentual o más. Eso basta para cambiar el orden de una lista ordenada.
La columna del número de pagos es el segundo argumento a favor de usar SUMIFS en lugar de una multiplicación. Un periodo móvil de doce meses no siempre contiene exactamente cuatro pagos trimestrales. Las fechas ex-dividendo se desplazan algunos días cada año, y un periodo puede incluir tres o cinco pagos. COUNTIFS indica cuál ocurrió antes de que confíes en el total.
Los dividendos extraordinarios no representan una tasa recurrente
El otro error clásico consiste en tratar un pago único como parte del calendario habitual. Una empresa distribuye de una sola vez un excedente de efectivo, SUMIFS lo incorpora al total de los últimos doce meses y la celda de rendimiento se dispara. Doce meses después, vuelve discretamente a su nivel anterior.
Estos pagos no son excepcionales. El panel cuenta, mes a mes, todos los pagos del mercado estadounidense que el calendario de dividendos marca como únicos, en lugar de formar parte de un calendario recurrente.
El SQL exacto detrás de cada cifra
SELECT
toString(month_start) AS month,
formatDateTime(month_start, '%b %Y') AS month_label,
countIf(freq = '0') AS one_time_payments,
round(countIf(freq = '0') / count() * 100, 2) AS one_time_share_pct
FROM
(
SELECT
toStartOfMonth(ex_dividend_date) AS month_start,
ticker,
ex_dividend_date,
ifNull(toString(any(frequency)), 'na') AS freq
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= toStartOfMonth(today() - 730)
AND ex_dividend_date < toStartOfMonth(today())
GROUP BY month_start, ticker, ex_dividend_date
)
GROUP BY month_start
ORDER BY monthEn Jul 2026, el mes completo más reciente, 111 pagos estaban marcados como únicos. Representaron 2.91% de todos los pagos cuya fecha ex-dividendo cayó ese mes. Una suma móvil de doce meses incluirá uno de ellos tarde o temprano.
La solución es añadir una columna de clasificación. Coloca regular o special en la columna C junto a cada pago y después incorpórala como criterio:
=SUMIFS($B$2:$B,$A$2:$A,">="&EDATE(TODAY(),-12),$A$2:$A,"<="&TODAY(),$C$2:$C,"regular")
Conserva las filas de pagos extraordinarios en la hoja. Representan efectivo real y deben formar parte del registro de lo recibido. No deben incluirse en una cifra que pretenda describir una tasa recurrente.
Qué muestra la celda terminada
Un trailing yield calculado de esta forma tiene dos componentes, y cada uno se mueve con una frecuencia distinta. El total de dividendos cambia algunas veces al año, cuando un pago entra o sale de la ventana de cálculo o se anuncia un aumento. El precio cambia en cada sesión. El panel siguiente ejecuta el cálculo terminado mes a mes durante los últimos dos años para el mismo emisor.
El SQL exacto detrás de cada cifra
WITH
month_close AS
(
SELECT
toLastDayOfMonth(date) AS month_end,
argMax(close, date) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'KO'
AND date >= toStartOfMonth(today() - 730)
AND date < toStartOfMonth(today())
GROUP BY month_end
),
payouts AS
(
SELECT
ex_dividend_date,
max(cash_amount) AS cash_amount
FROM global_markets.stocks_dividends
WHERE ticker = 'KO'
AND ex_dividend_date >= today() - 1160
AND ex_dividend_date <= today()
GROUP BY ex_dividend_date
)
SELECT
toString(month_end) AS month,
formatDateTime(month_end, '%b %Y') AS month_label,
round(ttm, 4) AS ttm_dividends,
round(ttm / close_px * 100, 2) AS trailing_yield_pct
FROM
(
SELECT
m.month_end AS month_end,
toFloat64(any(m.close_px)) AS close_px,
toFloat64(sumIf(p.cash_amount,
(p.ex_dividend_date > subtractYears(m.month_end, 1))
AND (p.ex_dividend_date <= m.month_end))) AS ttm
FROM month_close AS m
CROSS JOIN payouts AS p
GROUP BY m.month_end
)
ORDER BY monthLa línea de dividendos avanza por escalones y después permanece plana. La línea de yield cambia cada mes durante el mismo periodo. En Aug 2024, el total acumulado se situó en $1.89 por acción, frente a un yield de 2.61%; en Jul 2026, el total se situó en $2.08 y el yield marcó 2.37%. Una celda de yield que cambia aunque nadie haya modificado la columna de dividendos está haciendo lo que hace un trailing yield: se movió el denominador.
Una vez que el cálculo funciona para un ticker, copia el bloque hacia abajo para cada posición y pondera los resultados por valor de mercado en lugar de promediar los yields. Ese paso corresponde al dividend yield ponderado de la cartera.
Preguntas frecuentes
¿GOOGLEFINANCE tiene un atributo de rendimiento por dividendo?
No. La función incluye campos de cotizaciones en tiempo real y precios históricos, pero ninguno corresponde a un dividendo o a un rendimiento. =GOOGLEFINANCE("KO","yield") devuelve #N/A. En una hoja de cálculo, el rendimiento se calcula a partir de un dividendo que usted proporciona y un precio que devuelve la función.
¿Cómo calculo el rendimiento por dividendo de los últimos doce meses en Google Sheets?
Mantenga las fechas ex-dividendo en una columna y el efectivo por acción en la siguiente. Sume los últimos doce meses con =SUMIFS($B$2:$B,$A$2:$A,">="&EDATE(TODAY(),-12),$A$2:$A,"<="&TODAY()), divida ese total entre =GOOGLEFINANCE("KO","price") y dé formato de porcentaje a la celda del resultado.
¿Por qué mi rendimiento por dividendo difiere del que aparece en la página de mi bróker?
La causa más frecuente es el numerador. Una página que muestra un rendimiento forward anualiza la tasa declarada vigente, mientras que un SUMIFS de doce meses devuelve una cifra trailing que todavía incluye pagos realizados con la tasa anterior. Un dividendo extraordinario dentro del periodo amplía aún más la diferencia.
¿Cómo excluyo un dividendo extraordinario del rendimiento?
Agregue una columna que identifique cada pago como regular o extraordinario. Después, incluya esa columna como un par de criterios adicional en SUMIFS. El pago extraordinario permanece en la hoja, pero queda fuera del cálculo del rendimiento.
¿Puede Google Sheets obtener automáticamente el historial de dividendos?
No mediante GOOGLEFINANCE. La columna de dividendos se mantiene manualmente o se pega desde una fuente que publica los registros de pagos. Ese es el único paso manual en ambos métodos de esta página.
Cada panel incluye el SQL que lo generó. Abra uno para ver exactamente cómo se calculó cada total. Las mismas preguntas pueden formularse en lenguaje sencillo en el terminal de Strasmore.