> modelling occasional expenses
I would say it's very hard to budget for bursty things on a monthly cadence. You can have a "virtual account" for this stuff, that fills on months with little activity and drains on months with more activity. But this is kind of complicated and might not be worth it.
I'd try answering the question: what is your goal in budgeting for gas, for example? Is it to keep gas spending under control? Or to understand how much you spend on gas? And if you want to understand, why? Budgeting is a solution to some answers to these questions, but not all of them.
Personally, I find it more useful to track these things, than to budget them, if that makes sense.
For example, I want to know how much I spent on rental cars in 2020, because that impacts our decision to lease a car in 2021.
> a way of indicating that a particular chunk of them should actually be extracted from the smoothing and assigned to a different category altogether
In GNU Ledger, you can apply arbitrary categories to each expense, and you can also "tag" line-items. For example, if you think 80% of your last refill was from a trip, you can do as follows:
20201/01/12 * Chevron
Expenses:Travel:Car:Gas $16.00 ; :vacation:
Expenses:Travel:Car:Gas $4.00 ; :commuting:
Liabilities:CreditCards:AppleCard $-20.00
You can then do queries to see which of your gas came from commuting, and which came from vacation.
You can remove vacation from your reports altogether, and you can also focus exclusively on each vacation. You can even tag vacations, if you so choose.
; :vacation:lasvegas2021:
> amortized over a time period that I specify rather than counted right at the moment of purchase
You can achieve this behavior by specifying "effective dates" for certain purchases.
For example, when I buy plane tickets, I like to amortize the cost of that ticket over each day I'm at my destination (similar to your home depot example).
2020/01/11 * American Airlines
; three-day trip to Colorado
Expenses:Travel:Plane $80.00 ; [=2020/02/01]
Expenses:Travel:Plane $80.00 ; [=2020/02/02]
Expenses:Travel:Plane $80.00 ; [=2020/02/03]
Liabilities:CreditCards:Apple $240.00
The dates in the comment are called "Effective dates". You can ask for reports to be presented with either effective dates or transaction dates, at query-time. Note that the credit card payment's effective date is identical to the transaction date.
Let me know if you have any further questions! It's a fun topic.