Управління запасами в Beancount
Система управління запасами Beancount – це потужна функція для відстеження активів, які купуються та продаються з часом, наприклад акцій, пайових інвестиційних фондів або іноземних валют. Вона дозволяє точно відстежувати собівартість, що необхідно для розрахунку приросту капіталу та розуміння ефективності портфеля. Цей посібник охоплює основні механізми управління запасами у вашій книзі обліку.
Основні поняття
В основі управління запасами лежить відстеження позицій. "Позиція" – це просто сума товару, що зберігається на рахунку. Beancount розрізняє два основних типи позицій.
Типи позицій
-
Проста позиція (без собівартості): Це стандартне розміщення залишку. Вона представляє суму товару без будь-якої пов'язаної вартості придбання. Вона підходить для готівки або простих тверджень про залишок.
Assets:Bank:Checking 100.00 USD -
Позиція з собівартістю: Цей тип позиції включає не лише кількість одиниць та товар, але й вартість, за якою він був придбаний. Це основа відстеження запасів. Вартість вказується у фігурних дужках
{}.Assets:Invest:VTSAX 10 VTSAX {100.00 USD, "lot-1"}У цьому прикладі ми маємо 10 одиниць
VTSAX. Кожна одиниця була придбана за ціною 100.00 USD. Ця конкретна партія акцій ідентифікується як "лот".
Операції з запасами
Існує дві основні операції, які можна виконати з запасами:
-
Збільшення (додавання до запасів): Коли ви купуєте товар, ви збільшуєте свої запаси. Ви створюєте новий лот і з певною кількістю одиниць та собівартістю.
2024-01-15 * "Купівля акцій"
Assets:Invest:STOCK 50 STOCK {25.00 USD, "lot-1"}
Assets:Bank:Checking -1250.00 USDТут ми купуємо 50 одиниць
STOCKза ціною 25.00 USD за одиницю. Це створює лот на рахункуAssets:Invest:STOCK. -
Зменшення (вилучення із запасів): Коли ви продаєте товар, ви зменшуєте свої запаси. Ви повинні вказати, з якого лота ви продаєте. Це робиться шляхом надання відповідної інформації у фігурних дужках.
2024-01-20 * "Продаж акцій"
Assets:Invest:STOCK -25 STOCK {25.00 USD}
Assets:Bank:Checking 625.00 USDУ цій транзакції ми продаємо 25 одиниць
STOCKз лота, який був придбаний за 25.00 USD за одиницю.
Методи обліку
Коли ви зменшуєте запаси, Beancount потребує правила, щоб вирішити, з якого конкретного лота брати, якщо кілька лотів збігаються або якщо збіг є неоднозначним. Це правило називається "методом обліку". Ви можете встановити метод за замовчуванням для всього файлу або вказати його для кожного рахунку.
1. STRICT (за замовчуванням)
Метод STRICT є методом обліку за замовчуванням і найбезпечнішим. Він забезпечує явний і однозначний збіг.
2024-01-01 open Assets:Invest:STOCK "STRICT"
- Потребує точного збігу лота: Ви повинні надати достатньо інформації в розміщенні зменшення (
{...}), щоб однозначно ідентифікувати лот, який продається. - Помилки при неоднозначних збігах: Якщо надана інформація збігається з кількома лотами, Beancount видасть помилку, змушуючи вас бути більш конкретним.
- Виняток: Якщо розміщення зменшення точно видаляє загальну кількість одиниць, що зберігаються на рахунку, дозволяється порожній специфікатор вартості (
{}).
2. FIFO (Перший прийшов, перший пішов)
Метод FIFO автоматично реєструє зменшення відносно найстаріших доступних лотів.
2024-01-01 open Assets:Invest:STOCK "FIFO"
- Автоматичне вирішення: Він усуває неоднозначність, вибираючи найстаріші відповідні лоти.
- Хронологічний збіг: Це загальний метод обліку, коли ви припускаєте, що продаєте активи, які утримували найдовше. Це обов'язковий метод для цілей оподаткування в багатьох країнах.
3. LIFO (Останній прийшов, перший пішов)
Метод LIFO є протилежним до FIFO. Він реєструє зменшення відносно найновіших доступних лотів.
2024-01-01 open Assets:Invest:STOCK "LIFO"
- Зворотний хронологічний порядок: Він вибирає нещодавно придбані лоти, які відповідають критеріям зменшення.
- Податкова оптимізація: У деяких юрисдикціях цей метод можна використовувати для податкової оптимізації, наприклад, шляхом продажу акцій з найвищою собівартістю, щоб мінімізувати приріст капіталу.
4. NONE
Метод NONE повністю вимикає зіставлення лотів.
2024-01-01 open Assets:Invest:STOCK "NONE"
- Відсутність зіставлення лотів: Beancount не намагається зіставити зменшення зі збільшеннями.
- Дозволяє змішані знаки: Це дозволяє рахунку мати як позитивні, так і негативні залишки одного й того ж товару одночасно. Ця поведінка подібна до того, як інструмент Ledger CLI обробляє товари.