cli: if abs(return on investment)<0.01% display it as zero

This commit is contained in:
Dmitry Astapov 2019-01-09 21:46:50 +00:00 committed by Simon Michael
parent ad424e0381
commit 56553ede69
2 changed files with 30 additions and 30 deletions

View File

@ -117,14 +117,15 @@ roi CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do
irr <- internalRateOfReturn showCashFlow prettyTables thisSpan
twr <- timeWeightedReturn showCashFlow prettyTables investmentsQuery trans thisSpan
let cashFlowAmt = negate $ sum $ map snd cashFlow
let smallIsZero x = if abs x < 0.01 then 0.0 else x
return [ showDate spanBegin
, showDate (addDays (-1) spanEnd)
, show valueBefore
, show cashFlowAmt
, show valueAfter
, show (valueAfter - (valueBefore + cashFlowAmt))
, printf "%0.2f%%" irr
, printf "%0.2f%%" twr ]
, printf "%0.2f%%" $ smallIsZero irr
, printf "%0.2f%%" $ smallIsZero twr ]
let table = Table
(Tbl.Group NoLine (map (Header . show) (take (length tableBody) [1..])))

View File

@ -147,39 +147,38 @@ hledger -f- roi --inv investment --pnl pnl -b 2017 -e 2018 -Y
>>>=0
# 6. Check that deposits/withdrawals and profit/loss are reflected in the right periods
# XXX https://github.com/simonmichael/hledger/issues/937, "-0.00%"
# hledger -f- roi --inv investment --pnl pnl -b 2017 -e 2018 -Q
# <<<
# 2017-01-01 investment
# assets:cash -$100
# investment
hledger -f- roi --inv investment --pnl pnl -b 2017 -e 2018 -Q
<<<
2017-01-01 investment
assets:cash -$100
investment
# 2017-06-30 investment valuation
# investment = $110
# pnl
2017-06-30 investment valuation
investment = $110
pnl
# 2017-07-01 investment
# assets:cash -$100
# investment
2017-07-01 investment
assets:cash -$100
investment
# 2017-10-01 withdrawal
# assets:cash $50
# investment
2017-10-01 withdrawal
assets:cash $50
investment
# 2017-12-31 investment valuation
# investment = $155
# pnl
# >>>
# +---++------------+------------++---------------+----------+-------------+-----++---------+---------+
# | || Begin | End || Value (begin) | Cashflow | Value (end) | PnL || IRR | TWR |
# +===++============+============++===============+==========+=============+=====++=========+=========+
# | 1 || 2017/01/01 | 2017/03/31 || 0 | 100 | 100 | 0 || 0.00% | 0.00% |
# | 2 || 2017/04/01 | 2017/06/30 || 100 | 0 | 110 | 10 || 46.56% | 46.56% |
# | 3 || 2017/07/01 | 2017/09/30 || 110 | 100 | 210 | 0 || 0.00% | 0.00% |
# | 4 || 2017/10/01 | 2017/12/31 || 210 | -50 | 155 | -5 || -11.83% | -11.82% |
# +---++------------+------------++---------------+----------+-------------+-----++---------+---------+
2017-12-31 investment valuation
investment = $155
pnl
>>>
+---++------------+------------++---------------+----------+-------------+-----++---------+---------+
| || Begin | End || Value (begin) | Cashflow | Value (end) | PnL || IRR | TWR |
+===++============+============++===============+==========+=============+=====++=========+=========+
| 1 || 2017/01/01 | 2017/03/31 || 0 | 100 | 100 | 0 || 0.00% | 0.00% |
| 2 || 2017/04/01 | 2017/06/30 || 100 | 0 | 110 | 10 || 46.56% | 46.56% |
| 3 || 2017/07/01 | 2017/09/30 || 110 | 100 | 210 | 0 || 0.00% | 0.00% |
| 4 || 2017/10/01 | 2017/12/31 || 210 | -50 | 155 | -5 || -11.83% | -11.82% |
+---++------------+------------++---------------+----------+-------------+-----++---------+---------+
# >>>=0
>>>=0
# 7. Check that reporting for the part of the total history of investment works
hledger -f- roi --inv investment --pnl pnl -b 2017-06 -e 2018