I personally consider my car as a commodity like my investments. See below a reproducible example:
~~~ option "operating_currency" "EUR" option "title" "test-depreciation" 2021-07-01 commodity VAN name: "Renault Master Van" asset-class: "car" current_price_origin: "depreciation" yearly_rate: 10 initial_price: 49900.00 purchase_date: "2021-07-15" 2021-01-01 open Assets:Car:Van 2021-01-01 open Assets:Checking 2021-07-15 * "Ahorn Camp GmbH" "Purchase Renault Master" note: "depreciated using the declining balance depreciation at 10% per year [[https://www.investopedia.com/terms/d/decliningbalancemethod.asp]]" Assets:Car:Van 1 VAN {49900.00 EUR} Assets:Checking -49900.00 EUR 2021-07-15 price VAN 49900.00 EUR 2021-12-31 price VAN 47524.13 EUR 2022-07-15 price VAN 44910.00 EUR 2022-12-31 price VAN 42771.72 EUR 2023-07-15 price VAN 40419.00 EUR ~~~ I wrote a script that fetch current prices for all my commodities from either Google Finance (almost all my ETFs and currencies), iShares (some ETFs not in Google Finance), OECD API <https://data.oecd.org/api/> (inflation rate, for beangrow calculation of real CAGR). I added a function that appends the current price of my car by applying a approx straight line depreciation (see below). This allows me to look at my current assets and get the price I estimate I can convert my car if I would sell today; lot of assumptions, acknowledged, but good enough for me. If I was using this for official reporting, e.g. taxes declaration, I would likely use your method of a yearly transaction to a 'Expenses:Depreciation' account.[image: Screenshot 2023-03-04 202023.png] I don't own an house, but if I were I would be interested of the present value. I would likely write a webscraper that gets the current price index of the properties in my region and estimate the present value, getting additional parameters such as closure costs, moving costs etc. Beancount is awesomely scalable for these plugins. *Depreciation function* ~~~ def present_value(initial_value: float, yearly_rate: float, start_date_iso: str, current_date_iso: str = None) -> float: """Return present value calculated with straight line depreciation. Args: initial_value: purchase price yearly_rate: rate in % (e.g. for 10% enter 10) start_date: in iso format; e.g. for 2021/07/15 enter '2021-07-15' current_date: iso of present date. If omitted, will take today Return: current value, rounded 0.2f. """ start_value = float(initial_value) start_date = dt.fromisoformat(start_date_iso).date() if current_date_iso: current_date = dt.fromisoformat(current_date_iso).date() else: current_date = dt.today().date() delta = current_date - start_date years = delta.days / 365 # approx, without considering leap years present_value = start_value * pow((1 - yearly_rate / 100), years) return round(present_value, 2) ~~~ On Sunday, February 26, 2023 at 7:38:52 PM UTC+1 char...@gmail.com wrote: > Robert, > > OK, thanks, understood. > > On Friday, February 24, 2023 at 6:48:41 PM UTC+1 Robert S wrote: > >> No plugins are necessary; this is all computed on the Balance Sheet view >> in Fava. You use the selector in the upper-right to switch between "At >> Cost", "At Market Value", and "Units". Using the example car transactions >> above, prior to the sale, the Balance Sheet would show: >> >> - At Cost: 16,000 EUR (the original cost of the car plus -4,000 EUR of >> accumulated depreciation). >> - At Market Value: the same (16,000 EUR) *unless* you also had price >> entries for CAR.MAKEMODEL, which would then be the most recent price plus >> -4,000 EUR of accumulated depreciation. Above the current value, it would >> show in green or red the gain/loss from the current value (cost plus >> accumulated depreciation). >> - Units: 1 CAR.MAKEMODEL *and* -4,000 EUR of accumulated depreciation >> (the mixed commodities). >> >> - Robert >> On Monday, February 20, 2023 at 10:02:05 AM UTC-5 char...@gmail.com >> wrote: >> >>> Robert, >>> >>> RE: *Fava's unrealized gain/loss report will show the PnL from the >>> balance sheet value (i.e. the cost plus accumulated depreciation or capital >>> improvements).* >>> >>> Can you please can you please point me to this *Fava's unrealized >>> gain/loss report. *I did some looking around, but could not find it. >>> >>> I can see, that there is a normal unrealized gains plugin >>> <https://github.com/beancount/beancount/blob/v2/beancount/plugins/unrealized.py>, >>> >>> but I understand you meant something else >>> >>> Regards. >>> >>> >>> On Saturday, February 11, 2023 at 6:18:28 PM UTC+1 Robert S wrote: >>> You would track a house the same way. Except most people do not >>> depreciate their homes, but instead spend money on capital improvements: >>> >>> 2022-01-01 * "House" "Purchase" >>> Assets:Bank:MyBank -500,000 EUR >>> Expenses:Property:AcquisitionFees 50,000 EUR >>> Assets:Property:Address 1 HOUSE.ADDRESS {450,000 EUR} >>> 2022-06-01 * "House" "New Roof" >>> Assets:Bank:MyBank -30,000 EUR >>> Assets:Property:Address 30,000 EUR >>> >>> The price of the house and the car both depend on the market; that's >>> what I mentioned at the bottom of my previous message. Any time you receive >>> market information about the current price of an asset, you can insert a >>> price directive for it: >>> >>> 2021-06-01 price CAR.MAKEMODEL 17,500 EUR >>> 2022-07-01 price HOUSE.ADDRESS 465,000 EUR >>> >>> Fava's unrealized gain/loss report will show the PnL from the balance >>> sheet value (i.e. the cost plus accumulated depreciation or capital >>> improvements). >>> >>> - Robert >>> >>> P.S. I also use a plugin to automate inserting the adjusting entries for >>> depreciation and amortization. I just wanted to illustrate the manual >>> process in my first reply. >>> >>> On Saturday, February 11, 2023 at 4:26:05 AM UTC-5 char wrote: >>> Ok, >>> >>> thank you very much for all your comments! >>> >>> But what about for instance buying a house? >>> >>> House can go up in price and it does depend on the market. >>> >>> How would you track buying the house? >>> >>> On Saturday, February 11, 2023 at 3:44:26 AM UTC+1 Red S wrote: >>> On Friday, February 10, 2023 at 4:48:15 PM UTC-8 Robert S wrote: >>> The transactions would look like: >>> >>> 2020-01-01 * "Car" "Purchase" >>> Assets:Bank:MyBank -20,000 EUR >>> Assets:Equipment:Vehicles 1 CAR.MAKEMODEL {20,000 EUR} >>> 2020-12-31 * "Car" "Depreciation Expense" >>> Assets:Equipment:Vehicles >>> Expenses:AccumulatedDepreciation 2,000 EUR >>> 2021-12-31 * "Car" "Depreciation Expense" >>> Assets:Equipment:Vehicles >>> Expenses:AccumulatedDepreciation 2,000 EUR >>> >>> Above is how I do it as well. I use the effective_date plugin >>> <https://github.com/redstreet/beancount_reds_plugins/tree/main/beancount_reds_plugins/effective_date> >>> to >>> automate the above. >>> >> -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/b2be039f-80f6-4a20-b83c-ce637fab4b72n%40googlegroups.com.