# http://hledger.org/journal.html#market-prices # http://hledger.org/hledger.html#market-value # 1. Market prices are ignored by -B. < P 2011/01/01 € $1.35 2011/01/01 expenses:foreign €100 assets $ hledger -f- bal -NB €-100 assets €100 expenses:foreign # 2. Market prices are used by bal -V. # Market prices for other commodities are not used. # Nor are transaction prices. < P 2011/01/01 € $1.35 P 2011/01/01 GBP $1.35 2011/01/01 (expenses:foreign) €100 @ $1.20 $ hledger -f- bal -N -V $135.00 expenses:foreign # 3. The location of price directives does not matter. # If multiple directives have the same date, the last parsed is used. < 3000/01/01 (a) $100 P 2000/1/1 $ €1.35 3000/03/03 (b) $100 P 2000/1/1 $ €1.30 $ hledger -f- bal -N -V a €130.00 a # 4. Market prices in the future (later than today's date) are ignored by default. #453, #683 < P 2000/1/1 $ €1.20 P 3000/1/1 $ €1.30 3000/01/01 (a) $100 $ hledger -f- bal -N -V €120.00 a # 5. Market prices in the future are still ignored by default even # with an explicit future report end date, unlike hledger 1.14-. < P 3000/1/1 $ €1.10 3000/01/01 (a) $100 $ hledger -f- bal -N -V -e 3000/2 $100 a # 6. Market prices interact with D directives and with amount style canonicalisation. #131 < D 1000.00 H ; declare a default commodity named H P 2015/08/14 EEEE 41.66 ; default commodity H is used for these market prices P 2015/08/14 FFFF 74.62 P 2015/08/14 GGGG 32.39 2015/08/15 a 2.4120 EEEE @@ 100 ; default commodity H is used for these transaction prices a 0.3350 FFFF @@ 25 a 0.7718 GGGG @@ 25 b ; implicit balancing amount is in the cost commodity, H $ hledger -f- balance -V 150.48 H a -150.00 H b -------------------- 0.48 H # 7. register -V affects posting amounts and total. < P 2000/1/1 $ €1.20 2000/1/1 (a) $100 $ hledger -f- reg -V 2000/01/01 (a) €120.00 €120.00 # 8. print -V affects posting amounts but not balance assertions. < P 2000/1/1 $ €1.20 2000/1/1 (a) $100 = $100 $ hledger -f- print -V 2000/01/01 (a) €120.00 = $100 >=0 # --value-at tests < P 2000/01/01 A 1 B P 2000/01/15 A 5 B P 2000/02/01 A 2 B P 2000/03/01 A 3 B P 2000/04/01 A 4 B 2000/01/01 (a) 1 A 2000/02/01 (a) 1 A 2000/03/01 (a) 1 A # print # 9. print value using prices on transaction (posting) dates $ hledger -f- print --value-at=transaction 2000/01/01 (a) 1 B 2000/02/01 (a) 2 B 2000/03/01 (a) 3 B >=0 # 10. print value using prices on last day of report period (2000-02-29) $ hledger -f- print --value-at=period date:2000/01-2000/03 2000/01/01 (a) 2 B 2000/02/01 (a) 2 B >=0 # 11. print value using prices on last day of report period (no period specified) # specified - uses last day of journal (2000-03-01) $ hledger -f- print --value-at=period 2000/01/01 (a) 3 B 2000/02/01 (a) 3 B 2000/03/01 (a) 3 B >=0 # 12. print value using prices on a specified date $ hledger -f- print --value-at=2000-01-15 2000/01/01 (a) 5 B 2000/02/01 (a) 5 B 2000/03/01 (a) 5 B >=0 # 13. print value using prices today # (assuming today's date is >= 2000-04-01) $ hledger -f- print --value-at=now 2000/01/01 (a) 4 B 2000/02/01 (a) 4 B 2000/03/01 (a) 4 B >=0 # register # 14. register report valued at transaction. # Shows the running total of the posting amount values (not the values # of the running total). $ hledger -f- reg --value-at=transaction 2000/01/01 (a) 1 B 1 B 2000/02/01 (a) 2 B 3 B 2000/03/01 (a) 3 B 6 B # 15. register report valued at period end $ hledger -f- reg --value-at=period 2000/01/01 (a) 3 B 3 B 2000/02/01 (a) 3 B 6 B 2000/03/01 (a) 3 B 9 B # 16. register report valued at specified date $ hledger -f- reg --value-at=2000-01-15 2000/01/01 (a) 5 B 5 B 2000/02/01 (a) 5 B 10 B 2000/03/01 (a) 5 B 15 B # 17. register report valued today $ hledger -f- reg --value-at=now 2000/01/01 (a) 4 B 4 B 2000/02/01 (a) 4 B 8 B 2000/03/01 (a) 4 B 12 B # 18. register report valued at default date (same as above) $ hledger -f- reg -V 2000/01/01 (a) 4 B 4 B 2000/02/01 (a) 4 B 8 B 2000/03/01 (a) 4 B 12 B # register with -H (starting balance) # 19. register with starting balance, valued at transaction. # Shows the running total of the posting amount values (not the values of the running total). # The starting balance is 1 A, valued at 2000/1/31 (day before report start), which is 5 B. $ hledger -f- reg --value-at=transaction -b 200002 -H 2000/02/01 (a) 2 B 7 B 2000/03/01 (a) 3 B 10 B # 20. register with starting balance, valued at period end. # That is unspecified so the last posting date is used, ie 2000/3/1, so the price is 3 B. # Starting balance is 5 B as above. $ hledger -f- reg --value-at=period -b 200002 -H 2000/02/01 (a) 3 B 8 B 2000/03/01 (a) 3 B 11 B # 21. register with starting balance, valued at specified date (when the price is 5 B). # Starting balance is 5 B as above. $ hledger -f- reg --value-at=2000-01-15 -b 200002 -H 2000/02/01 (a) 5 B 10 B 2000/03/01 (a) 5 B 15 B # register, periodic # 22. periodic register report valued at transaction. # The total for january is 6 B (1 A valued at 1/1, price 1 B, and 1 A # valued at 1/20, price 5 B). # Need an extra transaction for this test: < P 2000/01/01 A 1 B P 2000/01/15 A 5 B P 2000/02/01 A 2 B P 2000/03/01 A 3 B P 2000/04/01 A 4 B 2000/01/01 (a) 1 A 2000/01/20 (a) 1 A 2000/02/01 (a) 1 A 2000/03/01 (a) 1 A $ hledger -f- reg --value-at=transaction -M 2000/01 a 6 B 6 B 2000/02 a 2 B 8 B 2000/03 a 3 B 11 B # back to the original test journal: < P 2000/01/01 A 1 B P 2000/01/15 A 5 B P 2000/02/01 A 2 B P 2000/03/01 A 3 B P 2000/04/01 A 4 B 2000/01/01 (a) 1 A 2000/02/01 (a) 1 A 2000/03/01 (a) 1 A # 23. periodic register report valued at period end $ hledger -f- reg --value-at=period -M 2000/01 a 5 B 5 B 2000/02 a 2 B 7 B 2000/03 a 3 B 10 B # 24. periodic register report valued at specified date $ hledger -f- reg --value-at=2000-01-15 -M 2000/01 a 5 B 5 B 2000/02 a 5 B 10 B 2000/03 a 5 B 15 B # 25. periodic register report valued today $ hledger -f- reg --value-at=now -M 2000/01 a 4 B 4 B 2000/02 a 4 B 8 B 2000/03 a 4 B 12 B # 26. periodic register report valued at default date (same as above) $ hledger -f- reg -V -M 2000/01 a 4 B 4 B 2000/02 a 4 B 8 B 2000/03 a 4 B 12 B # balance # 27. single column balance report valued at transaction $ hledger -f- bal --value-at=transaction 6 B a -------------------- 6 B # 28. single column balance report valued at period end $ hledger -f- bal --value-at=period 9 B a -------------------- 9 B # 29. single column balance report valued at specified date $ hledger -f- bal --value-at=2000-01-15 15 B a -------------------- 15 B # 30. single column balance report valued today $ hledger -f- bal --value-at=now 12 B a -------------------- 12 B # 31. single column balance report valued at default date (same as above) $ hledger -f- bal -V 12 B a -------------------- 12 B # balance, periodic # 32. multicolumn balance report valued at transaction $ hledger -f- bal -MTA --value-at=transaction Balance changes in 2000q1: || Jan Feb Mar Total Average ===++================================= a || 1 B 2 B 3 B 6 B 2 B ---++--------------------------------- || 1 B 2 B 3 B 6 B 2 B # 33. multicolumn balance report valued at period end $ hledger -f- bal -M --value-at=period Balance changes in 2000q1: || Jan Feb Mar ===++=============== a || 5 B 2 B 3 B ---++--------------- || 5 B 2 B 3 B # 34. multicolumn balance report valued at period end with -T or -A $ hledger -f- bal -M --value-at=period -TA Balance changes in 2000q1: || Jan Feb Mar Total Average ===++================================= a || 5 B 2 B 3 B 9 B 3 B ---++--------------------------------- || 5 B 2 B 3 B 9 B 3 B # 35. multicolumn balance report valued at other date $ hledger -f- bal -MTA --value-at=2000-01-15 Balance changes in 2000q1: || Jan Feb Mar Total Average ===++================================= a || 5 B 5 B 5 B 15 B 5 B ---++--------------------------------- || 5 B 5 B 5 B 15 B 5 B # 36. multicolumn balance report valued today (with today >= 2000-04-01) $ hledger -f- bal -M --value-at=now Balance changes in 2000q1: || Jan Feb Mar ===++=============== a || 4 B 4 B 4 B ---++--------------- || 4 B 4 B 4 B # 37. multicolumn balance report valued at default date (same as above) $ hledger -f- bal -M -V Balance changes in 2000q1: || Jan Feb Mar ===++=============== a || 4 B 4 B 4 B ---++--------------- || 4 B 4 B 4 B # balance, periodic, with -H (starting balance and accumulating across periods) # 38. multicolumn balance report with -H valued at transaction. # The starting balance is 1 B (1 A valued at 2000/1/1, transaction date). $ hledger -f- bal -M -H -b 200002 --value-at=transaction Ending balances (historical) in 2000/02/01-2000/03/31: || 2000/02/29 2000/03/31 ===++======================== a || 3 B 6 B ---++------------------------ || 3 B 6 B # 39. multicolumn balance report with -H valued at period end. # The starting balance is 5 B (1 A valued at 2000/1/31, day before report start).. and has no effect here. $ hledger -f- bal -M -H -b 200002 --value-at=period Ending balances (historical) in 2000/02/01-2000/03/31: || 2000/02/29 2000/03/31 ===++======================== a || 4 B 9 B ---++------------------------ || 4 B 9 B # 40. multicolumn balance report with -H valued at other date. # The starting balance is 5 B (1 A valued at 2000/1/15). $ hledger -f- bal -M -H -b 200002 --value-at=2000-01-15 Ending balances (historical) in 2000/02/01-2000/03/31: || 2000/02/29 2000/03/31 ===++======================== a || 10 B 15 B ---++------------------------ || 10 B 15 B # 41. multicolumn balance report with -H, valuing each period's carried-over balances at transaction date. < P 2000/01/01 A 1 B P 2000/01/15 A 5 B P 2000/02/01 A 2 B P 2000/03/01 A 3 B P 2000/04/01 A 4 B 2000/01/01 (a) 1 A $ hledger -f- bal -ME -H -p200001-200004 --value-at=t Ending balances (historical) in 2000q1: || 2000/01/31 2000/02/29 2000/03/31 ===++==================================== a || 1 B 1 B 1 B ---++------------------------------------ || 1 B 1 B 1 B # 42. multicolumn balance report with -H, valuing each period's carried-over balances at period end. # $ hledger -f- bal -ME -H -p200001-200004 --value-at=p # Ending balances (historical) in 2000q1: # || 2000/01/31 2000/02/29 2000/03/31 # ===++==================================== # a || 5 B 2 B 3 B # ---++------------------------------------ # || 5 B 2 B 3 B # 43. multicolumn balance report with -H, valuing each period's carried-over balances at other date. $ hledger -f- bal -ME -H -p200001-200004 --value-at=2000-01-15 Ending balances (historical) in 2000q1: || 2000/01/31 2000/02/29 2000/03/31 ===++==================================== a || 5 B 5 B 5 B ---++------------------------------------ || 5 B 5 B 5 B # balance --budget. The periodic transactions setting budget amounts # are valued in the same way as ordinary transactions. < P 2000/01/01 A 1 B P 2000/01/15 A 5 B P 2000/02/01 A 2 B P 2000/03/01 A 3 B P 2000/04/01 A 4 B ~ monthly (a) 2 A 2000/01/01 (a) 1 A 2000/02/01 (a) 1 A 2000/03/01 (a) 1 A # 44. budget report, unvalued (for reference). $ hledger -f- bal -M --budget Budget performance in 2000q1: || Jan Feb Mar ===++============================================================ a || 1 A [ 50% of 2 A] 1 A [ 50% of 2 A] 1 A [ 50% of 2 A] ---++------------------------------------------------------------ || 1 A [ 50% of 2 A] 1 A [ 50% of 2 A] 1 A [ 50% of 2 A] # 45. budget report, valued at transaction dates. $ hledger -f- bal -MTA --budget --value-at=t Budget performance in 2000q1: || Jan Feb Mar Total Average ===++===================================================================================================== a || 1 B [ 50% of 2 B] 2 B [ 50% of 4 B] 3 B [ 50% of 6 B] 6 B [ 50% of 12 B] 2 B [ 50% of 4 B] ---++----------------------------------------------------------------------------------------------------- || 1 B [ 50% of 2 B] 2 B [ 50% of 4 B] 3 B [ 50% of 6 B] 6 B [ 50% of 12 B] 2 B [ 50% of 4 B] # 46. budget report, valued at period ends. $ hledger -f- bal -MTA --budget --value-at=p Budget performance in 2000q1: || Jan Feb Mar Total Average ===++========================================================================================================= a || 5 B [ 50% of 10 B] 2 B [ 50% of 4 B] 3 B [ 50% of 6 B] 9 B [ 50% of 18 B] 3 B [ 50% of 6 B] ---++--------------------------------------------------------------------------------------------------------- || 5 B [ 50% of 10 B] 2 B [ 50% of 4 B] 3 B [ 50% of 6 B] 9 B [ 50% of 18 B] 3 B [ 50% of 6 B] # 47. budget report, valued at other date. $ hledger -f- bal -MTA --budget --value-at=2000-01-15 Budget performance in 2000q1: || Jan Feb Mar Total Average ===++========================================================================================================== a || 5 B [ 50% of 10 B] 5 B [ 50% of 10 B] 5 B [ 50% of 10 B] 15 B [ 50% of 30 B] 5 B [ 50% of 10 B] ---++---------------------------------------------------------------------------------------------------------- || 5 B [ 50% of 10 B] 5 B [ 50% of 10 B] 5 B [ 50% of 10 B] 15 B [ 50% of 30 B] 5 B [ 50% of 10 B]