Перейти к основному содержимому
Beancount.io Logo

Моделирование публичной компании в Beancount

Превратите баланс и отчёт о прибылях и убытках публичной компании в сбалансированную книгу Beancount, используя соглашения Open Ledger, с проработанным кварталом PepsiCo и стартовым шаблоном.

Превратите баланс и отчёт о прибылях и убытках из отчётности в сбалансированную книгу Beancount, используя те же соглашения, что и каждая компания Open Ledger.

Это руководство пошагово разбирает один реальный квартал PepsiCo. Цифры совпадают с отчётом о прибылях PepsiCo за Q2 2026. Все значения остаются в миллионах долларов США (MUSD).

Что вы получите

В итоге у вас будет книга, которая подтверждает баланс на конец периода и записывает отчёт о прибылях и убытках как одну нулевую транзакцию. bea check проходит. Отчёты о прибылях и убытках и балансе совпадают с опубликованными итогами отчётности. Тот же подход используется для каждой компании на Open Ledger и каждого поста под тегом open-ledger.

Выберите единицу и финансовый год

Установите operating_currency в миллионную единицу, соответствующую отчётности. Используйте MUSD для репортёров в долларах США. Используйте MEUR, MJPY или другую форму M<CCY>, когда отчётность представлена в этой валюте.

Один MUSD означает 1 000 000 долларов США. Баланс в 25998 MUSD означает около 26,0 миллиардов долларов наличными.

Поместите каждый финансовый период в отдельный файл в каталоге года. Назовите годовые файлы FY2025/FY2025.bean. Назовите квартальные файлы FY2026/FY2026Q2.bean. Включите их в main.bean от самого старого к самому новому.

Откройте план счетов

main.bean содержит параметры, открытие счетов и включения. В нём нет балансов и записей о доходах.

Откройте каждый счёт на 1970-01-01 в MUSD. Сохраняйте основные названия одинаковыми для всех компаний, чтобы читатели могли сравнивать книги между собой.

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 и другие листья …:Other поглощают остатки. Смоделированные позиции плюс этот остаток всегда сходятся с промежуточным итогом отчётности.

Подтвердите баланс с помощью pad и balance

Сделайте pad из Equity:Adjustments за день до конца периода. Подтвердите значение из отчётности на дату конца периода. Напишите одну пару pad и balance для каждого счёта.

Активы имеют положительные балансы. Обязательства и капитал имеют отрицательные балансы. Остаточные строки содержат комментарий с названием промежуточного итога отчётности, к которому они сходятся.

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

Покройте весь отчёт таким же образом: каждый счёт активов и обязательств, плюс Equity:CommonStockAndAPIC, Equity:RetainedEarnings и Equity:OtherComprehensiveIncome. Начинайте каждый файл периода с баннера, в котором указаны компания, период, единица и URL источника.

Запишите отчёт о прибылях и убытках как одну транзакцию

Датируйте транзакцию концом финансового периода. Поступления по доходам отрицательные. Поступления по расходам положительные. Equity:Adjustments поглощает чистую прибыль, чтобы запись суммировалась до нуля.

Поместите арифметическую проверку в комментарии над транзакцией. Проверка должна давать ноль, прежде чем доверять записи.

; 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

Выручка составляет 23 000 MUSD. Чистая прибыль составляет 2 592 MUSD. Когда прочие доходы дают положительное сальдо, записывайте их в Income:OtherNet вместо Expenses:OtherNet. Никогда не используйте оба в одном периоде.

Проверьте и прочитайте отчёты

Запустите проверку корневой книги:

bea --file main.bean check

Чистая книга завершается с кодом 0 без вывода. Предпочитайте bea --json --no-input --file main.bean check, когда нужна машиночитаемая валидность и требуется data.valid: true.

Читайте отчёт о прибылях и убытках за финансовый период компании, а не за календарный квартал, который случайно совпадает по названию:

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

Откройте тот же файл в Fava, чтобы просмотреть баланс и отчёт о прибылях и убытках. Сверьте три вещи с отчётностью: комментарий ; Check: даёт ноль, итоговые активы равны итоговым обязательствам плюс капитал, и чистая прибыль в транзакции равна чистой прибыли из отчётности.

Начните с шаблона

Скопируйте форму, прежде чем изобретать новый план счетов. Живой шаблон ниже — это вымышленная книга Example Industries Inc. за FY2025 в MUSD. Он использует те же названия счетов, схему pad и balance и одну транзакцию отчёта о прибылях и убытках.

Открыть Шаблон публичной компании Example Industries Inc. в новой вкладке

Скачайте этот образец как public-company-starter.bean, затем запустите bea --file public-company-starter.bean check. Файл совпадает с планом счетов, pad/balance и рамками отчёта о прибылях и убытках выше: Cash заканчивается на 25998 MUSD, Accounts Payable — на -8318 MUSD, Revenue — на -23000 MUSD, Income Tax — на 688 MUSD, а Equity:Adjustments — на -56690 MUSD после pad и смещения чистой прибыли. Замените суммы PepsiCo на цифры из вашей отчётности и сохраните названия счетов.

Просмотрите каждую реальную компанию на Open Ledger. Скопируйте структуру шаблона, затем замените вымышленные суммы на цифры из вашей отчётности.

Куда двигаться дальше

  • Изучите больше живых книг компаний на Open Ledger.
  • Читайте разборы отчётности под тегом open-ledger.
  • Скопируйте шаблоны личных финансов из Working Ledger Examples, если вам нужен стартовый набор для домохозяйства или фрилансера вместо 10-K.
  • Ознакомьтесь с Financial Reporting Templates для формы отчёта о прибылях и убытках и баланса в меньших книгах.

Источник: https://beancount.io/ru/docs/model-a-public-company-in-beancount