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 regulatoria en un libro Beancount equilibrado con las mismas convenciones que usa cada empresa de Open Ledger.

Esta guía modela el estado de resultados trimestral de PepsiCo y un extracto parcial del balance general del comunicado de resultados del segundo trimestre de 2026 de PepsiCo. Usa la columna de 12 semanas que termina el 13 de junio de 2026 en la página impresa A-1 (página 6 del PDF), y el balance general de la misma fecha en A-4 (página 9 del PDF). El comunicado se publicó el 9 de julio de 2026. Cada cifra permanece en millones de dólares estadounidenses (MUSD).

Lo que obtienes​

Terminas con cinco aserciones de saldo y una transacción de estado de resultados de suma cero. bea check pasa. El estado de resultados reproduce el ingreso neto consolidado; el extracto del balance general cubre los activos corrientes y una línea combinada de pasivos corrientes. No es un balance general completo de la empresa. El mismo patrón impulsa cada empresa en Open Ledger y cada publicación bajo la etiqueta open-ledger.

Elige la unidad y el año fiscal​

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

Un MUSD significa USD 1.000.000. Un saldo de 10251 MUSD significa $10.251 mil millones en efectivo.

El trimestre reportado contiene 12 semanas, o 84 días, hasta el 13 de junio de 2026. Contando de forma inclusiva da del 22 de marzo al 13 de junio de 2026. Usa esas fechas fiscales en lugar de abril–junio. La columna del año anterior del balance general es el 27 de diciembre de 2025; no reemplaces los cierres de año fiscal con el 31 de diciembre.

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 del más antiguo al más reciente.

Abre el catálogo de cuentas​

main.bean contiene las opciones, las aperturas de cuentas y los includes. No contiene saldos ni asientos de ingresos.

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

option "title" "PepsiCo, Inc. FY2026Q2 income statement and partial balance sheet"
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
;   Source: PepsiCo Q2 2026 earnings release, A-1 and A-4.
;   Fiscal quarter: 2026-03-22 through 2026-06-13 (12 weeks).
;   Partial balance sheet: current assets and combined payables only.
 
; ── 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  ; opening balances when needed
1970-01-01 open Equity:Adjustments                         MUSD  ; balancing offset for this statement model
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"

El catálogo proporciona nombres de cuentas para otras empresas y extensiones posteriores. Las cuentas sin usar no implican un cero reportado. Solo las cuentas registradas a continuación tienen importes asignados en este ejemplo. Las cuentas …:Other necesitan una línea de origen explícita o un cálculo residual; no son una licencia para inventar un desglose.

Valida el balance general con pad y balance​

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

Los activos llevan saldos positivos. Los pasivos llevan saldos negativos. Estas cinco aserciones mapean la columna del 13 de junio de 2026 en A-4:

CuentaMapeo de origen (MUSD)
Assets:Current:CashEfectivo y equivalentes de efectivo: 10.251
Assets:Current:ShortTermInvestmentsInversiones a corto plazo: 465
Assets:Current:AccountsReceivableCuentas y notas por cobrar, netas: 13.496
Assets:Current:OtherTotal de activos corrientes 32.775 − 10.251 − 465 − 13.496 = 8.563; inventarios 6.734 + pagos anticipados y otros activos corrientes 1.829
Liabilities:Current:OtherCuentas por pagar y otros pasivos corrientes combinados: −24.504

El comunicado no desglosa la última línea en cuentas por pagar y otros pasivos por separado. Mantén el agregado junto; no registres un importe inventado en Liabilities:Current:AccountsPayable.

; PepsiCo, Inc. FY2026Q2 — 2026-03-22 through 2026-06-13; MUSD
; Source: https://investors.pepsico.com/docs/pepsico-5v9wci20/media/Files/investors/q2-2026-earnings-release.pdf
; A-4, 2026-06-13 column: partial balance-sheet snapshot
2026-06-12 pad Assets:Current:Cash                        Equity:Adjustments
2026-06-13 balance Assets:Current:Cash                     10251 MUSD
 
2026-06-12 pad Assets:Current:ShortTermInvestments        Equity:Adjustments
2026-06-13 balance Assets:Current:ShortTermInvestments     465 MUSD
 
2026-06-12 pad Assets:Current:AccountsReceivable          Equity:Adjustments
2026-06-13 balance Assets:Current:AccountsReceivable       13496 MUSD
 
2026-06-12 pad Assets:Current:Other                       Equity:Adjustments
2026-06-13 balance Assets:Current:Other                    8563 MUSD  ; 32775 - 10251 - 465 - 13496 = 6734 + 1829
 
2026-06-12 pad Liabilities:Current:Other                  Equity:Adjustments
2026-06-13 balance Liabilities:Current:Other               -24504 MUSD  ; combined payables and other current liabilities

Beancount verifica un balance al inicio de su fecha. Los pads del día anterior crean asientos sintéticos de instantánea, no movimientos reales de efectivo el 12 de junio. Este ejemplo no tiene asientos posteriores de activos o pasivos el 13 de junio, así que los importes afirmados también permanecen como sus saldos de cierre.

Este extracto omite activos no corrientes, deuda a corto plazo y los pasivos y el patrimonio restantes. Un modelo completo debe mapear esas líneas también, incluidos los valores de tesorería y las participaciones no controladoras. Los totales completos de la presentación son activos 112.189 = pasivos 89.919 + patrimonio 22.270 MUSD; el extracto no reproduce esos totales. Equity:Adjustments es un ajuste de equilibrio, no el patrimonio de los accionistas reportado. Inicia cada archivo de período con un banner que nombre la empresa, la ventana fiscal, la unidad y la URL de origen.

Registra el estado de resultados como una sola transacción​

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

Pon la comprobación aritmética en un comentario encima de la transacción. La comprobación debe dar cero antes de que confíes en el asiento.

; Check: -24181 + 11070 + 9088 + 171 + 848 + 3004 = 0
 
2026-06-13 * "PepsiCo, Inc." "FY2026Q2 Income Statement"
  Income:Revenue                         -24181 MUSD
  Expenses:CostOfRevenue                   11070 MUSD
  Expenses:SellingGeneralAdministrative     9088 MUSD
  Expenses:OtherNet                         171 MUSD  ; 230 expense - 59 pension income
  Expenses:IncomeTax                        848 MUSD
  Equity:Adjustments                       3004 MUSD  ; consolidated net income offset

Mapea la columna trimestral de A-1 de la siguiente manera: ingresos 24.181 menos costo de ventas 11.070 da una ganancia bruta de 13.111. Resta los gastos de venta, generales y administrativos de 9.088 para obtener una ganancia operativa de 4.023; la línea de deterioro es cero. El comunicado no revela una línea trimestral separada de I+D, así que deja Expenses:ResearchAndDevelopment sin usar.

Los ingresos por beneficios de pensión y atención médica para jubilados de 59 compensan los gastos netos por intereses y otros de 230. Registra su gasto neto, 171, en Expenses:OtherNet. Esto da un ingreso antes de impuestos de 3.852. El impuesto de 848 deja un ingreso neto consolidado de 3.004 MUSD. Si la misma agregación en su lugar produce un ingreso neto en otro período, usa Income:OtherNet para el agregado y deja Expenses:OtherNet sin usar.

El comunicado también reporta un ingreso neto atribuible a PepsiCo de 2.981 MUSD. El puente es 3.004 − 23 atribuibles a participaciones no controladoras = 2.981. Esta transacción modela la medida consolidada; los 23 son una asignación de la ganancia, no otro gasto. No sustituyas 2.981 como su ajuste de equilibrio.

Valida y lee los informes​

Ejecuta una verificación sobre el libro raíz:

bea --file main.bean check

Un libro limpio sale con 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 un trimestre calendario que casualmente comparta la etiqueta:

bea --json --no-input --file main.bean report income-statement --time '2026-03-22 - 2026-06-13'

Abre el mismo archivo en Fava para explorar el balance general y el estado de resultados. Verifica la aritmética y la concordancia con el origen por separado: el comentario ; Check: suma cero, cada importe registrado coincide con su origen mapeado, y el informe muestra un ingreso neto consolidado de 3.004 MUSD. Un importe de ingresos incorrecto puede seguir cuadrando si el ajuste también es incorrecto. Solo después de extender este extracto a un modelo completo deberían sus totales del balance general igualar los totales de la presentación.

Comienza desde la plantilla​

Clona la forma antes de inventar un nuevo catálogo. La plantilla en vivo de abajo es un libro ficticio de Example Industries Inc. FY2025 en MUSD. Usa los mismos nombres de cuentas, el patrón de pad y balance, y una sola transacción de estado de resultados.

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

Descarga el extracto real de PepsiCo como public-company-starter.bean, luego ejecuta bea --file public-company-starter.bean check. Combina los tres bloques de Beancount anteriores, de forma separada de la plantilla en vivo ficticia. El efectivo termina en 10251 MUSD, las cuentas por pagar y otros pasivos corrientes combinados en -24504 MUSD, los ingresos en -24181 MUSD, y el impuesto sobre la renta en 848 MUSD. Los cinco pads compensan 32775 − 24504 = 8271 MUSD contra Equity:Adjustments; sumando el ajuste de la ganancia consolidada quedan -5267 MUSD allí. Ese ajuste no es una línea de la presentación. La descarga es un ejemplo parcial de balance general, no el libro completo de PepsiCo. Reemplaza sus cifras y fechas fiscales con tus propios mapeos de origen.

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

A dónde ir después​

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