본문으로 건너뛰기

Beancount.io 소개

이 가이드는 강력한 오픈 소스 텍스트 기반 회계 도구인 Beancount를 사용하여 일반 텍스트 회계를 위한 모범 사례를 종합합니다. 여기에는 기본 철학, 기본에서 고급 구문, 복잡한 자산에 대한 실제 사례 연구 및 장기 원장 관리 전략이 포함됩니다.

파트 1: "왜" - 스마트 부기의 기초

"어떻게"를 살펴보기 전에 "왜"를 이해하는 것이 중요합니다. 효과적인 부기는 개인 재정 관리의 기반이자 재정적 명확성과 자유를 향한 필수 단계입니다.

지출 추적 그 이상: 재정적 명확성을 향한 길

간단한 지출 추적 앱은 돈이 어디로 갔는지 알려줍니다. 강력한 회계 시스템은 그것은 물론 훨씬 더 많은 것을 알려줍니다. 순자산, 현금 흐름 및 투자 성과를 포함하여 재정 상태에 대한 완전한 그림을 제공합니다. 주요 목표는 관찰 가능성입니다. 즉, 재정 생활에 대한 명확하고 데이터 기반의 이해를 얻어 정보에 입각한 결정을 내리고 위험을 평가하며 은퇴와 같은 장기 목표를 향해 노력할 수 있습니다.

왜 복식 부기인가? 균형 잡힌 시스템의 힘

단식 부기(단순한 지출 목록)와 달리 복식 부기 방식은 모든 거래를 최소 두 계정 간의 가치 흐름으로 기록합니다. 핵심 원칙은 기본적인 회계 방정식입니다.

자산=부채+자본(순자산)\text{자산} = \text{부채} + \text{자본(순자산)}

이 시스템은 장부가 항상 균형을 이루도록 보장하여 오류를 크게 줄입니다. 대차 대조표(소유 및 부채) 및 손익 계산서(수입 및 지출)와 같은 필수 보고서를 생성하여 완전한 재정적 그림을 제공합니다.

파트 2: Beancount 시작하기

Beancount는 강력한 Python 기반의 일반 텍스트 회계 도구입니다.

Beancount.io의 Fava로 첫 경험하기

Beancount.io는 Beancount 엔진과 모바일 앱(iOS, Android) 및 웹 앱인 Fava(원장을 시각화하기 위한 훌륭한 웹 기반 인터페이스)를 결합한 강력한 환경을 제공합니다. 설치가 필요하지 않습니다. 플랫폼을 사용하면 원장 파일(예: main.bean)에 대한 텍스트 편집기와 직접 상호 작용하고 Fava에서 생성된 보고서가 실시간으로 업데이트되는 것을 볼 수 있습니다.

Fava는 사용자가 작성한 일반 텍스트를 대화형 차트, 재무 제표 및 필터링 가능한 거래 목록으로 변환하여 재무 보고서에 대한 명확한 보기를 제공합니다.

다섯 가지 핵심 계정 유형

Beancount는 원장의 구조를 형성하는 다섯 가지 최상위 계정 유형을 사용합니다.

계정 유형설명일반적인 잔액
자산소유하고 있는 것(현금, 은행 계좌, 투자, 부동산).양수
부채빚지고 있는 것(신용 카드 부채, 대출, 모기지).음수
수입돈이 들어오는 곳(급여, 보너스, 이자).음수
지출돈이 나가는 곳(음식, 임대료, 여행, 세금).양수
자본순자산; 초기 잔액에 사용됩니다.음수

Beancount 방정식

Beancount는 전체 원장의 모든 분개 합계가 0이 되는 자체 버전의 회계 방정식을 적용합니다.

자산+지출+부채+수입+자본=0\text{자산} + \text{지출} + \text{부채} + \text{수입} + \text{자본} = 0

이것이 관례상 수입, 부채자본 계정이 음수 값을 갖는 이유입니다. 이는 자산지출을 증가시키는 자금의 출처입니다.

파트 3: Beancount의 언어 - 핵심 구문

Beancount의 모든 항목은 날짜로 시작하는 지시문입니다.

계정(open) 및 상품 정의

계정을 사용하기 전에 open 지시문으로 선언해야 합니다. 선택적으로 통화 또는 "상품"을 지정할 수도 있습니다.

; YYYY-MM-DD open Account:Name [Commodity1, Commodity2, ...]
2020-01-01 open Assets:Bank:US:Chase:Checking USD
2020-01-01 open Liabilities:CreditCard:US:Discover USD
2020-01-01 open Expenses:Food:Groceries
2020-01-01 open Income:Salary:Google

상품은 실제 통화(예: USD, JPY) 또는 항공 마일리지(MILES_UA) 또는 주식 티커(HOOL)와 같이 사용자가 정의하는 사용자 지정 단위일 수 있습니다.

첫 번째 거래 기록하기(*)

거래는 가장 일반적인 항목입니다. 날짜, 플래그(*는 완료된 거래, !는 불완전한 거래), 선택적 수취인 및 설명으로 시작합니다. 다음에 오는 각 줄(두 칸 공백으로 들여쓰기됨)은 계정에 대한 "분개"입니다.

; YYYY-MM-DD * "Payee" "Description"
; Account1 Amount Commodity
; Account2 -Amount Commodity

2024-07-28 * "Trader Joe's" "주간 식료품"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover -125.50 USD

편의를 위해 거래에 분개가 두 개만 있는 경우 두 번째 줄에서 금액을 생략할 수 있으며 Beancount가 자동으로 계산합니다.

2024-07-28 * "Trader Joe's" "주간 식료품"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover

거래 수준 균형 조정: 일상적인 사용에서 더욱 중요한 것은 모든 개별 거래도 균형을 이루어야 합니다. 즉, 단일 거래 내의 모든 분개 합계는 0이어야 합니다. 거래가 균형을 이루지 못하면 Beancount는 다음과 같은 오류를 표시합니다.

Beancount Error Alert

다중 통화 거래 처리하기(@@@)

Beancount는 다중 통화 회계에 탁월합니다.

  • @를 사용하여 단위당 환전 가격을 지정합니다.
  • @@를 사용하여 총 환전 비용을 지정합니다.
; USD 카드로 EUR로 항공편 구매
2024-08-01 * "Lufthansa" "베를린행 항공편"
Expenses:Travel:Flights 500.00 EUR @@ 545.00 USD ; 500 EUR는 총 545 USD의 비용이 들었습니다.
Liabilities:CreditCard:US:Discover -545.00 USD

파트 4: 정확성 보장 - 조정 기술

정확한 원장을 유지하기 위한 핵심 방법은 정기적인 조정입니다. 여기에는 Beancount 원장의 잔액을 금융 기관의 공식 명세서와 비교하는 것이 포함됩니다.

잔액 어설션(balance)으로 검사 자동화

balance 지시문은 자동 검사를 위한 기본 도구입니다. 지정된 날짜에 계정에 특정 잔액이 있다고 어설션합니다. Beancount는 계산된 잔액이 어설션과 일치하지 않으면 오류를 발생시킵니다. 이는 오류를 빠르게 찾는 데 매우 중요합니다.

참고: 잔액 어설션은 지정된 날짜의 시작 시 계정 상태를 확인합니다(해당 날짜의 거래 이전).

; 월별 신용 카드 명세서에서
2024-08-01 balance Liabilities:CreditCard:US:Discover -1432.78 USD

지원 문서 연결하기(document)

은행 명세서 또는 영수증과 같은 외부 파일에 연결하여 감사 가능한 증적을 만들 수 있습니다. Fava는 이러한 링크를 클릭할 수 있도록 만듭니다.

2024-08-01 document Liabilities:CreditCard:US:Discover "statements/discover-2024-07.pdf"

오류 수정 및 초기 잔액 초기화

원장을 시작하거나 추적할 수 없는 불일치를 발견하면 조정을 해야 합니다. 표준적인 방법은 특수 자본 계정을 사용하는 것입니다.

; 원장을 시작할 때 현금 계정 초기화
2020-01-01 * "초기 잔액" "현금 계정 설정"
Assets:Cash:Wallet 200.00 USD
Equity:Opening-Balances -200.00 USD

Equity:Opening-Balances 계정은 알 수 없거나 외부 소스에서 원장에 들어오는 금액을 보유합니다.

정확한 불일치가 중요하지 않은 빠른 수정의 경우 pad 지시문은 후속 balance 어설션을 충족하기 위해 계정의 잔액을 자동으로 조정하고 차액을 자본 계정에 기록할 수 있습니다. 더 큰 문제를 숨길 수 있으므로 주의해서 사용하십시오. 명시적 조정이 일반적으로 더 안전합니다.

파트 5: 고급 & 현실적인 거래 패턴

부채 추적: 미수금 및 미지급금 관리

복식 부기는 사용자에게 빚진 돈(Assets:Receivables) 또는 사용자가 빚진 돈(Liabilities:Payable)을 추적하는 데 완벽합니다.

예: 90달러 상당의 단체 저녁 식사를 지불하고 친구 Bob이 45달러 상당의 그의 몫을 빚지고 있습니다.

  1. 초기 지출 및 미수금 기록:

    2024-08-05 * "Dinner Place" "Bob과 저녁 식사"
    Expenses:Food:Restaurant 45.00 USD ; 당신의 몫
    Assets:Receivables:Bob 45.00 USD ; Bob이 당신에게 빚진 돈
    Assets:Bank:US:Chase:Checking -90.00 USD
  2. Bob이 돈을 갚을 때:

    2024-08-06 * "Bob" "저녁 식사 비용을 갚았습니다."
    Assets:Bank:US:Chase:Checking 45.00 USD
    Assets:Receivables:Bob -45.00 USD

이제 Assets:Receivables:Bob 계정이 0이 되고 장부가 완벽하게 균형을 이룹니다.

자산 대 지출: 자동차 구매 및 감가상각

자동차와 같은 큰 구매는 단순한 지출이 아닙니다. 시간이 지남에 따라 가치가 하락하는 자산(감가상각)의 획득입니다.

  1. 구매를 자산으로 기록:

    2023-01-15 * "Toyota Dealer" "새 차 구매"
    Assets:Car:ToyotaCamry 30000.00 USD
    Assets:Bank:US:Chase:Checking -30000.00 USD
  2. 연간 감가상각 기록: 자동차의 가치가 매년 3,000달러씩 하락한다고 가정합니다. 연말에 이를 지출로 기록합니다.

    2023-12-31 * "감가상각" "연간 자동차 가치 감가상각"
    Expenses:Depreciation:Car 3000.00 USD
    Assets:Car:ToyotaCamry -3000.00 USD

이 항목 이후에 Assets:Car:ToyotaCamry 계정은 자동차의 새로운 가치(27,000달러)를 올바르게 반영하고 해당 연도의 사용 비용을 지출로 적절하게 회계 처리했습니다.

파트 6: 심층 분석 - 복잡한 실제 자산 모델링

사례 연구 1: 부동산 회계 처리

집은 종종 가장 큰 자산이자 부채입니다. 이를 모델링하는 방법은 다음과 같습니다.

  1. 계정 및 사용자 지정 상품 만들기:

    2022-01-01 commodity HOUSE_123MAIN
    name: "123 Main St의 부동산"
    2022-01-01 open Assets:Property:Home:123Main HOUSE_123MAIN
    2022-01-01 open Liabilities:Mortgage:HomeLoan USD
    2022-01-01 open Expenses:Home:Interest
    2022-01-01 open Expenses:Home:PropertyTax
  2. 구매 기록: 50만 달러짜리 집을 10만 달러의 계약금과 40만 달러의 대출로 구매한다고 가정해 보겠습니다.

    2022-03-15 * "Settlement Company" "123 Main St 구매"
    Assets:Property:Home:123Main 1 HOUSE_123MAIN {500000.00 USD}
    Assets:Bank:DownPayment -100000.00 USD
    Liabilities:Mortgage:HomeLoan -400000.00 USD
  3. 월별 모기지 상환 기록: 월별 상환액은 원금(부채 감소)과 이자(지출)로 구성됩니다.

    2022-04-01 * "Mortgage Bank" "월별 모기지 상환"
    Liabilities:Mortgage:HomeLoan 800.00 USD ; 원금
    Expenses:Home:Interest 1200.00 USD ; 이자
    Assets:Bank:US:Chase:Checking -2000.00 USD
  4. 자산 가치 상승(미실현 이익) 추적: 집의 시장 가치는 변동됩니다. 공식 순자산에 영향을 주지 않고 이를 추적하려면(판매할 때까지 이익이 실현되지 않으므로) "가상" 통화로 가격 지시문을 사용할 수 있습니다.

    ; 구매 가격은 실제 원가 기준입니다.
    2022-03-15 price HOUSE_123MAIN 500000.00 USD

    ; 업데이트된 시장 추정치는 미실현 이익입니다.
    2024-01-01 price HOUSE_123MAIN 550000.00 USD.UNREALIZED

이렇게 하면 대차 대조표를 부적절하게 부풀리지 않고도 Fava의 차트에서 추정 가치를 볼 수 있습니다.

사례 연구 2: 양도 제한 조건부 주식(RSU) 추적

RSU는 일반적인 형태의 주식 보상입니다. 이에 대한 회계 처리는 초기 부여, 베스팅 이벤트 및 세금 원천 징수를 추적하는 것과 관련됩니다.

  1. 초기 설정: 베스팅된(HOOL) 및 베스팅되지 않은(HOOL.UNVEST) 주식에 대한 상품과 필요한 계정을 만듭니다.

    2021-01-01 commodity HOOL
    2021-01-01 commodity HOOL.UNVEST
    2021-01-01 open Assets:Brokerage:Etrade:HOOL HOOL
    2021-01-01 open Assets:Grant:Unvested HOOL.UNVEST
    2021-01-01 open Income:Salary:Hooli:RSU
    2021-01-01 open Expenses:Taxes:Federal
  2. 초기 부여 기록: 이 거래는 총 부여가 베스팅되지 않은 자산 계정으로 이동하는 것을 보여줍니다.

    2021-02-01 * "Hooli" "초기 RSU 부여"
    Assets:Grant:Unvested 1000 HOOL.UNVEST
    Income:Grant:Awards -1000 HOOL.UNVEST
  3. 베스팅 이벤트 기록: 이는 핵심 거래입니다. 주식이 베스팅되면 소득을 인식하고 세금을 납부하고(종종 일부 주식을 판매하여) 순 주식을 받습니다. 100주가 주당 150달러에 베스팅된다고 가정합니다.

    2022-02-01 * "Hooli" "RSU 베스팅 이벤트"
    ; 100 * $150 = $15,000의 총 소득 인식
    Income:Salary:Hooli:RSU -15000.00 USD

    ; 이 소득에서 납부한 세금 표시
    Expenses:Taxes:Federal 4000.00 USD
    Expenses:Taxes:State 1000.00 USD

    ; 원가 기준으로 순 주식(60주라고 가정)을 받습니다.
    Assets:Brokerage:Etrade:HOOL 60 HOOL {150.00 USD}

    ; 다른 40주는 $6000의 세금을 충당하기 위해 판매되었습니다.
    ; 이 거래는 소득, 세금 및 수령한 주식의 균형을 맞춥니다.
    ; 또한 베스팅되지 않은 주식의 감소를 표시해야 합니다.
    Assets:Grant:Unvested -100 HOOL.UNVEST
    Expenses:Grant:Vested 100 HOOL.UNVEST

이 단일하고 균형 잡힌 거래는 베스팅되지 않은 부여가 감소하고, 소득이 인식되고, 세금이 납부되고, 순 베스팅 주식이 향후 자본 이득 계산을 위해 올바른 원가 기준으로 증권 계좌에 나타나는 전체 이벤트를 올바르게 모델링합니다.

파트 7: 원장 프로젝트 관리

원장이 커질수록 구성이 중요해집니다.

데이터 보호를 위한 버전 관리(Git) 사용

원장이 텍스트 파일이므로 Git을 사용한 버전 관리에 적합합니다. 이렇게 하면 모든 변경 사항에 대한 전체 기록이 제공되어 실수로 인한 삭제 또는 실수로부터 보호됩니다. 경고: 귀하의 재무 데이터는 매우 민감합니다. GitHub/GitLab과 같은 서비스에서 비공개 리포지토리를 사용하거나 자체 호스팅하십시오.

태그(#) 및 링크(^)를 사용하여 구성

Beancount는 계정 외에 거래를 그룹화하는 두 가지 방법을 제공합니다.

  • 태그(#): 이벤트 또는 프로젝트에 사용합니다. 예를 들어 특정 여행과 관련된 모든 거래를 필터링할 수 있습니다. 2024-07-20 * "Hotel" "Vienna" #trip-europe-2024
  • 링크(^): 현금 인출 및 관련 은행 수수료와 같이 서로 다른 시간에 발생하는 재정적으로 관련된 거래를 연결하는 데 사용합니다.

파일 구조화를 위한 확장 가능한 전략(include)

단일하고 거대한 파일은 관리하기 어렵습니다. include 지시문을 사용하여 원장을 여러 파일로 분할합니다. main.bean:

; 메인 원장 파일

; 전역 옵션
option "title" "나의 개인 원장"
option "operating_currency" "USD"

; 계정 선언 및 기타 파일 포함
include "accounts.bean"
include "years/2023.bean"
include "years/2024.bean"
include "events/trip-europe-2024.bean"

우선 순위에 따른 강력한 조직 전략:

  1. 이벤트별: 주요 독립 실행형 이벤트에 대한 별도의 파일을 만듭니다(예: trip-europe-2024.bean).
  2. 카테고리/수취인별: 공과금 또는 급여와 같이 매우 규칙적인 반복 거래의 경우 자체 파일로 그룹화합니다(예: recurring-rent.bean).
  3. 계정별: 특정 계정(이자, 수수료, 신용 카드 결제)과 밀접하게 연결된 거래의 경우 계정별 파일을 고려하십시오.
  4. 날짜별: 다른 모든 일반 거래의 경우 연도별(2024.bean) 또는 월별(2024/07.bean)로 간단하게 분할하는 것이 효과적입니다.

파트 8: 결론

Beancount는 가파른 학습 곡선을 제공하지만 재무 데이터에 대한 탁월한 힘, 유연성 및 제어로 노력에 보답합니다. 복식 부기의 원칙과 Beancount가 제공하는 실용적인 도구를 수용함으로써 단순한 지출 추적에서 완전하고 정확하며 통찰력 있는 개인 재정 관리 시스템으로 이동할 수 있습니다. 귀하의 원장은 과거를 이해하고 미래를 계획하기 위한 영구적이고 개인적이며 귀중한 자산이 됩니다.

Beancount.io 시작하기

Beancount.io는 텍스트 기반 거래 기록을 손익 계산서, 대차 대조표 및 시산표를 포함한 포괄적인 재무 제표로 변환하는 최신 클라우드 기반 재무 관리 플랫폼입니다. Beancount.io는 일반 텍스트 파일의 안정성과 강력한 시각화 도구를 결합하여 투자 성과에 대한 귀중한 통찰력을 얻으면서 재정 생활에 대한 정확한 제어를 유지하도록 도와줍니다.

Beancount.io로 재정 여정을 시작하세요 - 프로모션 기간 동안 무료!

Expenses

Income Statement

Balance Sheet