Recommendations for which PTA route might suit my situation (stocks, cryptocurrencies) (reddit)

Exploring an example from the reddit thread, in hledger:

Here's a typical transaction buying and selling crypto coin XXX - having to use USD as an intermediary as XXX might not be sold in AUD:

AUD10000 → USD7000 (Record AUD10000 as the CGT cost base for the USD7000 purchase)
USD3500 → 1000XXX (CGT event #1 because I sold the USD, meaning I invested in it. Value of USD3500 in AUD needed. Also record it as the cost base for when I sell XXX.)
500XXX → USD2000 (CGT event #2 as I've bought and sold XXX. Record USD2000 in AUD for the event, plus the cost base for the USD I've just bought)
500XXX → USD2100 (As above, CGT event #3, new AUD valuations though)
USD2500 → AUD4500 (CGT event #4 using the chosen cost base combo of the two USD purchases above).
USD1600 → AUD2700 (CGT event #5 using the remaining cost base of the two transactions above).

Further complicated when exchanges do transaction fees in their own token - which has its own USD and thus AUD valuation.
That's for assets. Balance sheet isn't a huge issue as it's just a valuation on the day.

But now consider income and the P&L: if I stake that XXX and it gives daily rewards, I have to

  1. record that reward as income in AUD by using the XXX-USD and USD-AUD values, and
  2. record that AUD value as the cost base for CGT when I sell that XXX.
    I've got around 7000 CGT events and I was only .

So summarizing, it's really valuations on the day of the transaction which is key - which might require both XXX↔USD and USD↔AUD lookups.
And some mechanism of tracking which cost-base(s) are for CGT used upon selling. Currently I track that in Excel.
Sharesight and CryptoTaxCalculator that do respectively for stocks and crypto, but tax minimisation requires the overall picture before choosing cost bases.
That would include gains from all sources, net income and even predicted future net income,.

comment

A (incomplete) mockup of the above.

Commodity types, noted as tag values for clarity:
 Cash    - fiat money, cost basis not tracked; eg base currency
 Capital - capital assets, with cost basis/value/lots/capital gains tracked

Investment events, noted as tags for clarity:
 acquire  - creates a lot; sets cost basis
 transfer - preserves lots, maybe splitting one; preserves cost bases
 dispose  - destroys lots, maybe splittine one; records capital gain/loss

hledger infers the first posting's cost in the second posting's commodity (see hledger print --infer-costs),
so the acquired/disposed commodity's posting must be written first.

Some market prices have been added for clarity/experiments.

end comment

commodity 1.00 AUD  ; type:Cash
commodity 1.00 USD  ; type:Capital
commodity 1.   XXX  ; type:Capital

account assets:aud
account assets:usd
account assets:xxx

;include usd.prices
P 2025-10-01 USD 1.428571 AUD
P 2025-10-02 USD 1.50 AUD
P 2025-10-03 USD 1.60 AUD
P 2025-10-04 USD 1.70 AUD
P 2025-10-05 USD 1.80 AUD
P 2025-10-06 USD 1.6875 AUD

;include xxx.prices
P 2025-10-01 XXX 3.50 USD
P 2025-10-02 XXX 3.70 USD
P 2025-10-03 XXX 4.00 USD
P 2025-10-04 XXX 4.20 USD
P 2025-10-05 XXX 4.00 USD
P 2025-10-06 XXX 3.80 USD

2025-10-01   ; Record AUD10000 as the CGT cost base for the USD7000 purchase
    ; acquire:USD
    assets:usd                                  7000 USD @ 1.428571 AUD
    assets:aud                                -10000 AUD
    
2025-10-02   ; CGT event #1 because I sold the USD, meaning I invested in it. Value of USD3500 in AUD needed. Also record it as the cost base for when I sell XXX.
    ; dispose:USD
    ; acquire:XXX
    assets:xxx                                  1000 XXX @ 3.50 USD
    assets:usd                                 -3500 USD

2025-10-03   ; CGT event #2 as I've bought and sold XXX. Record USD2000 in AUD for the event, plus the cost base for the USD I've just bought.
    ; dispose:XXX
    ; acquire:USD
    assets:xxx                                  -500 XXX @ 4.00 USD
    assets:usd                                  2000 USD

2025-10-04   ; As above, CGT event #3, new AUD valuations though.
    ; dispose:XXX
    ; acquire:USD
    assets:xxx                                  -500 XXX @ 4.20 USD
    assets:usd                                  2100 USD

2025-10-05   ; CGT event #4 using the chosen cost base combo of the two USD purchases above.
    ; dispose:USD
    assets:usd                                 -2500 USD @ 1.80 AUD
    assets:aud                                  4500 AUD

2025-10-06   ; CGT event #5 using the remaining cost base of the two transactions above.
    ; dispose:USD
    assets:usd                                 -1600 USD @ 1.6875 AUD
    assets:aud                                  2700 AUD

I see that having to pay for assets with a foreign currency adds another layer of complication.

With all trades completed, if we sum their imbalances (equity), I think it can show the total average capital gain per commodity:

$ hledger -f examples/cc-jontycl.j bse --infer-equity
Balance Sheet With Equity 2025-10-06

                               ||                2025-10-06 
===============================++===========================
 Assets                        ||                           
-------------------------------++---------------------------
 assets:aud                    ||              -2800.00 AUD 
 assets:usd                    ||               3500.00 USD 
-------------------------------++---------------------------
                               || -2800.00 AUD, 3500.00 USD 
===============================++===========================
 Liabilities                   ||                           
-------------------------------++---------------------------
-------------------------------++---------------------------
                               ||                         0 
===============================++===========================
 Equity                        ||                           
-------------------------------++---------------------------
 equity:conversion:AUD-USD:AUD ||              -2800.00 AUD 
 equity:conversion:AUD-USD:USD ||               2900.00 USD 
 equity:conversion:USD-XXX:USD ||                600.00 USD 
-------------------------------++---------------------------
                               || -2800.00 AUD, 3500.00 USD 
===============================++===========================
 Net:                          ||                         0 

But of course, something other than average gains is often what's needed.