Beancount 用户手册
这是所有与 Beancount 相关文档的顶级页面。
http://furius.ca/beancount/doc/index
用户文档
上下文中的命令行记账:一份动机性文档,解释什么是命令行记账、为什么我使用它,并通过一个简单的例子说明如何使用它。建议作为入门阅读。
复式记账法:以符合命令行记账系统假设与简化的方式,对复式记账法进行通俗介绍。
安装 Beancount:有关在您的计算机上下载和安装的说明,以及软件发布信息。
运行 Beancount 并生成报告:如何运行 Beancount 可执行文件并生成报告。本节包含面向 Beancount 用户的技术信息。
开始使用 Beancount:介绍如何创建、初始化和组织您的输入文件,以及声明账户和添加填充指令的过程。
Beancount 语言语法:包含示例的完整语言语法描述。这是 Beancount 语言的主要参考文档。
Beancount 选项参考:对所有可能选项值的描述与解释。
精度与容差:交易和余额断言允许因上下文推断而产生的微小不精确。本文解释其工作原理。
Beancount 查询语言:对 bean-query 命令行工具的高级概述,该工具可从您的 Beancount 账本文件中提取各种数据表。
Beancount 快速参考卡:一张总结 Beancount 语法的单页快速参考卡。
库存的工作原理:解释库存的表示方式,以及如何将批次匹配到库存中持有的头寸。这是阅读交易文档前的预备材料。
导出您的投资组合:如何将您的投资组合导出到外部投资组合跟踪网站。
教程与示例:一个真实的示例账本文件,包含某位假设的 Beancount 用户数年的财务生活。可用于体验 Beancount 的功能,查看其报告或网页界面的效果,快速了解使用 Beancount 能获得什么。
Beancount 邮件列表:所有与 Beancount 相关的问题和讨论均在此进行。相关兴趣内容还包括 Ledger-CLI 论坛,其中包含大量更广泛的讨论,是命令行记账主题的元列表。
Beancount 历史与致谢:描述 Beancount 的开发历史,并向其贡献者致意。
Beancount、Ledger 与 HLedger 的比较:对命令行记账系统的定性功能对比。
在 Beancount 中获取价格:如何使用 Beancount 的工具获取并维护您的资产价格数据库。
导入外部数据:描述从金融机构下载的外部文件中导入数据的过程,以及 Beancount 提供的用于自动化部分流程的工具和库。
配方与示例
这些文档展示了如何使用复式记账法完成特定任务。请通过这些示例培养对账户结构设计的直观理解。
命令行记账配方:多种不同类型金融交易的记账示例。这无疑是培养对复式记账法最佳实践理解的最佳方式。
使用 Beancount 进行交易:解释交易损益的处理方法,并提供使用 Beancount 处理各种投资与交易场景的实例。这是对配方的补充。
Beancount 中的股票归属:演示如何处理科技公司和初创企业常见的限制性股票单位(RSU)及归属事件。
使用 Beancount 分摊费用:一个真实而详细的示例,展示如何使用复式记账法与他人分摊旅行或项目费用。
我们如何分摊费用:更深入地描述了一种持续性的费用分摊系统:(a)当双方均有贡献时,伴侣之间的费用分摊;(b)向一个拥有独立账本的特定项目(我们的儿子)分摊费用。此为我们的实际系统。
医疗费用(未完成):一份尚未完成的文档,说明如何处理美国境内和境外医疗服务提供商的医疗费用流程。
跟踪医疗索赔:一个示例结构,用于跟踪非网络心理治疗费用、自付费用、医疗索赔以及针对未覆盖部分的 HSA 补偿。
计算投资组合回报:如何从 Beancount 账本中计算投资组合回报。本节描述了在实验脚本中完成的工作,以及提取正确数据的过程。
开发者文档
Beancount 脚本与插件:指导如何编写加载账本内容至内存并处理指令的脚本,以及如何编写转换这些指令的插件。
Beancount 设计文档:关于程序架构、设计选择、代码规范、不变量和方法论的信息。如需深入理解 Beancount,推荐阅读此文档。
LedgerHub 设计文档:描述在 beancount.ingest 中实现的导入工具和库的设计与架构。该工具原为独立项目 LedgerHub(现已停用),其有用部分最终被整合进 Beancount。本文件为稍显过时的原始设计文档。
源代码:自 2020 年 5 月起,Beancount 的官方代码库位于Github。(2008 年至 2020 年 5 月期间,它托管于 Bitbucket。)
外部贡献:其他用户基于 Beancount 库开发并共享的插件、导入器及其他代码的列表。
功能增强提案与讨论
我偶尔会撰写增强提案,以在推进之前整理和总结我的思路,并征求其他用户的反馈。这些材料有助于了解我计划添加的功能、具体的工作原理,或与 Ledger 或 HLedger 等类似软件进行比较。
库存记账的改进提案:该提案概述了 Ledger 和 Beancount 当前在库存记账方面的状况,并提出了一种更好的方法,以支持加权平均成本记账并在不考虑佣金的情况下计算资本收益。
Beancount 中的结算日期:讨论结算日期或辅助日期在 Beancount 中如何使用,以及它们在 Ledger 中的使用方式。
Beancount 中的余额断言:总结 Beancount 和 Ledger 中不同余额断言的语义,并提出扩展 Beancount 语法以支持更复杂断言的方案。
使用 Beancount 进行基金会计:讨论基金会计,并探讨如何在单一账本中高效追踪多个基金。
Beancount 中的舍入与精度:讨论余额检查中的重要舍入与精度问题,并提出一种更优的方法来推断所需的精度。(已实现)
外部链接
其他作者撰写的关于 Beancount 的文档、链接、博客文章及其他内容。
Beancount 源代码文档(Dominik Aumayr):由 Sphinx 生成的 Beancount 代码库文档。生成该文档的代码位于此处。
Beancount ou la comptabilité pour les hackers(Cyril Deguet):一篇法语博客概述。
V3 文档
自 2020 年夏季起,正在进行向 C++的重写。以下是与此相关的文档。
Beancount V3:目标与设计:V3 重写为 C++的动机、目标与设计。
Beancount V3:与 V2 的变更:列出当前在 v3("master"分支)中已完成但尚未纳入 v2 文档集的变更。
安装 Beancount(v3):v3 的安装流程。
Beancount V3:依赖项:构建版本 3 所需的软件依赖项。
Beangulp:v3 的全新导入框架。
关于本文档
你可能已经注意到,我正在使用Google Docs。我知道这对一个开源项目来说有些不同寻常。如果你对此感到不满,请知道我也喜欢纯文本格式:在研究生期间,我大量使用过LaTeX,过去十年里我曾深深迷恋reStructuredText格式,甚至为它编写过 Emacs 的支持插件。但大约在 2013 年,发生了一些变化:Google Docs已经足够优秀,可以撰写高质量的技术文档,我开始广泛使用它的修订和评论功能:我上瘾了,我真的很喜欢它。让用户能够直接在上下文中提出修正或添加评论,是一项极其有用的功能,它对提升我写作质量的帮助远超邮件列表中的补丁或评论。它还让用户有机会指出需要改进的段落。我已经收到的文档反馈量,远超我其他任何项目的总和;这确实有效。
而且它的外观也真的非常美观,这激励我写出更多、更好的内容。我想,也许我又一次爱上了所见即所得(WYSIWYG)……别误会:LaTeX 和无标记格式都很棒,但世界在变化,对我来说,更重要的是实现社区协作和动态文档,而不是让一份陈旧的 TeX 文件在我的仓库里慢慢老化。我的目标是生成易于阅读、打印效果良好,尤其是如今能在移动设备或平板电脑上良好渲染的文本,让你随时随地都能阅读。我还能在移动中编辑它,这让我在记录灵感或修改内容时倍感乐趣。最后,Google Docs 提供了 API,可以访问文档内容,因此如有需要,我最终也可以下载元数据并将其转换为其他格式。我并非喜欢它的所有方面,但它提供的功能,我确实非常欣赏。
如果你希望留下评论,我恳请你阅读时登录你的 Google 账号,这样你的名字会显示在评论旁边。谢谢!