Saltar al contenido principal

Modelar una empresa pública en Beancount

Convierte el balance general y el estado de resultados de una empresa pública en un libro mayor balanceado de Beancount utilizando las convenciones de Open Ledger, con un trimestre trabajado de PepsiCo y una plantilla inicial.

Convierte el balance general y el estado de resultados de una presentación en un libro mayor balanceado de Beancount con las mismas convenciones que usa cada empresa en Open Ledger.

Esta guía recorre un trimestre real de PepsiCo de principio a fin. Los números coinciden con el comunicado de resultados del segundo trimestre de 2026 de PepsiCo. Todas las cifras están en millones de dólares estadounidenses (MUSD).

Lo que obtienes

Terminas con un libro mayor que valida el balance general al final del período y registra el estado de resultados como una sola transacción de suma cero. bea check pasa. Los informes de estado de resultados y balance general coinciden con los totales publicados en la presentación. El mismo patrón impulsa a cada empresa en Open Ledger y cada artículo bajo la etiqueta open-ledger.

Elige la unidad y el año fiscal

Establece operating_currency en una unidad de millones que coincida con la presentación. Usa MUSD para informes en dólares estadounidenses. Usa MEUR, MJPY u otra forma M<CCY> cuando la presentación informe en esa moneda.

Un MUSD equivale a USD 1,000,000. Un saldo de 25998 MUSD significa aproximadamente $26.0 mil millones en efectivo.

Coloca cada período fiscal en su propio archivo dentro de un directorio por año. Nombra los archivos anuales FY2025/FY2025.bean. Nombra los archivos trimestrales FY2026/FY2026Q2.bean. Inclúyelos desde main.bean en orden del más antiguo al más reciente.

Abre el catálogo de cuentas

main.bean contiene opciones, aperturas de cuentas e inclusiones. No contiene saldos ni asientos de ingresos.

Abre cada cuenta el 1970-01-01 en MUSD. Mantén los nombres centrales idénticos entre empresas para que los lectores puedan comparar un libro mayor con otro.

option "title" "PepsiCo, Inc. Financial Statements FY2021-FY2026Q2"
option "operating_currency" "MUSD"
 
; Currency convention:
;   MUSD = Millions of USD (custom unit for readability)
;   1 MUSD = USD 1,000,000
;   Example: "1000 MUSD" means USD 1,000,000,000
;   All figures sourced from PepsiCo, Inc. annual reports / filings.
;   Fiscal years end Dec 31 (52/53-week year; Dec 31 shown).
 
; ── ASSETS ──────────────────────────────────────────────────────────────────
1970-01-01 open Assets:Current:Cash                        MUSD
1970-01-01 open Assets:Current:ShortTermInvestments        MUSD
1970-01-01 open Assets:Current:AccountsReceivable          MUSD
1970-01-01 open Assets:Current:Other                       MUSD
1970-01-01 open Assets:NonCurrent:PropertyPlantEquipment   MUSD
1970-01-01 open Assets:NonCurrent:Goodwill                 MUSD
1970-01-01 open Assets:NonCurrent:IntangibleAssets         MUSD
1970-01-01 open Assets:NonCurrent:Other                    MUSD
 
; ── LIABILITIES ─────────────────────────────────────────────────────────────
1970-01-01 open Liabilities:Current:AccountsPayable        MUSD
1970-01-01 open Liabilities:Current:ShortTermDebt          MUSD
1970-01-01 open Liabilities:Current:DeferredRevenue        MUSD
1970-01-01 open Liabilities:Current:Other                  MUSD
1970-01-01 open Liabilities:NonCurrent:LongTermDebt        MUSD
1970-01-01 open Liabilities:NonCurrent:Other               MUSD
 
; ── EQUITY ──────────────────────────────────────────────────────────────────
1970-01-01 open Equity:OpeningBalance                      MUSD  ; FY2021 initialization
1970-01-01 open Equity:Adjustments                         MUSD  ; year-over-year BS differences
1970-01-01 open Equity:CommonStockAndAPIC                  MUSD
1970-01-01 open Equity:RetainedEarnings                    MUSD
1970-01-01 open Equity:OtherComprehensiveIncome            MUSD
 
; ── INCOME ──────────────────────────────────────────────────────────────────
1970-01-01 open Income:Revenue                             MUSD
1970-01-01 open Income:OtherNet                            MUSD  ; net other income (interest income, etc.)
 
; ── EXPENSES ────────────────────────────────────────────────────────────────
1970-01-01 open Expenses:CostOfRevenue                     MUSD
1970-01-01 open Expenses:ResearchAndDevelopment            MUSD
1970-01-01 open Expenses:SellingGeneralAdministrative      MUSD
1970-01-01 open Expenses:OtherNet                          MUSD
1970-01-01 open Expenses:IncomeTax                         MUSD
 
include "FY2026/FY2026Q2.bean"

Assets:Current:Other y las demás hojas …:Other absorben los residuales. Las partidas modeladas más ese residual siempre concilian con el subtotal de la presentación.

Valida el balance general con pad y balance

Haz un pad desde Equity:Adjustments el día antes del cierre del período. Valida el valor de la presentación en la fecha de cierre. Escribe un par de pad y balance por cuenta.

Los activos tienen saldos positivos. Los pasivos y el patrimonio tienen saldos negativos. Las líneas residuales mantienen un comentario que nombra el subtotal de la presentación con el que concilian.

2026-06-29 pad Assets:Current:Cash                        Equity:Adjustments
2026-06-30 balance Assets:Current:Cash                     25998 MUSD
 
2026-06-29 pad Assets:Current:ShortTermInvestments        Equity:Adjustments
2026-06-30 balance Assets:Current:ShortTermInvestments     15600 MUSD
 
2026-06-29 pad Assets:Current:AccountsReceivable          Equity:Adjustments
2026-06-30 balance Assets:Current:AccountsReceivable       10398 MUSD
 
2026-06-29 pad Assets:Current:Other                       Equity:Adjustments
2026-06-30 balance Assets:Current:Other                    15604 MUSD  ; current assets residual (67600 total current)
 
2026-06-29 pad Liabilities:Current:AccountsPayable        Equity:Adjustments
2026-06-30 balance Liabilities:Current:AccountsPayable     -8318 MUSD

Cubre todo el estado de la misma manera: cada cuenta de activo y pasivo, más Equity:CommonStockAndAPIC, Equity:RetainedEarnings y Equity:OtherComprehensiveIncome. Inicia cada archivo de período con un encabezado que nombre la empresa, el período, la unidad y la URL de la fuente.

Registra el estado de resultados como una sola transacción

Fecha la transacción al final del período fiscal. Los asientos de ingresos son negativos. Los asientos de gastos son positivos. Equity:Adjustments absorbe el ingreso neto para que la entrada sume cero.

Coloca la verificación aritmética en un comentario encima de la transacción. La verificación debe dar cero antes de confiar en la entrada.

; Check: -23000 + 10350 + 400 + 8740 + 230 + 688 + 2592 = 0 ✓
 
2026-06-30 * "PepsiCo, Inc." "FY2026Q2 Income Statement"
  Income:Revenue                         -23000 MUSD
  Expenses:CostOfRevenue                   10350 MUSD
  Expenses:ResearchAndDevelopment          400 MUSD
  Expenses:SellingGeneralAdministrative    8740 MUSD
  Expenses:OtherNet                        230 MUSD
  Expenses:IncomeTax                       688 MUSD
  Equity:Adjustments                      2592 MUSD  ; net income offset

Los ingresos son 23,000 MUSD. El ingreso neto es 2,592 MUSD. Cuando otros ingresos netos sean positivos, regístralos en Income:OtherNet en lugar de Expenses:OtherNet. Nunca uses ambos en un mismo período.

Valida y lee los informes

Ejecuta una verificación en el libro mayor raíz:

bea --file main.bean check

Un libro mayor limpio sale con código 0 y sin salida. Prefiere bea --json --no-input --file main.bean check cuando quieras validez legible por máquina y requieras data.valid: true.

Lee el estado de resultados para la ventana fiscal de la empresa, no para un trimestre calendario que casualmente comparta la etiqueta:

bea --json --no-input --file main.bean report income-statement --time '2026-04-01 - 2026-06-30'

Abre el mismo archivo en Fava para explorar el balance general y el estado de resultados. Confirma tres cosas contra la presentación: el comentario ; Check: suma cero, los activos totales igualan los pasivos totales más el patrimonio, y el ingreso neto en la transacción coincide con el ingreso neto de la presentación.

Comienza desde la plantilla

Copia la estructura antes de inventar un nuevo catálogo. La plantilla en vivo a continuación es un libro mayor ficticio de Example Industries Inc. FY2025 en MUSD. Usa los mismos nombres de cuentas, el mismo patrón de pad y balance, y la misma transacción única de estado de resultados.

Abrir Plantilla de empresa pública de Example Industries Inc. en una pestaña nueva

Descarga este patrón como public-company-starter.bean y luego ejecuta bea --file public-company-starter.bean check. El archivo coincide con las cercas de catálogo, pad/balance y estado de resultados de arriba: Efectivo termina en 25998 MUSD, Cuentas por pagar en -8318 MUSD, Ingresos en -23000 MUSD, Impuesto sobre la renta en 688 MUSD y Equity:Adjustments en -56690 MUSD después de los pads y el ajuste de ingreso neto. Reemplaza los montos de PepsiCo con cifras de tu presentación y mantén los nombres de cuentas.

Explora cada empresa real en Open Ledger. Copia la estructura de la plantilla y luego reemplaza los montos ficticios con cifras de tu presentación.

A dónde ir después

  • Estudia más libros mayores de empresas en vivo en Open Ledger.
  • Lee tutoriales de resultados bajo la etiqueta open-ledger.
  • Copia patrones de finanzas personales de Working Ledger Examples cuando necesites un punto de partida doméstico o independiente en lugar de un 10-K.
  • Revisa Financial Reporting Templates para la forma de los informes de estado de resultados y balance general en libros más pequeños.

Fuente: https://beancount.io/es/docs/model-a-public-company-in-beancount