Любому образованному человеку непременно нужно иметь общее представление о бухгалтерском учёте. Так же, как и математика, естественные науки, программирование, музыка, литература, история, да и много чего ещё, бухучёт — это одна из тех сфер знаний, которые помогают нам понимать этот мир. Хотя работа с деньгами — не особо увлекательное занятие, это — неотъемлемая часть жизни, поэтому вполне можно уделить некоторое время на то, чтобы в этом разобраться.

Я полагаю, что, к сожалению, большинство бухгалтеров совсем не умеют понятно рассказывать о том, чем они занимаются, объяснять это другим людям. Бухучёт — это область, полная жаргона, акронимов, странных терминов, пришедших из глубины веков. Да у меня даже от книги «Бухучёт для чайников» кружится голова. А на самом деле, наверняка, всё это не может быть таким уж сложным.

(Мы, люди, которые работают с компьютерами, возможно, повинны в том же самом: в непонятных рассказах о своём деле и в использовании жаргона. Проблема в том, что, как только некто глубоко погружается в некую сферу знаний, ему оказывается очень сложно представить себе, как он видел то, что теперь ему хорошо знакомо, до того, как он в этом разобрался.)

В конце концов меня постигло озарение: основа бухучёта — это просто теория графов. Традиционные способы представления финансовой информации удивительно хорошо скрывают эту базовую структуру. Но после того, как я понял, что бухгалтерский учёт — это работа с графами — внезапно всё, что было мне неясно, обрело смысл.

Я — компьютерный учёный, я постоянно смотрю на самые разные вещи и явления через призму теории графов. Эх, если бы кто-нибудь когда-нибудь раскрыл бы это всё, прибегнув к графам! Это избавило бы меня от множества моментов, когда то, что связано с бухучётом, наводило беспорядок у меня в голове. Именно поэтому я решил попытаться исправить ситуацию. Если вам нравятся графы, то, когда вы дочитаете эту статью, у вас должно сложиться понимание всего того, что нужно, чтобы читать финансовую отчётность небольших компаний или стартапов (и даже саму её составлять — в электронной таблице, или пользуясь избранным вами языком программирования).

И бухучёт — это, и правда, не так уж сложно. Поехали!

Бухгалтерские счета = узлы, хозяйственные операции = рёбра

Предположим, вы идёте в пекарню чтобы купить бублик Super Club за $5, оплатив покупку кредитной картой компании. Ещё вы посетили офис какого-то стартапа из Кремниевой долины и купили там за $500 одно из ненужных им подержанных кресел Aeron. За кресло вы заплатили, выписав чек со счёта компании. Это — описание двух хозяйственных операций. В нашем графе каждой операции соответствует одно ребро. Рёбра графа помечены суммами денежных средств.

Ребро графа всегда идёт от одного его узла к другому. А что это за узлы? Можете обозначить их так, как вам хочется (хотя существуют сложившиеся правила их именования). Пока представим происходящее так:

Добавим в наш пример кое-какие подробности. Счёт по кредитной карте на $5 вы оплатили со счёта компании. А откуда деньги попали на счёт компании? Ага — как я понял — вы воспользовались своими сбережениями размером $5000 для того чтобы открыть компанию. Теперь граф выглядит так:

Надеюсь, дополнительные пояснения тут не требуются. Денежные потоки двигаются в направлении стрелок.

Вот — вы снова проголодались. Поэтому вы пошли в такерию и купили там Super Burrito за $8 с кредитки. Теперь мы можем создать в нашем графе ещё один узел для ресторана, где подают тако. Но при таком подходе граф начинает становиться неопрятным. Нам, на самом деле, не так важно знать о том, сколько денег потрачено на бублики, а сколько — на буррито. Давайте просто объединим эти суммы, назвав соответствующий узел Food (еда). Кроме того, наше обозначение некоего стартапа, Random startup, выглядит несколько неинформативным. Я уже забыл о том, на что ушли связанные с ним $500. Поэтому назовём этот узел Furniture (мебель).

Смотрите — получилось очень хорошо. У нас могут быть узлы, представляющие реальные банковские счета, узлы, представляющие людей или компании, и другие, соответствующие абстрактным категориям вроде «еда» или «мебель». Надо просто включить их все в состав одного графа.

Ещё обратите внимание на то, что между одной и той же парой узлов может быть несколько рёбер. Можно контролировать отдельные рёбра, а можно просто сложить соответствующие им суммы. (Так, пользуясь кредиткой, вы потратили, в общем, $13 на еду.)

Сальдо счетов

Каждый узел в этом графе — это, на бухгалтерском языке, бухгалтерский счёт, или просто счёт (при этом не важно — идёт речь о счёте, открытом в банке, или нет). У каждого счёта есть сальдо (остаток по счёту, баланс счёта). Сальдо каждого счёта выражается единственным числом, этот показатель определяется хозяйственными операциями, суммами, поступающими на счёт и выбывающими с него.

  1. В самом начале значение, связанное с каждым счётом, равняется нулю.

  2. Для того чтобы узнать сальдо счёта — надо прибавить к значению, связанному с ним, сумму, связанную с каждым входящим ребром, и вычесть из этого значения сумму, связанную с каждым исходящим ребром.

После обработки значений всех рёбер графа те значения, которые будут записаны в его узлах, и будут представлять собой остатки по счетам. Теперь наш граф будет выглядеть так:

Обратите внимание на то, что у остатков по счетам есть два любопытных свойства.

  1. Так как каждая хозяйственная операция дважды влияет на сальдо счетов, один раз — со знаком «плюс», второй раз — со знаком «минус», сумма остатков по счетам графа всегда равна нулю.

  2. Если разбить наборы узлов на два непересекающихся множества, и сложить все сальдо каждого множества, то получится, что сумма остатков по счетам из одного множества будет равна отрицательной сумме остатков из другого множества (так как, в конце концов, сумма этих показателей даёт ноль).

Эти свойства полезны в деле проверки правильности показателей, соответствующих счетам. Если они нарушены, то значит — что-то пошло не так. (Именно это имеют в виду бухгалтеры, когда говорят о «балансировке бухгалтерских книг».)

Ведение хозяйственной деятельности

Вы, подкрепившись бубликом и буррито, идёте на переговоры с потенциальными клиентами. И, вот повезло, им понравился ваш продукт! Он стоит $5000, вы продаёте его двум крупным корпоративным клиентам. Один платит за него сразу (очень хорошо), а второй даёт $2500 залога, и требует, чтобы вы, прежде чем он оплатит остальную сумму, реализовали бы одну дополнительную возможность, которую вы ему по неосторожности пообещали.

Получается, что вы получили от клиентов $5000 + $2500 реальных денег, которые попали прямо на ваш банковский счёт. Добавим эти сведения на граф.

Но всё, на самом деле, выглядит не совсем так. Цена продукта для каждого клиента была установлена в размере $5000. А тут получается, будто вы продали им продукт по разным ценам. Как отразить на графе нашу договорённость со вторым клиентом?

Решение этой задачи заключается в том, чтобы разбить сделку на две отдельные хозяйственные операции: на продажу (когда покупатель соглашается купить продукт, но деньги пока ни от кого ни к кому не переходят), и на платёж (когда деньги поступают на банковский счёт). Показать это можно так:

Видите — что мы тут сделали? Я просто создал новый узел, назвал его, воспользовавшись обобщённым понятием «продажи» (Sales), и отразил продажи на $5000 рёбрами, идущими от этого счёта к счетам клиентов. Добавление в граф этого дополнительного узла не повлияло на размер банковского счёта.

Это легко понять, если попытаться, на интуитивном уровне, представить себе сущность остатков по счетам. Остаток по счёту каждого клиента — это сумма денег, которые он нам должен. Клиент 1 полностью расплатился (денежные оценки входящих и исходящих хозяйственных операций равны), поэтому баланс его счёта равен нулю. А клиент 2, в силу договорённости с ним, согласился заплатить нам $5000, но пока дал только половину этой суммы. Поэтому баланс его счёта равен $2500.

А сальдо счёта «Продажи» — это стоимость всего того, что вы продали. Или, скорее, отрицательная стоимость. Выглядит это немного странно… но я вернусь к этому ниже. (Между прочим, если вы хотите раздельно учитывать продажи разным клиентам, или продажи разных продуктов — нет проблем. Просто добавьте в граф любые необходимые узлы. Главное — следите за тем, чтобы каждая хозяйственная операция отражалась в нём лишь один раз, в виде ребра графа, иначе данные в вашей системе учёта перестанут отражать реальность!)

Завершение примера

Для того чтобы придать нашему примеру законченный вид — позвольте мне дополнить граф ещё некоторыми хозяйственными операциями (то есть — добавить в него дополнительные рёбра).

Вы не только сделали кое-какие-продажи. Вы ещё и получили инвестиции от Y Combinator в размере $20000, с чём я вас и поздравляю! Вы и ещё один сооснователь вашей фирмы теперь можете позволить выплатить самим себе зарплату. Вы берёте на это $8000 со счёта компании.

Затем вы встречаетесь с вашим бухгалтером и он засыпает вас непонятными словами. По какой-то странной причине он прямо-таки одержим правильным отражением в учёте офисного кресла, он хочет амортизировать его в течение четырёх лет, то есть — сделать так, чтобы оценка его стоимости, отражаемая в учёте, за эти четыре года упала бы до нуля. Вы полагаете, что это — вполне справедливо (даже несмотря на то, что вам неважно то, сколько будет стоить это кресло через четыре года — ваша компания к тому моменту, определённо, станет очередным Google или Facebook, и вам, помимо кресла, будет о чём заботиться).

В результате наш граф будет выглядеть так:

Обратите внимание на то, как я отразил хозяйственные операции:

  • Я, под заголовком «Капитал» (Capital), объединил вклады основателей и инвестиции Y Combinator. Проще говоря — это деньги, которые попали в компанию через продажу долей в ней, а не посредством продаж товаров или услуг клиентам. Как обычно, если нужно — вклады основателей и сторонние инвестиции можно учитывать раздельно.

  • Я отразил выплату вознаграждения, перемещение средств в узел Payroll (расчёт заработной платы, зарплата), в виде хозяйственной операции, идущей в этот узел прямо из узла, отражающего состояние банковского счёта. Но в реальности подобные вещи выглядят несколько сложнее, так как, наряду с выплатами зарплаты, нужно вести учёт налогов, расходов на здравоохранение, дополнительных вознаграждений и прочего подобного. Но принцип работы остаётся тем же самым. Это — просто узлы и рёбра графа.

  • Я начислил амортизацию кресла за один год (четверть от $500 = $125), списав её со счёта учёта мебели (Furniture). Интуитивно понятно, что это означает, что сальдо счёта Furniture — это стоимость мебели, которой она всё ещё обладает в настоящий момент. Каждый год между счётом Furniture и счётом учёта амортизации, Depreciation, проводят новое ребро с суммой $125. Делается так до тех пор, пока через четыре года сальдо счёта Furniture не упадёт до нуля (это — если исходить из предположения о том, что вы в это время, стремясь к мировому господству, новую мебель не покупали).

Отчёт о прибылях и убытках

Сейчас, если вы чувствуете, что начали уставать, винить вас в этом я не могу. Но у меня есть хорошая новость: мы завершили конструирование графа! Теперь я покажу вам то, как графовое представление бухучёта преобразуется в два стандартных финансовых отчёта, которые чаще всего используются в деле управления компаниями. Это — отчёт о прибылях и убытках и бухгалтерский баланс. Знать о том, как устроены эти документы, полезно, так как владельцу стартапа рано или поздно понадобится обсудить их с инвесторами или с консультантами. Поэтому вам не помешает разобраться с тем, что это за документы.

Для того чтобы составить эти отчёты, мне нужно запастись цветными карандашами. Вот — тот же граф, что и раньше, но с раскрашенными узлами:

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

  • Зелёный цвет означает нечто такое, что вы имеете (активы). Например — это деньги в банке, или что-то такое, что куплено и может быть перепродано, скажем — мебель. Зелёным выделены и узлы, соответствующие физическим лицам или компаниям, которые что-то вам должны (это — дебиторы, как, например, клиент 2). Этим же цветом выделены узлы людей и компаний, которым что-то должны вы (долговые обязательства, кредиторы; это, например, ожидаемый счёт по кредитной карте за покупку буррито).

  • Синий используется для выделения продаж продуктов или услуг (доходы) и счетов учёта потраченных денег (расходы, накладные расходы). Счёт учёта офисного кресла закрашен зелёным, так как ранее купленное кресло, если нужно, можно продать. А вот счёт, где учитывается бублик, закрашен синим, так как после того, как бублик купили (и съели), пути назад уже нет.

  • Розовым закрашен узел, где учитываются средства, поступившие от инвесторов (или от основателей). Эти средства были получены компанией путём продажи её долей (капитал). (Если у компании имеется банковский кредит, его узел будет зелёным, а не розовым, так как компания должна выплатить этот кредит банку).

Каждый из узлов графа должен попадать лишь в одну из этих категорий. Если это не так — значит, в системе учёта возникла какая-то ошибка. Ещё это может означать, что вы столкнулись с каким-то явлением мира бухучёта, о котором пока не знаете.

После раскрашивания графа мы можем составить отчёт о прибылях и убытках, который представляет собой таблицу, содержащую сведения обо всех синих узлах. А прибыль или убыток компании — это сумма показателей всех синих узлов. То, как мы отражаем показатели в графе, приводит к тому, что прибыль будет представлена отрицательным значением, а убыток — положительным. Это может привести к путанице, поэтому знак итогового числа обычно меняют на противоположный (чтобы прибыль была бы положительным числом).

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

Доходы

Продажи

$10,000

Всего доходов

$10,000

Расходы

Зарплата

$8,000

Амортизация

$125

Еда

$13

Всего расходов

$8,138

Итог

Прибыль / Убыток

$1,862

(= общие доходы - общие расходы)

Эта таблица выглядит вполне понятной. Компания продала товаров на $10000, а потрачено было $8138. В результате получена прибыль в размере $1862.

Отчёт о прибылях и убытках составляют за некий период времени (обычно — за месяц, за квартал, за год). Часто интерес представляет сравнение результатов двух различных периодов. Для того чтобы построить такой отчёт за некий период времени — нужно отобрать хозяйственные операции, которые произошли в этом периоде, и сложить балансы счетов только с учётом эти операций.

Тут стоит обратить внимание на одну вещь: показатель прибыли ничего не говорит о состоянии банковского счёта. Узел банковского счёта окрашен в зелёный цвет, а нас тут интересуют лишь узлы, окрашенные в синий. В данном примере итоговый показатель средств на банковском счёте равен $23995, даже несмотря на то, что инвесторы вложили в компанию $25000. Компания получила прибыль, но на её счёте меньше денег, чем было в самом начале её работы. А дело тут в том, что клиент 2 ещё не полностью расплатился с компанией. Именно поэтому компания может быть прибыльной, но испытывать нехватку денежных средств!

Бухгалтерский баланс

Бухгалтерский баланс устроен не так понятно, как отчёт о прибылях и убытках. Но это — могущественный документ. В нём приведены сведения о том, что, на момент его составления, есть у компании, чего у неё нет, и почему всё выглядит именно так.

Вспомните — выше я говорил о разделении узлов на два непересекающихся множества, и о том, что сумма их сальдо равняется нулю. Именно это и происходит в бухгалтерском балансе. Мы берём все узлы графа и размещаем с одной стороны все зелёные узлы, а с другой — все синие и розовые. Сумма остатков всех синих и розовых узлов — это то же число, но со знаком «минус», что и сумма остатков всех зелёных узлов.

Далее, как это принято, бухгалтеры просто обращают знак значений синих и розовых узлов, что приводит к тому, что две полученных суммы будут одинаковыми. Именно поэтому в термине «бухгалтерский баланс» и есть слово «баланс».

Вот каким будет наш бухгалтерский баланс:

Актив

Банковский учёт

$23,995

Дебиторы

$2,500

Мебель

$375

Всего активов

$26,870

Обязательства

Кредитная карта

$8

$8

Активы минус обязательства

$26,862

Пассив

Прибыль / Убыток

$1,862

Капитал

$25,000

Всего пассивов

$26,862

Верхний блок бухгалтерского баланса (активы и обязательства) соответствует зелёным узлам графа. А нижний содержит данные из розового узла (капитал) и сумму показателей всех синих узлов. Подробности о синих узлах уже раскрыты в отчёте о прибылях и убытках. В балансе мы можем воспользоваться итоговым показателем, представленным единственным числом.

Тут имеются и другие моменты, предусматривающие смену знака чисел: я записал значения для обязательств, пассивов и данные из отчёта о прибылях и убытках, обратив их знаки (что обычно, но не всегда, выражается в выходе на положительные числа). Это ничего, по сути, не меняет в структуре нашего графа. Это лишь позволяет представить показатели так, как это принято.

Как интерпретировать бухгалтерский баланс? Из него можно извлечь массу интересных сведений. Можно узнать о том, сколько денег лежит в банке, и о том, сколько этих денег уже было кому-то обещано (обязательства). Можно узнать о том, какой объём средств, находящихся на банковском счёте, поступил от инвесторов, и о том, сколько получено от продаж. Баланс, кроме того, показывает то, какие объёмы денежных средств компания ожидает получить в обозримом будущем. Это — продажи, договорённость по которым достигнута, но оплата по которым пока не поступила в полном объёме.

Итоговый показатель баланса — это нижняя оценка стоимости компании. Это весьма пессимистичная оценка, так как, если ориентироваться лишь на неё, подразумевается, что команда, технологии, бренд компании и многое другое не стоят абсолютно ничего. Если компания получает деньги от инвесторов — оценка её стоимости будет намного выше, чем то, что отражено в балансе. Такая оценка содержит стоимость команды, технологий, бренда и прочего подобного, причём — эта стоимость определяется, грубо говоря, наугад. В бухгалтерских балансах устоявшихся компаний можно найти такой показатель, как нематериальные активы. Но, так как такие активы очень сложно оценить, я полагаю, что не стоит тратить на них время. Правда, если некто точно знает, что делает — к нему эта моя идея не относится.

Итоги

Это — конец нашего захватывающего турне по миру бухгалтерского учёта. Если вы — бухгалтер, то прошу вас простить мне сделанные мной упрощения. Если вы найдёте тут какие-то ошибки — прошу сообщить мне об этом. А если говорить обо всех остальных читателях — надеюсь, эта статья принесла им пользу.

О, а приходите к нам работать? ???? ????

Мы в wunderfund.io занимаемся высокочастотной алготорговлей с 2014 года. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки.

Мы предлагаем интересные и сложные задачи по анализу данных и low latency разработке для увлеченных исследователей и программистов. Гибкий график и никакой бюрократии, решения быстро принимаются и воплощаются в жизнь.

Сейчас мы ищем плюсовиков, питонистов, дата-инженеров и мл-рисерчеров.

Присоединяйтесь к нашей команде.

Комментарии (3)


  1. thevlad
    00.00.0000 00:00
    +2

    При должной наглости, можно всю экономику рассматривать, как граф с консервацией потока в узлах )


  1. dprotopopov
    00.00.0000 00:00
    +4

    Глупая статья

    Вместо того чтобы просто написать Дебет слева, Кредит справа, рассказать про двойную запись и трактовку что дебет - это наши вложения, а кредит - наши долги, рассказать про основные формы записи на бумаге и в регистрах программ, начинают рассказывать про графы.

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

    Чем не нравятся T счета для визуализации?


  1. kukesh007
    00.00.0000 00:00

    есть ещё стандартный набор графов называемый план счетов бух учёта