;regen manuals
This commit is contained in:
		
							parent
							
								
									ec1a8c7296
								
							
						
					
					
						commit
						fae1cc262e
					
				| @ -139,12 +139,19 @@ show items with zero amount, normally hidden (and vice-versa in | |||||||
| hledger-ui/hledger-web) | hledger-ui/hledger-web) | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]-B --cost\f[B]\f[R] | \f[B]\f[CB]-B --cost\f[B]\f[R] | ||||||
| convert amounts to their cost at transaction time (using the transaction | convert amounts to their cost/selling amount at transaction time | ||||||
| price, if any) |  | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]-V --value\f[B]\f[R] | \f[B]\f[CB]-V --market\f[B]\f[R] | ||||||
| convert amounts to their market value on the report end date (using the | convert amounts to their market value in default valuation commodities | ||||||
| most recent applicable market price, if any) | .TP | ||||||
|  | \f[B]\f[CB]-X --exchange=COMM\f[B]\f[R] | ||||||
|  | convert amounts to their market value in commodity COMM | ||||||
|  | .TP | ||||||
|  | \f[B]\f[CB]--value\f[B]\f[R] | ||||||
|  | convert amounts to cost or market value, more flexibly than -B/-V/-X | ||||||
|  | .TP | ||||||
|  | \f[B]\f[CB]--infer-value\f[B]\f[R] | ||||||
|  | with -V/-X/--value, also infer market prices from transactions | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]--auto\f[B]\f[R] | \f[B]\f[CB]--auto\f[B]\f[R] | ||||||
| apply automated posting rules to modify transactions. | apply automated posting rules to modify transactions. | ||||||
|  | |||||||
| @ -152,12 +152,21 @@ the data. | |||||||
|      hledger-ui/hledger-web) |      hledger-ui/hledger-web) | ||||||
| '-B --cost' | '-B --cost' | ||||||
| 
 | 
 | ||||||
|      convert amounts to their cost at transaction time (using the |      convert amounts to their cost/selling amount at transaction time | ||||||
|      transaction price, if any) | '-V --market' | ||||||
| '-V --value' |  | ||||||
| 
 | 
 | ||||||
|      convert amounts to their market value on the report end date (using |      convert amounts to their market value in default valuation | ||||||
|      the most recent applicable market price, if any) |      commodities | ||||||
|  | '-X --exchange=COMM' | ||||||
|  | 
 | ||||||
|  |      convert amounts to their market value in commodity COMM | ||||||
|  | '--value' | ||||||
|  | 
 | ||||||
|  |      convert amounts to cost or market value, more flexibly than | ||||||
|  |      -B/-V/-X | ||||||
|  | '--infer-value' | ||||||
|  | 
 | ||||||
|  |      with -V/-X/-value, also infer market prices from transactions | ||||||
| '--auto' | '--auto' | ||||||
| 
 | 
 | ||||||
|      apply automated posting rules to modify transactions. |      apply automated posting rules to modify transactions. | ||||||
| @ -501,24 +510,24 @@ Tag Table: | |||||||
| Node: Top71 | Node: Top71 | ||||||
| Node: OPTIONS1470 | Node: OPTIONS1470 | ||||||
| Ref: #options1567 | Ref: #options1567 | ||||||
| Node: KEYS4998 | Node: KEYS5182 | ||||||
| Ref: #keys5093 | Ref: #keys5277 | ||||||
| Node: SCREENS9369 | Node: SCREENS9553 | ||||||
| Ref: #screens9474 | Ref: #screens9658 | ||||||
| Node: Accounts screen9564 | Node: Accounts screen9748 | ||||||
| Ref: #accounts-screen9692 | Ref: #accounts-screen9876 | ||||||
| Node: Register screen11908 | Node: Register screen12092 | ||||||
| Ref: #register-screen12063 | Ref: #register-screen12247 | ||||||
| Node: Transaction screen14060 | Node: Transaction screen14244 | ||||||
| Ref: #transaction-screen14218 | Ref: #transaction-screen14402 | ||||||
| Node: Error screen15088 | Node: Error screen15272 | ||||||
| Ref: #error-screen15210 | Ref: #error-screen15394 | ||||||
| Node: ENVIRONMENT15454 | Node: ENVIRONMENT15638 | ||||||
| Ref: #environment15568 | Ref: #environment15752 | ||||||
| Node: FILES16375 | Node: FILES16559 | ||||||
| Ref: #files16474 | Ref: #files16658 | ||||||
| Node: BUGS16687 | Node: BUGS16871 | ||||||
| Ref: #bugs16764 | Ref: #bugs16948 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -135,12 +135,21 @@ OPTIONS | |||||||
|               hledger-ui/hledger-web) |               hledger-ui/hledger-web) | ||||||
| 
 | 
 | ||||||
|        -B --cost |        -B --cost | ||||||
|               convert amounts to their cost at  transaction  time  (using  the |               convert amounts to their cost/selling amount at transaction time | ||||||
|               transaction price, if any) |  | ||||||
| 
 | 
 | ||||||
|        -V --value |        -V --market | ||||||
|               convert  amounts  to  their  market value on the report end date |               convert amounts to their market value in default valuation  com- | ||||||
|               (using the most recent applicable market price, if any) |               modities | ||||||
|  | 
 | ||||||
|  |        -X --exchange=COMM | ||||||
|  |               convert amounts to their market value in commodity COMM | ||||||
|  | 
 | ||||||
|  |        --value | ||||||
|  |               convert  amounts  to  cost  or  market value, more flexibly than | ||||||
|  |               -B/-V/-X | ||||||
|  | 
 | ||||||
|  |        --infer-value | ||||||
|  |               with -V/-X/--value, also infer market prices from transactions | ||||||
| 
 | 
 | ||||||
|        --auto apply automated posting rules to modify transactions. |        --auto apply automated posting rules to modify transactions. | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -165,12 +165,19 @@ show items with zero amount, normally hidden (and vice-versa in | |||||||
| hledger-ui/hledger-web) | hledger-ui/hledger-web) | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]-B --cost\f[B]\f[R] | \f[B]\f[CB]-B --cost\f[B]\f[R] | ||||||
| convert amounts to their cost at transaction time (using the transaction | convert amounts to their cost/selling amount at transaction time | ||||||
| price, if any) |  | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]-V --value\f[B]\f[R] | \f[B]\f[CB]-V --market\f[B]\f[R] | ||||||
| convert amounts to their market value on the report end date (using the | convert amounts to their market value in default valuation commodities | ||||||
| most recent applicable market price, if any) | .TP | ||||||
|  | \f[B]\f[CB]-X --exchange=COMM\f[B]\f[R] | ||||||
|  | convert amounts to their market value in commodity COMM | ||||||
|  | .TP | ||||||
|  | \f[B]\f[CB]--value\f[B]\f[R] | ||||||
|  | convert amounts to cost or market value, more flexibly than -B/-V/-X | ||||||
|  | .TP | ||||||
|  | \f[B]\f[CB]--infer-value\f[B]\f[R] | ||||||
|  | with -V/-X/--value, also infer market prices from transactions | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]--auto\f[B]\f[R] | \f[B]\f[CB]--auto\f[B]\f[R] | ||||||
| apply automated posting rules to modify transactions. | apply automated posting rules to modify transactions. | ||||||
|  | |||||||
| @ -176,12 +176,21 @@ before options, as shown in the synopsis above. | |||||||
|      hledger-ui/hledger-web) |      hledger-ui/hledger-web) | ||||||
| '-B --cost' | '-B --cost' | ||||||
| 
 | 
 | ||||||
|      convert amounts to their cost at transaction time (using the |      convert amounts to their cost/selling amount at transaction time | ||||||
|      transaction price, if any) | '-V --market' | ||||||
| '-V --value' |  | ||||||
| 
 | 
 | ||||||
|      convert amounts to their market value on the report end date (using |      convert amounts to their market value in default valuation | ||||||
|      the most recent applicable market price, if any) |      commodities | ||||||
|  | '-X --exchange=COMM' | ||||||
|  | 
 | ||||||
|  |      convert amounts to their market value in commodity COMM | ||||||
|  | '--value' | ||||||
|  | 
 | ||||||
|  |      convert amounts to cost or market value, more flexibly than | ||||||
|  |      -B/-V/-X | ||||||
|  | '--infer-value' | ||||||
|  | 
 | ||||||
|  |      with -V/-X/-value, also infer market prices from transactions | ||||||
| '--auto' | '--auto' | ||||||
| 
 | 
 | ||||||
|      apply automated posting rules to modify transactions. |      apply automated posting rules to modify transactions. | ||||||
| @ -566,20 +575,20 @@ Tag Table: | |||||||
| Node: Top72 | Node: Top72 | ||||||
| Node: OPTIONS1746 | Node: OPTIONS1746 | ||||||
| Ref: #options1851 | Ref: #options1851 | ||||||
| Node: PERMISSIONS8195 | Node: PERMISSIONS8379 | ||||||
| Ref: #permissions8334 | Ref: #permissions8518 | ||||||
| Node: EDITING UPLOADING DOWNLOADING9546 | Node: EDITING UPLOADING DOWNLOADING9730 | ||||||
| Ref: #editing-uploading-downloading9727 | Ref: #editing-uploading-downloading9911 | ||||||
| Node: RELOADING10561 | Node: RELOADING10745 | ||||||
| Ref: #reloading10695 | Ref: #reloading10879 | ||||||
| Node: JSON API11128 | Node: JSON API11312 | ||||||
| Ref: #json-api11242 | Ref: #json-api11426 | ||||||
| Node: ENVIRONMENT16723 | Node: ENVIRONMENT16907 | ||||||
| Ref: #environment16839 | Ref: #environment17023 | ||||||
| Node: FILES17572 | Node: FILES17756 | ||||||
| Ref: #files17672 | Ref: #files17856 | ||||||
| Node: BUGS17885 | Node: BUGS18069 | ||||||
| Ref: #bugs17963 | Ref: #bugs18147 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -156,12 +156,21 @@ OPTIONS | |||||||
|               hledger-ui/hledger-web) |               hledger-ui/hledger-web) | ||||||
| 
 | 
 | ||||||
|        -B --cost |        -B --cost | ||||||
|               convert amounts to their cost at  transaction  time  (using  the |               convert amounts to their cost/selling amount at transaction time | ||||||
|               transaction price, if any) |  | ||||||
| 
 | 
 | ||||||
|        -V --value |        -V --market | ||||||
|               convert  amounts  to  their  market value on the report end date |               convert amounts to their market value in default valuation  com- | ||||||
|               (using the most recent applicable market price, if any) |               modities | ||||||
|  | 
 | ||||||
|  |        -X --exchange=COMM | ||||||
|  |               convert amounts to their market value in commodity COMM | ||||||
|  | 
 | ||||||
|  |        --value | ||||||
|  |               convert  amounts  to  cost  or  market value, more flexibly than | ||||||
|  |               -B/-V/-X | ||||||
|  | 
 | ||||||
|  |        --infer-value | ||||||
|  |               with -V/-X/--value, also infer market prices from transactions | ||||||
| 
 | 
 | ||||||
|        --auto apply automated posting rules to modify transactions. |        --auto apply automated posting rules to modify transactions. | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -617,12 +617,19 @@ show items with zero amount, normally hidden (and vice-versa in | |||||||
| hledger-ui/hledger-web) | hledger-ui/hledger-web) | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]-B --cost\f[B]\f[R] | \f[B]\f[CB]-B --cost\f[B]\f[R] | ||||||
| convert amounts to their cost at transaction time (using the transaction | convert amounts to their cost/selling amount at transaction time | ||||||
| price, if any) |  | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]-V --value\f[B]\f[R] | \f[B]\f[CB]-V --market\f[B]\f[R] | ||||||
| convert amounts to their market value on the report end date (using the | convert amounts to their market value in default valuation commodities | ||||||
| most recent applicable market price, if any) | .TP | ||||||
|  | \f[B]\f[CB]-X --exchange=COMM\f[B]\f[R] | ||||||
|  | convert amounts to their market value in commodity COMM | ||||||
|  | .TP | ||||||
|  | \f[B]\f[CB]--value\f[B]\f[R] | ||||||
|  | convert amounts to cost or market value, more flexibly than -B/-V/-X | ||||||
|  | .TP | ||||||
|  | \f[B]\f[CB]--infer-value\f[B]\f[R] | ||||||
|  | with -V/-X/--value, also infer market prices from transactions | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]--auto\f[B]\f[R] | \f[B]\f[CB]--auto\f[B]\f[R] | ||||||
| apply automated posting rules to modify transactions. | apply automated posting rules to modify transactions. | ||||||
| @ -1671,47 +1678,143 @@ $ hledger balance --pivot member acct:. | |||||||
| .fi | .fi | ||||||
| .SS Valuation | .SS Valuation | ||||||
| .PP | .PP | ||||||
| hledger can show cost reports, where amounts are converted to their cost | Instead of reporting amounts in their original commodity, hledger can | ||||||
| or sale amount at transaction time; or value reports, where amounts are | convert them to: | ||||||
| converted to their market value in another currency/commodity at a | .IP \[bu] 2 | ||||||
| specified date (using market prices inferred from your transactions, or | cost (or sale amount), using the conversion rate recorded as part of the | ||||||
| declared with P directives). | transaction (transaction price). | ||||||
|  | .IP \[bu] 2 | ||||||
|  | value, using the market prices in effect on certain date(s). | ||||||
| .PP | .PP | ||||||
| We call this \[dq]valuation\[dq], and it is controlled by the | We call this \[dq]valuation\[dq], and it is controlled in full by the | ||||||
| \f[C]--value=VALUATIONTYPE[,COMMODITY]\f[R] option. | \f[C]--value=VALUATIONTYPE[,COMMODITY]\f[R] option. | ||||||
| It can get a little involved, so we cover all the details below. | But we also provide simpler, Ledger-compatible | ||||||
| But most of the time, all you need to do is use these simpler flags | \f[C]-B\f[R]/\f[C]-V\f[R]/\f[C]-X\f[R] flags, and usually one of these | ||||||
| instead: | is all you need: | ||||||
| .IP \[bu] 2 |  | ||||||
| \f[C]-B\f[R] to convert to cost/sale amount, or |  | ||||||
| .IP \[bu] 2 |  | ||||||
| \f[C]-V\f[R] to convert to market value in your base currency. |  | ||||||
| Or occasionally, |  | ||||||
| .IP \[bu] 2 |  | ||||||
| \f[C]-X COMMODITY\f[R] to convert to market value in some other |  | ||||||
| currency. |  | ||||||
| .SS -B: Cost | .SS -B: Cost | ||||||
| .PP | .PP | ||||||
| The \f[C]-B/--cost\f[R] flag converts amounts to their cost or sale | The \f[C]-B/--cost\f[R] flag converts amounts to their cost or sale | ||||||
| amount at transaction time, if they have a transaction price specified. | amount at transaction time, if they have a transaction price specified. | ||||||
| (It is equivalent to \f[C]--value=cost\f[R].) |  | ||||||
| .SS -V: Value | .SS -V: Value | ||||||
| .PP | .PP | ||||||
| The \f[C]-V/--market\f[R] flag converts reported amounts to market value | The \f[C]-V/--market\f[R] flag converts amounts to market value in their | ||||||
| in their \f[I]default valuation commodity\f[R], using the market prices | default \f[I]valuation commodity\f[R], using the market prices in effect | ||||||
| in effect on a \f[I]default valuation date\f[R]. | on the \f[I]valuation date(s)\f[R], if any. | ||||||
| (More on these below.) | More on these things in a minute. | ||||||
|  | .SS -X: Value in specified commodity | ||||||
| .PP | .PP | ||||||
| The default valuation commodity is the one referenced in the latest | The \f[C]-X/--exchange\f[R] option is like \f[C]-V\f[R] except the | ||||||
| applicable market price dated on or before the valuation date. | desired valuation currency is specified explicitly. | ||||||
| Typically your P declarations or currency exchange transactions | .SS Valuation date | ||||||
| reference a single base currency, and -V will pick that. |  | ||||||
| .PP | .PP | ||||||
| The default valuation date is today for single period reports | For single period reports, if an explicit report end date is specified, | ||||||
| (equivalent to \f[C]--value=now\f[R]), or the last day of each subperiod | that will be used as the valuation date; otherwise the valuation date is | ||||||
| for multiperiod reports (equivalent to \f[C]--value=end\f[R]). | \[dq]today\[dq]. | ||||||
| .PP | .PP | ||||||
| An example: | For multiperiod reports, each column/period is valued on the last day of | ||||||
|  | the period. | ||||||
|  | .SS Market prices | ||||||
|  | .PP | ||||||
|  | \f[I](experimental)\f[R] | ||||||
|  | .PP | ||||||
|  | To convert a commodity A to its market value in another commodity B, | ||||||
|  | hledger looks for a suitable market price (exchange rate) as follows, in | ||||||
|  | this order of preference : | ||||||
|  | .IP "1." 3 | ||||||
|  | A \f[I]declared market price\f[R] or \f[I]inferred market price\f[R]: | ||||||
|  | A\[aq]s latest market price in B on or before the valuation date as | ||||||
|  | declared by a P directive, or (if the \f[C]--infer-value\f[R] flag is | ||||||
|  | used) inferred from transaction prices. | ||||||
|  | .IP "2." 3 | ||||||
|  | A \f[I]reverse market price\f[R]: the inverse of a declared or inferred | ||||||
|  | market price from B to A. | ||||||
|  | .IP "3." 3 | ||||||
|  | A \f[I]chained market price\f[R]: a synthetic price formed by combining | ||||||
|  | the shortest chain of market prices (any of the above types) leading | ||||||
|  | from A to B. | ||||||
|  | .PP | ||||||
|  | Amounts for which no applicable market price can be found, are not | ||||||
|  | converted. | ||||||
|  | .SS --infer-value: market prices from transactions | ||||||
|  | .PP | ||||||
|  | \f[I](experimental)\f[R] | ||||||
|  | .PP | ||||||
|  | Normally, market value in hledger is fully controlled by, and requires, | ||||||
|  | P directives in your journal. | ||||||
|  | Since adding and updating those can be a chore, and since transactions | ||||||
|  | usually take place at close to market value, why not use the recorded | ||||||
|  | transaction prices as additional market prices (as Ledger does) ? | ||||||
|  | We could produce value reports without needing P directives at all. | ||||||
|  | .PP | ||||||
|  | Adding the \f[C]--infer-value\f[R] flag to \f[C]-V\f[R], \f[C]-X\f[R] or | ||||||
|  | \f[C]--value\f[R] enables this. | ||||||
|  | So for example, \f[C]hledger bs -V --infer-value\f[R] will get market | ||||||
|  | prices both from P directives and from transactions. | ||||||
|  | .PP | ||||||
|  | There is a downside to this: value reports can be affected in | ||||||
|  | confusing/undesired ways by your journal entries. | ||||||
|  | If this happens to you, read all of this Valuation section carefully, | ||||||
|  | and try adding \f[C]--debug\f[R] or \f[C]--debug=2\f[R] to troubleshoot | ||||||
|  | the reason. | ||||||
|  | .PP | ||||||
|  | \f[C]--infer-value\f[R] can infer market prices from: | ||||||
|  | .IP \[bu] 2 | ||||||
|  | multicommodity transactions with explicit prices | ||||||
|  | (\f[C]\[at]\f[R]/\f[C]\[at]\[at]\f[R]) | ||||||
|  | .IP \[bu] 2 | ||||||
|  | multicommodity transactions with implicit prices (no \f[C]\[at]\f[R], | ||||||
|  | two commodities, unbalanced). | ||||||
|  | (With these, the order of postings matters. | ||||||
|  | \f[C]hledger print -x\f[R] can be useful for troubleshooting.) | ||||||
|  | .IP \[bu] 2 | ||||||
|  | but not, currently, from \[dq]more correct\[dq] multicommodity | ||||||
|  | transactions (no \f[C]\[at]\f[R], multiple commodities, balanced). | ||||||
|  | .SS Valuation commodity | ||||||
|  | .PP | ||||||
|  | \f[I](experimental)\f[R] | ||||||
|  | .PP | ||||||
|  | \f[B]When you specify a valuation commodity (\f[CB]-X COMM\f[B] or | ||||||
|  | \f[CB]--value TYPE,COMM\f[B]):\f[R] | ||||||
|  | .PD 0 | ||||||
|  | .P | ||||||
|  | .PD | ||||||
|  | hledger will convert all amounts to COMM, wherever it can find a | ||||||
|  | suitable market price (including by reversing or chaining prices). | ||||||
|  | .PP | ||||||
|  | \f[B]When you leave the valuation commodity unspecified (\f[CB]-V\f[B] | ||||||
|  | or \f[CB]--value TYPE\f[B]):\f[R] | ||||||
|  | .PD 0 | ||||||
|  | .P | ||||||
|  | .PD | ||||||
|  | For each commodity A, hledger picks a default valuation commodity as | ||||||
|  | follows, in this order of preference: | ||||||
|  | .IP "1." 3 | ||||||
|  | The price commodity from the latest P-declared market price for A on or | ||||||
|  | before valuation date. | ||||||
|  | .IP "2." 3 | ||||||
|  | The price commodity from the latest P-declared market price for A on any | ||||||
|  | date. | ||||||
|  | (Allows conversion to proceed when there are inferred prices before the | ||||||
|  | valuation date.) | ||||||
|  | .IP "3." 3 | ||||||
|  | If there are no P directives at all (any commodity or date) and the | ||||||
|  | \f[C]--infer-value\f[R] flag is used: the price commodity from the | ||||||
|  | latest transaction-inferred price for A on or before valuation date. | ||||||
|  | .PP | ||||||
|  | Amounts for which no valuation commodity can be found are not converted. | ||||||
|  | .PP | ||||||
|  | This means: | ||||||
|  | .IP \[bu] 2 | ||||||
|  | If you have any P directives, they alone determine which commodities | ||||||
|  | \f[C]-V\f[R] will convert, and to what. | ||||||
|  | .IP \[bu] 2 | ||||||
|  | If you have no P directives, and you add the \f[C]--infer-value\f[R] | ||||||
|  | flag, transaction prices determine what \f[C]-V\f[R] converts. | ||||||
|  | .IP \[bu] 2 | ||||||
|  | \f[C]-X\f[R] tries harder to convert everything to just one commodity. | ||||||
|  | .SS Simple valuation examples | ||||||
|  | .PP | ||||||
|  | Here are some quick examples of \f[C]-V\f[R]: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| @ -1755,39 +1858,8 @@ $ hledger -f t.j bal -N euros -V | |||||||
|              $103.00  assets:euros |              $103.00  assets:euros | ||||||
| \f[R] | \f[R] | ||||||
| .fi | .fi | ||||||
| .SS -X: Market value in specified commodity |  | ||||||
| .PP |  | ||||||
| The \f[C]-X/--exchange\f[R] option is like \f[C]-V\f[R], except it |  | ||||||
| specifies the target commodity you would like to convert to. |  | ||||||
| (It is equivalent to \f[C]--value=now,COMM\f[R] or |  | ||||||
| \f[C]--value=end,COMM\f[R].) |  | ||||||
| .SS Market prices |  | ||||||
| .PP |  | ||||||
| To convert a commodity A to commodity B, hledger looks for a suitable |  | ||||||
| market price (exchange rate) in the following ways, in this order of |  | ||||||
| preference: |  | ||||||
| .IP "1." 3 |  | ||||||
| a \f[I]declared market price\f[R] - the latest P directive specifying |  | ||||||
| the exchange rate from A to B, dated on or before the valuation date. |  | ||||||
| .IP "2." 3 |  | ||||||
| a \f[I]transaction-implied market price\f[R] - a market price matching |  | ||||||
| the transaction price used in the latest transaction where A is |  | ||||||
| converted to B, dated on or before the valuation date. |  | ||||||
| (\f[I]since hledger 1.18; experimental\f[R]) |  | ||||||
| .IP "3." 3 |  | ||||||
| a \f[I]reverse declared market price\f[R] - calculated by inverting a |  | ||||||
| declared market price from B to A. |  | ||||||
| .IP "4." 3 |  | ||||||
| a \f[I]reverse transaction-implied market price\f[R] - calculated by |  | ||||||
| inverting a transaction-implied market price from B to A. |  | ||||||
| .IP "5." 3 |  | ||||||
| an \f[I]indirect market price\f[R] - calculated by combining the |  | ||||||
| shortest chain of market prices (any of the above types) leading from A |  | ||||||
| to B. |  | ||||||
| .SS --value: Flexible valuation | .SS --value: Flexible valuation | ||||||
| .PP | .PP | ||||||
| \f[I](experimental, added 201905)\f[R] |  | ||||||
| .PP |  | ||||||
| \f[C]-B\f[R], \f[C]-V\f[R] and \f[C]-X\f[R] are special cases of the | \f[C]-B\f[R], \f[C]-V\f[R] and \f[C]-X\f[R] are special cases of the | ||||||
| more general \f[C]--value\f[R] option: | more general \f[C]--value\f[R] option: | ||||||
| .IP | .IP | ||||||
| @ -1804,52 +1876,38 @@ more general \f[C]--value\f[R] option: | |||||||
| \f[R] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| The TYPE part basically selects either \[dq]cost\[dq], or \[dq]market | The TYPE part selects cost or value and valuation date: | ||||||
| value\[dq] plus a valuation date: |  | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]--value=cost\f[B]\f[R] | \f[B]\f[CB]--value=cost\f[B]\f[R] | ||||||
| Convert amounts to cost, using the prices recorded in transactions. | Convert amounts to cost, using the prices recorded in transactions. | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]--value=then\f[B]\f[R] | \f[B]\f[CB]--value=then\f[B]\f[R] | ||||||
| Convert amounts to their value in a default valuation commodity, using | Convert amounts to their value in the default valuation commodity, using | ||||||
| market prices on each posting\[aq]s date. | market prices on each posting\[aq]s date. | ||||||
| This is currently supported only by the print and register commands. | This is currently supported only by the print and register commands. | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]--value=end\f[B]\f[R] | \f[B]\f[CB]--value=end\f[B]\f[R] | ||||||
| Convert amounts to their value in a default valuation commodity, using | Convert amounts to their value in the default valuation commodity, using | ||||||
| market prices on the last day of the report period (or if unspecified, | market prices on the last day of the report period (or if unspecified, | ||||||
| the journal\[aq]s end date); or in multiperiod reports, market prices on | the journal\[aq]s end date); or in multiperiod reports, market prices on | ||||||
| the last day of each subperiod. | the last day of each subperiod. | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]--value=now\f[B]\f[R] | \f[B]\f[CB]--value=now\f[B]\f[R] | ||||||
| Convert amounts to their value in default valuation commodity using | Convert amounts to their value in the default valuation commodity using | ||||||
| current market prices (as of when report is generated). | current market prices (as of when report is generated). | ||||||
| .TP | .TP | ||||||
| \f[B]\f[CB]--value=YYYY-MM-DD\f[B]\f[R] | \f[B]\f[CB]--value=YYYY-MM-DD\f[B]\f[R] | ||||||
| Convert amounts to their value in default valuation commodity using | Convert amounts to their value in the default valuation commodity using | ||||||
| market prices on this date. | market prices on this date. | ||||||
| .PP | .PP | ||||||
| The default valuation commodity is the commodity mentioned in the most |  | ||||||
| recent applicable market price declaration. |  | ||||||
| When all your price declarations lead to a single home currency, this |  | ||||||
| will usually do what you want. |  | ||||||
| .PP |  | ||||||
| To select a different valuation commodity, add the optional | To select a different valuation commodity, add the optional | ||||||
| \f[C],COMM\f[R] part: a comma, then the target commodity\[aq]s symbol. | \f[C],COMM\f[R] part: a comma, then the target commodity\[aq]s symbol. | ||||||
| Eg: \f[B]\f[CB]--value=now,EUR\f[B]\f[R]. | Eg: \f[B]\f[CB]--value=now,EUR\f[B]\f[R]. | ||||||
| hledger will do its best to convert amounts to this commodity, using: | hledger will do its best to convert amounts to this commodity, deducing | ||||||
| .IP \[bu] 2 | market prices as described above. | ||||||
| declared prices (from source commodity to valuation commodity) | .SS More valuation examples | ||||||
| .IP \[bu] 2 |  | ||||||
| reverse prices (declared prices from valuation to source commodity, |  | ||||||
| inverted) |  | ||||||
| .IP \[bu] 2 |  | ||||||
| indirect prices (prices calculated from the shortest chain of declared |  | ||||||
| or reverse prices from source to valuation commodity) |  | ||||||
| .PP | .PP | ||||||
| in that order. | Here are some examples showing the effect of \f[C]--value\f[R], as seen | ||||||
| .PP |  | ||||||
| Here are some examples showing the effect of \f[C]--value\f[R] as seen |  | ||||||
| with \f[C]print\f[R]: | with \f[C]print\f[R]: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| @ -1997,13 +2055,12 @@ $ hledger print -X A | |||||||
|     b          -0.50A |     b          -0.50A | ||||||
| \f[R] | \f[R] | ||||||
| .fi | .fi | ||||||
| .SS Effect of --value on reports | .SS Effect of valuation on reports | ||||||
| .PP | .PP | ||||||
| Here is a reference for how \f[C]--value\f[R] currently affects each | Here is a reference for how valuation is supposed to affect each part of | ||||||
| part of hledger\[aq]s reports. | hledger\[aq]s reports (and a glossary). | ||||||
| It\[aq]s work in progress, but may be useful for troubleshooting or | (It\[aq]s wide, you\[aq]ll have to scroll sideways.) It may be useful | ||||||
| reporting bugs. | when troubleshooting. | ||||||
| See also the definitions and notes below. |  | ||||||
| If you find problems, please report them, ideally with a reproducible | If you find problems, please report them, ideally with a reproducible | ||||||
| example. | example. | ||||||
| Related: #329, #1083. | Related: #329, #1083. | ||||||
| @ -2254,7 +2311,7 @@ T}@T{ | |||||||
| T} | T} | ||||||
| .TE | .TE | ||||||
| .PP | .PP | ||||||
| \f[B]Additional notes\f[R] | \f[B]Glossary:\f[R] | ||||||
| .TP | .TP | ||||||
| \f[I]cost\f[R] | \f[I]cost\f[R] | ||||||
| calculated using price(s) recorded in the transaction(s). | calculated using price(s) recorded in the transaction(s). | ||||||
|  | |||||||
| @ -610,12 +610,21 @@ by most hledger commands, run 'hledger -h'. | |||||||
|      hledger-ui/hledger-web) |      hledger-ui/hledger-web) | ||||||
| '-B --cost' | '-B --cost' | ||||||
| 
 | 
 | ||||||
|      convert amounts to their cost at transaction time (using the |      convert amounts to their cost/selling amount at transaction time | ||||||
|      transaction price, if any) | '-V --market' | ||||||
| '-V --value' |  | ||||||
| 
 | 
 | ||||||
|      convert amounts to their market value on the report end date (using |      convert amounts to their market value in default valuation | ||||||
|      the most recent applicable market price, if any) |      commodities | ||||||
|  | '-X --exchange=COMM' | ||||||
|  | 
 | ||||||
|  |      convert amounts to their market value in commodity COMM | ||||||
|  | '--value' | ||||||
|  | 
 | ||||||
|  |      convert amounts to cost or market value, more flexibly than | ||||||
|  |      -B/-V/-X | ||||||
|  | '--infer-value' | ||||||
|  | 
 | ||||||
|  |      with -V/-X/-value, also infer market prices from transactions | ||||||
| '--auto' | '--auto' | ||||||
| 
 | 
 | ||||||
|      apply automated posting rules to modify transactions. |      apply automated posting rules to modify transactions. | ||||||
| @ -1363,30 +1372,32 @@ File: hledger.info,  Node: Valuation,  Prev: Pivoting,  Up: OPTIONS | |||||||
| 2.17 Valuation | 2.17 Valuation | ||||||
| ============== | ============== | ||||||
| 
 | 
 | ||||||
| hledger can show cost reports, where amounts are converted to their cost | Instead of reporting amounts in their original commodity, hledger can | ||||||
| or sale amount at transaction time; or value reports, where amounts are | convert them to: | ||||||
| converted to their market value in another currency/commodity at a |  | ||||||
| specified date (using market prices inferred from your transactions, or |  | ||||||
| declared with P directives). |  | ||||||
| 
 | 
 | ||||||
|    We call this "valuation", and it is controlled by the |    * cost (or sale amount), using the conversion rate recorded as part | ||||||
| '--value=VALUATIONTYPE[,COMMODITY]' option.  It can get a little |      of the transaction (transaction price). | ||||||
| involved, so we cover all the details below.  But most of the time, all |  | ||||||
| you need to do is use these simpler flags instead: |  | ||||||
| 
 | 
 | ||||||
|    * '-B' to convert to cost/sale amount, or |    * value, using the market prices in effect on certain date(s). | ||||||
|    * '-V' to convert to market value in your base currency.  Or | 
 | ||||||
|      occasionally, |    We call this "valuation", and it is controlled in full by the | ||||||
|    * '-X COMMODITY' to convert to market value in some other currency. | '--value=VALUATIONTYPE[,COMMODITY]' option.  But we also provide | ||||||
|  | simpler, Ledger-compatible '-B'/'-V'/'-X' flags, and usually one of | ||||||
|  | these is all you need: | ||||||
| 
 | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * -B Cost:: | * -B Cost:: | ||||||
| * -V Value:: | * -V Value:: | ||||||
| * -X Market value in specified commodity:: | * -X Value in specified commodity:: | ||||||
|  | * Valuation date:: | ||||||
| * Market prices:: | * Market prices:: | ||||||
|  | * --infer-value market prices from transactions:: | ||||||
|  | * Valuation commodity:: | ||||||
|  | * Simple valuation examples:: | ||||||
| * --value Flexible valuation:: | * --value Flexible valuation:: | ||||||
| * Effect of --value on reports:: | * More valuation examples:: | ||||||
|  | * Effect of valuation on reports:: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: -B Cost,  Next: -V Value,  Up: Valuation | File: hledger.info,  Node: -B Cost,  Next: -V Value,  Up: Valuation | ||||||
| @ -1395,29 +1406,151 @@ File: hledger.info,  Node: -B Cost,  Next: -V Value,  Up: Valuation | |||||||
| --------------- | --------------- | ||||||
| 
 | 
 | ||||||
| The '-B/--cost' flag converts amounts to their cost or sale amount at | The '-B/--cost' flag converts amounts to their cost or sale amount at | ||||||
| transaction time, if they have a transaction price specified.  (It is | transaction time, if they have a transaction price specified. | ||||||
| equivalent to '--value=cost'.) |  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: -V Value,  Next: -X Market value in specified commodity,  Prev: -B Cost,  Up: Valuation | File: hledger.info,  Node: -V Value,  Next: -X Value in specified commodity,  Prev: -B Cost,  Up: Valuation | ||||||
| 
 | 
 | ||||||
| 2.17.2 -V: Value | 2.17.2 -V: Value | ||||||
| ---------------- | ---------------- | ||||||
| 
 | 
 | ||||||
| The '-V/--market' flag converts reported amounts to market value in | The '-V/--market' flag converts amounts to market value in their default | ||||||
| their _default valuation commodity_, using the market prices in effect | _valuation commodity_, using the market prices in effect on the | ||||||
| on a _default valuation date_.  (More on these below.) | _valuation date(s)_, if any.  More on these things in a minute. | ||||||
| 
 | 
 | ||||||
|    The default valuation commodity is the one referenced in the latest |  | ||||||
| applicable market price dated on or before the valuation date. | File: hledger.info,  Node: -X Value in specified commodity,  Next: Valuation date,  Prev: -V Value,  Up: Valuation | ||||||
| Typically your P declarations or currency exchange transactions |  | ||||||
| reference a single base currency, and -V will pick that. |  | ||||||
| 
 | 
 | ||||||
|    The default valuation date is today for single period reports | 2.17.3 -X: Value in specified commodity | ||||||
| (equivalent to '--value=now'), or the last day of each subperiod for | --------------------------------------- | ||||||
| multiperiod reports (equivalent to '--value=end'). |  | ||||||
| 
 | 
 | ||||||
|    An example: | The '-X/--exchange' option is like '-V' except the desired valuation | ||||||
|  | currency is specified explicitly. | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger.info,  Node: Valuation date,  Next: Market prices,  Prev: -X Value in specified commodity,  Up: Valuation | ||||||
|  | 
 | ||||||
|  | 2.17.4 Valuation date | ||||||
|  | --------------------- | ||||||
|  | 
 | ||||||
|  | For single period reports, if an explicit report end date is specified, | ||||||
|  | that will be used as the valuation date; otherwise the valuation date is | ||||||
|  | "today". | ||||||
|  | 
 | ||||||
|  |    For multiperiod reports, each column/period is valued on the last day | ||||||
|  | of the period. | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger.info,  Node: Market prices,  Next: --infer-value market prices from transactions,  Prev: Valuation date,  Up: Valuation | ||||||
|  | 
 | ||||||
|  | 2.17.5 Market prices | ||||||
|  | -------------------- | ||||||
|  | 
 | ||||||
|  | _(experimental)_ | ||||||
|  | 
 | ||||||
|  |    To convert a commodity A to its market value in another commodity B, | ||||||
|  | hledger looks for a suitable market price (exchange rate) as follows, in | ||||||
|  | this order of preference : | ||||||
|  | 
 | ||||||
|  |   1. A _declared market price_ or _inferred market price_: A's latest | ||||||
|  |      market price in B on or before the valuation date as declared by a | ||||||
|  |      P directive, or (if the '--infer-value' flag is used) inferred from | ||||||
|  |      transaction prices. | ||||||
|  | 
 | ||||||
|  |   2. A _reverse market price_: the inverse of a declared or inferred | ||||||
|  |      market price from B to A. | ||||||
|  | 
 | ||||||
|  |   3. A _chained market price_: a synthetic price formed by combining the | ||||||
|  |      shortest chain of market prices (any of the above types) leading | ||||||
|  |      from A to B. | ||||||
|  | 
 | ||||||
|  |    Amounts for which no applicable market price can be found, are not | ||||||
|  | converted. | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger.info,  Node: --infer-value market prices from transactions,  Next: Valuation commodity,  Prev: Market prices,  Up: Valuation | ||||||
|  | 
 | ||||||
|  | 2.17.6 -infer-value: market prices from transactions | ||||||
|  | ---------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | _(experimental)_ | ||||||
|  | 
 | ||||||
|  |    Normally, market value in hledger is fully controlled by, and | ||||||
|  | requires, P directives in your journal.  Since adding and updating those | ||||||
|  | can be a chore, and since transactions usually take place at close to | ||||||
|  | market value, why not use the recorded transaction prices as additional | ||||||
|  | market prices (as Ledger does) ?  We could produce value reports without | ||||||
|  | needing P directives at all. | ||||||
|  | 
 | ||||||
|  |    Adding the '--infer-value' flag to '-V', '-X' or '--value' enables | ||||||
|  | this.  So for example, 'hledger bs -V --infer-value' will get market | ||||||
|  | prices both from P directives and from transactions. | ||||||
|  | 
 | ||||||
|  |    There is a downside to this: value reports can be affected in | ||||||
|  | confusing/undesired ways by your journal entries.  If this happens to | ||||||
|  | you, read all of this Valuation section carefully, and try adding | ||||||
|  | '--debug' or '--debug=2' to troubleshoot the reason. | ||||||
|  | 
 | ||||||
|  |    '--infer-value' can infer market prices from: | ||||||
|  | 
 | ||||||
|  |    * multicommodity transactions with explicit prices ('@'/'@@') | ||||||
|  | 
 | ||||||
|  |    * multicommodity transactions with implicit prices (no '@', two | ||||||
|  |      commodities, unbalanced).  (With these, the order of postings | ||||||
|  |      matters.  'hledger print -x' can be useful for troubleshooting.) | ||||||
|  | 
 | ||||||
|  |    * but not, currently, from "more correct" multicommodity transactions | ||||||
|  |      (no '@', multiple commodities, balanced). | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger.info,  Node: Valuation commodity,  Next: Simple valuation examples,  Prev: --infer-value market prices from transactions,  Up: Valuation | ||||||
|  | 
 | ||||||
|  | 2.17.7 Valuation commodity | ||||||
|  | -------------------------- | ||||||
|  | 
 | ||||||
|  | _(experimental)_ | ||||||
|  | 
 | ||||||
|  |    *When you specify a valuation commodity ('-X COMM' or '--value | ||||||
|  | TYPE,COMM'):* | ||||||
|  | hledger will convert all amounts to COMM, wherever it can find a | ||||||
|  | suitable market price (including by reversing or chaining prices). | ||||||
|  | 
 | ||||||
|  |    *When you leave the valuation commodity unspecified ('-V' or '--value | ||||||
|  | TYPE'):* | ||||||
|  | For each commodity A, hledger picks a default valuation commodity as | ||||||
|  | follows, in this order of preference: | ||||||
|  | 
 | ||||||
|  |   1. The price commodity from the latest P-declared market price for A | ||||||
|  |      on or before valuation date. | ||||||
|  | 
 | ||||||
|  |   2. The price commodity from the latest P-declared market price for A | ||||||
|  |      on any date.  (Allows conversion to proceed when there are inferred | ||||||
|  |      prices before the valuation date.) | ||||||
|  | 
 | ||||||
|  |   3. If there are no P directives at all (any commodity or date) and the | ||||||
|  |      '--infer-value' flag is used: the price commodity from the latest | ||||||
|  |      transaction-inferred price for A on or before valuation date. | ||||||
|  | 
 | ||||||
|  |    Amounts for which no valuation commodity can be found are not | ||||||
|  | converted. | ||||||
|  | 
 | ||||||
|  |    This means: | ||||||
|  | 
 | ||||||
|  |    * If you have any P directives, they alone determine which | ||||||
|  |      commodities '-V' will convert, and to what. | ||||||
|  | 
 | ||||||
|  |    * If you have no P directives, and you add the '--infer-value' flag, | ||||||
|  |      transaction prices determine what '-V' converts. | ||||||
|  | 
 | ||||||
|  |    * '-X' tries harder to convert everything to just one commodity. | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger.info,  Node: Simple valuation examples,  Next: --value Flexible valuation,  Prev: Valuation commodity,  Up: Valuation | ||||||
|  | 
 | ||||||
|  | 2.17.8 Simple valuation examples | ||||||
|  | -------------------------------- | ||||||
|  | 
 | ||||||
|  | Here are some quick examples of '-V': | ||||||
| 
 | 
 | ||||||
| ; one euro is worth this many dollars from nov 1 | ; one euro is worth this many dollars from nov 1 | ||||||
| P 2016/11/01 € $1.10 | P 2016/11/01 € $1.10 | ||||||
| @ -1447,52 +1580,12 @@ $ hledger -f t.j bal -N euros -V | |||||||
|              $103.00  assets:euros |              $103.00  assets:euros | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: -X Market value in specified commodity,  Next: Market prices,  Prev: -V Value,  Up: Valuation | File: hledger.info,  Node: --value Flexible valuation,  Next: More valuation examples,  Prev: Simple valuation examples,  Up: Valuation | ||||||
| 
 | 
 | ||||||
| 2.17.3 -X: Market value in specified commodity | 2.17.9 -value: Flexible valuation | ||||||
| ---------------------------------------------- |  | ||||||
| 
 |  | ||||||
| The '-X/--exchange' option is like '-V', except it specifies the target |  | ||||||
| commodity you would like to convert to.  (It is equivalent to |  | ||||||
| '--value=now,COMM' or '--value=end,COMM'.) |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
| File: hledger.info,  Node: Market prices,  Next: --value Flexible valuation,  Prev: -X Market value in specified commodity,  Up: Valuation |  | ||||||
| 
 |  | ||||||
| 2.17.4 Market prices |  | ||||||
| -------------------- |  | ||||||
| 
 |  | ||||||
| To convert a commodity A to commodity B, hledger looks for a suitable |  | ||||||
| market price (exchange rate) in the following ways, in this order of |  | ||||||
| preference: |  | ||||||
| 
 |  | ||||||
|   1. a _declared market price_ - the latest P directive specifying the |  | ||||||
|      exchange rate from A to B, dated on or before the valuation date. |  | ||||||
| 
 |  | ||||||
|   2. a _transaction-implied market price_ - a market price matching the |  | ||||||
|      transaction price used in the latest transaction where A is |  | ||||||
|      converted to B, dated on or before the valuation date.  (_since |  | ||||||
|      hledger 1.18; experimental_) |  | ||||||
| 
 |  | ||||||
|   3. a _reverse declared market price_ - calculated by inverting a |  | ||||||
|      declared market price from B to A. |  | ||||||
| 
 |  | ||||||
|   4. a _reverse transaction-implied market price_ - calculated by |  | ||||||
|      inverting a transaction-implied market price from B to A. |  | ||||||
| 
 |  | ||||||
|   5. an _indirect market price_ - calculated by combining the shortest |  | ||||||
|      chain of market prices (any of the above types) leading from A to |  | ||||||
|      B. |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
| File: hledger.info,  Node: --value Flexible valuation,  Next: Effect of --value on reports,  Prev: Market prices,  Up: Valuation |  | ||||||
| 
 |  | ||||||
| 2.17.5 -value: Flexible valuation |  | ||||||
| --------------------------------- | --------------------------------- | ||||||
| 
 | 
 | ||||||
| _(experimental, added 201905)_ | '-B', '-V' and '-X' are special cases of the more general '--value' | ||||||
| 
 |  | ||||||
|    '-B', '-V' and '-X' are special cases of the more general '--value' |  | ||||||
| option: | option: | ||||||
| 
 | 
 | ||||||
|  --value=TYPE[,COMM]  TYPE is cost, then, end, now or YYYY-MM-DD. |  --value=TYPE[,COMM]  TYPE is cost, then, end, now or YYYY-MM-DD. | ||||||
| @ -1504,51 +1597,43 @@ option: | |||||||
|                       - default valuation commodity (or COMM) using current market prices |                       - default valuation commodity (or COMM) using current market prices | ||||||
|                       - default valuation commodity (or COMM) using market prices at some date |                       - default valuation commodity (or COMM) using market prices at some date | ||||||
| 
 | 
 | ||||||
|    The TYPE part basically selects either "cost", or "market value" plus |    The TYPE part selects cost or value and valuation date: | ||||||
| a valuation date: |  | ||||||
| 
 | 
 | ||||||
| '--value=cost' | '--value=cost' | ||||||
| 
 | 
 | ||||||
|      Convert amounts to cost, using the prices recorded in transactions. |      Convert amounts to cost, using the prices recorded in transactions. | ||||||
| '--value=then' | '--value=then' | ||||||
| 
 | 
 | ||||||
|      Convert amounts to their value in a default valuation commodity, |      Convert amounts to their value in the default valuation commodity, | ||||||
|      using market prices on each posting's date.  This is currently |      using market prices on each posting's date.  This is currently | ||||||
|      supported only by the print and register commands. |      supported only by the print and register commands. | ||||||
| '--value=end' | '--value=end' | ||||||
| 
 | 
 | ||||||
|      Convert amounts to their value in a default valuation commodity, |      Convert amounts to their value in the default valuation commodity, | ||||||
|      using market prices on the last day of the report period (or if |      using market prices on the last day of the report period (or if | ||||||
|      unspecified, the journal's end date); or in multiperiod reports, |      unspecified, the journal's end date); or in multiperiod reports, | ||||||
|      market prices on the last day of each subperiod. |      market prices on the last day of each subperiod. | ||||||
| '--value=now' | '--value=now' | ||||||
| 
 | 
 | ||||||
|      Convert amounts to their value in default valuation commodity using |      Convert amounts to their value in the default valuation commodity | ||||||
|      current market prices (as of when report is generated). |      using current market prices (as of when report is generated). | ||||||
| '--value=YYYY-MM-DD' | '--value=YYYY-MM-DD' | ||||||
| 
 | 
 | ||||||
|      Convert amounts to their value in default valuation commodity using |      Convert amounts to their value in the default valuation commodity | ||||||
|      market prices on this date. |      using market prices on this date. | ||||||
| 
 |  | ||||||
|    The default valuation commodity is the commodity mentioned in the |  | ||||||
| most recent applicable market price declaration.  When all your price |  | ||||||
| declarations lead to a single home currency, this will usually do what |  | ||||||
| you want. |  | ||||||
| 
 | 
 | ||||||
|    To select a different valuation commodity, add the optional ',COMM' |    To select a different valuation commodity, add the optional ',COMM' | ||||||
| part: a comma, then the target commodity's symbol.  Eg: | part: a comma, then the target commodity's symbol.  Eg: | ||||||
| *'--value=now,EUR'*.  hledger will do its best to convert amounts to | *'--value=now,EUR'*.  hledger will do its best to convert amounts to | ||||||
| this commodity, using: | this commodity, deducing market prices as described above. | ||||||
| 
 | 
 | ||||||
|    * declared prices (from source commodity to valuation commodity) |  | ||||||
|    * reverse prices (declared prices from valuation to source commodity, | File: hledger.info,  Node: More valuation examples,  Next: Effect of valuation on reports,  Prev: --value Flexible valuation,  Up: Valuation | ||||||
|      inverted) |  | ||||||
|    * indirect prices (prices calculated from the shortest chain of |  | ||||||
|      declared or reverse prices from source to valuation commodity) |  | ||||||
| 
 | 
 | ||||||
|    in that order. | 2.17.10 More valuation examples | ||||||
|  | ------------------------------- | ||||||
| 
 | 
 | ||||||
|    Here are some examples showing the effect of '--value' as seen with | Here are some examples showing the effect of '--value', as seen with | ||||||
| 'print': | 'print': | ||||||
| 
 | 
 | ||||||
| P 2000-01-01 A  1 B | P 2000-01-01 A  1 B | ||||||
| @ -1657,16 +1742,16 @@ $ hledger print -X A | |||||||
|     b          -0.50A |     b          -0.50A | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: Effect of --value on reports,  Prev: --value Flexible valuation,  Up: Valuation | File: hledger.info,  Node: Effect of valuation on reports,  Prev: More valuation examples,  Up: Valuation | ||||||
| 
 | 
 | ||||||
| 2.17.6 Effect of -value on reports | 2.17.11 Effect of valuation on reports | ||||||
| ---------------------------------- | -------------------------------------- | ||||||
| 
 | 
 | ||||||
| Here is a reference for how '--value' currently affects each part of | Here is a reference for how valuation is supposed to affect each part of | ||||||
| hledger's reports.  It's work in progress, but may be useful for | hledger's reports (and a glossary).  (It's wide, you'll have to scroll | ||||||
| troubleshooting or reporting bugs.  See also the definitions and notes | sideways.)  It may be useful when troubleshooting.  If you find | ||||||
| below.  If you find problems, please report them, ideally with a | problems, please report them, ideally with a reproducible example. | ||||||
| reproducible example.  Related: #329, #1083. | Related: #329, #1083. | ||||||
| 
 | 
 | ||||||
| Report       '-B',        '-V', '-X'   '--value=then' '--value=end' '--value=DATE', | Report       '-B',        '-V', '-X'   '--value=then' '--value=end' '--value=DATE', | ||||||
| type         '--value=cost'                                         '--value=now' | type         '--value=cost'                                         '--value=now' | ||||||
| @ -1739,7 +1824,7 @@ total/averageof column    of column    supported      of column     of | |||||||
|              totals       totals                      totals        column |              totals       totals                      totals        column | ||||||
|                                                                     totals |                                                                     totals | ||||||
| 
 | 
 | ||||||
|    *Additional notes* |    *Glossary:* | ||||||
| 
 | 
 | ||||||
| _cost_ | _cost_ | ||||||
| 
 | 
 | ||||||
| @ -3798,165 +3883,175 @@ Node: OPTIONS16853 | |||||||
| Ref: #options16960 | Ref: #options16960 | ||||||
| Node: General options17330 | Node: General options17330 | ||||||
| Ref: #general-options17455 | Ref: #general-options17455 | ||||||
| Node: Command options20225 | Node: Command options20409 | ||||||
| Ref: #command-options20376 | Ref: #command-options20560 | ||||||
| Node: Command arguments20774 | Node: Command arguments20958 | ||||||
| Ref: #command-arguments20921 | Ref: #command-arguments21105 | ||||||
| Node: Queries21801 | Node: Queries21985 | ||||||
| Ref: #queries21956 | Ref: #queries22140 | ||||||
| Node: Special characters in arguments and queries25918 | Node: Special characters in arguments and queries26102 | ||||||
| Ref: #special-characters-in-arguments-and-queries26146 | Ref: #special-characters-in-arguments-and-queries26330 | ||||||
| Node: More escaping26597 | Node: More escaping26781 | ||||||
| Ref: #more-escaping26759 | Ref: #more-escaping26943 | ||||||
| Node: Even more escaping27055 | Node: Even more escaping27239 | ||||||
| Ref: #even-more-escaping27249 | Ref: #even-more-escaping27433 | ||||||
| Node: Less escaping27920 | Node: Less escaping28104 | ||||||
| Ref: #less-escaping28082 | Ref: #less-escaping28266 | ||||||
| Node: Unicode characters28327 | Node: Unicode characters28511 | ||||||
| Ref: #unicode-characters28509 | Ref: #unicode-characters28693 | ||||||
| Node: Input files29921 | Node: Input files30105 | ||||||
| Ref: #input-files30064 | Ref: #input-files30248 | ||||||
| Node: Output destination31993 | Node: Output destination32177 | ||||||
| Ref: #output-destination32145 | Ref: #output-destination32329 | ||||||
| Node: Output format32570 | Node: Output format32754 | ||||||
| Ref: #output-format32720 | Ref: #output-format32904 | ||||||
| Node: Regular expressions34302 | Node: Regular expressions34486 | ||||||
| Ref: #regular-expressions34459 | Ref: #regular-expressions34643 | ||||||
| Node: Smart dates36195 | Node: Smart dates36379 | ||||||
| Ref: #smart-dates36346 | Ref: #smart-dates36530 | ||||||
| Node: Report start & end date37707 | Node: Report start & end date37891 | ||||||
| Ref: #report-start-end-date37879 | Ref: #report-start-end-date38063 | ||||||
| Node: Report intervals39376 | Node: Report intervals39560 | ||||||
| Ref: #report-intervals39541 | Ref: #report-intervals39725 | ||||||
| Node: Period expressions39931 | Node: Period expressions40115 | ||||||
| Ref: #period-expressions40091 | Ref: #period-expressions40275 | ||||||
| Node: Depth limiting44227 | Node: Depth limiting44411 | ||||||
| Ref: #depth-limiting44371 | Ref: #depth-limiting44555 | ||||||
| Node: Pivoting44703 | Node: Pivoting44887 | ||||||
| Ref: #pivoting44826 | Ref: #pivoting45010 | ||||||
| Node: Valuation46502 | Node: Valuation46686 | ||||||
| Ref: #valuation46604 | Ref: #valuation46788 | ||||||
| Node: -B Cost47524 | Node: -B Cost47588 | ||||||
| Ref: #b-cost47628 | Ref: #b-cost47692 | ||||||
| Node: -V Value47800 | Node: -V Value47825 | ||||||
| Ref: #v-value47953 | Ref: #v-value47971 | ||||||
| Node: -X Market value in specified commodity49226 | Node: -X Value in specified commodity48173 | ||||||
| Ref: #x-market-value-in-specified-commodity49445 | Ref: #x-value-in-specified-commodity48372 | ||||||
| Node: Market prices49623 | Node: Valuation date48476 | ||||||
| Ref: #market-prices49808 | Ref: #valuation-date48644 | ||||||
| Node: --value Flexible valuation50733 | Node: Market prices48888 | ||||||
| Ref: #value-flexible-valuation50934 | Ref: #market-prices49068 | ||||||
| Node: Effect of --value on reports55439 | Node: --infer-value market prices from transactions49845 | ||||||
| Ref: #effect-of---value-on-reports55620 | Ref: #infer-value-market-prices-from-transactions50094 | ||||||
| Node: COMMANDS61166 | Node: Valuation commodity51385 | ||||||
| Ref: #commands61274 | Ref: #valuation-commodity51594 | ||||||
| Node: accounts62358 | Node: Simple valuation examples52919 | ||||||
| Ref: #accounts62456 | Ref: #simple-valuation-examples53121 | ||||||
| Node: activity63155 | Node: --value Flexible valuation53780 | ||||||
| Ref: #activity63265 | Ref: #value-flexible-valuation53988 | ||||||
| Node: add63648 | Node: More valuation examples55935 | ||||||
| Ref: #add63747 | Ref: #more-valuation-examples56144 | ||||||
| Node: balance66486 | Node: Effect of valuation on reports58149 | ||||||
| Ref: #balance66597 | Ref: #effect-of-valuation-on-reports58337 | ||||||
| Node: Classic balance report68055 | Node: COMMANDS63858 | ||||||
| Ref: #classic-balance-report68228 | Ref: #commands63966 | ||||||
| Node: Customising the classic balance report69597 | Node: accounts65050 | ||||||
| Ref: #customising-the-classic-balance-report69825 | Ref: #accounts65148 | ||||||
| Node: Colour support71901 | Node: activity65847 | ||||||
| Ref: #colour-support72068 | Ref: #activity65957 | ||||||
| Node: Flat mode72241 | Node: add66340 | ||||||
| Ref: #flat-mode72389 | Ref: #add66439 | ||||||
| Node: Depth limited balance reports72802 | Node: balance69178 | ||||||
| Ref: #depth-limited-balance-reports72987 | Ref: #balance69289 | ||||||
| Node: Percentages73443 | Node: Classic balance report70747 | ||||||
| Ref: #percentages73609 | Ref: #classic-balance-report70920 | ||||||
| Node: Multicolumn balance report74746 | Node: Customising the classic balance report72289 | ||||||
| Ref: #multicolumn-balance-report74926 | Ref: #customising-the-classic-balance-report72517 | ||||||
| Node: Budget report80188 | Node: Colour support74593 | ||||||
| Ref: #budget-report80331 | Ref: #colour-support74760 | ||||||
| Node: Nested budgets85597 | Node: Flat mode74933 | ||||||
| Ref: #nested-budgets85709 | Ref: #flat-mode75081 | ||||||
| Ref: #output-format-189190 | Node: Depth limited balance reports75494 | ||||||
| Node: balancesheet89387 | Ref: #depth-limited-balance-reports75679 | ||||||
| Ref: #balancesheet89523 | Node: Percentages76135 | ||||||
| Node: balancesheetequity90989 | Ref: #percentages76301 | ||||||
| Ref: #balancesheetequity91138 | Node: Multicolumn balance report77438 | ||||||
| Node: cashflow91861 | Ref: #multicolumn-balance-report77618 | ||||||
| Ref: #cashflow91989 | Node: Budget report82880 | ||||||
| Node: check-dates93168 | Ref: #budget-report83023 | ||||||
| Ref: #check-dates93295 | Node: Nested budgets88289 | ||||||
| Node: check-dupes93574 | Ref: #nested-budgets88401 | ||||||
| Ref: #check-dupes93698 | Ref: #output-format-191882 | ||||||
| Node: close93991 | Node: balancesheet92079 | ||||||
| Ref: #close94105 | Ref: #balancesheet92215 | ||||||
| Node: close usage95627 | Node: balancesheetequity93681 | ||||||
| Ref: #close-usage95720 | Ref: #balancesheetequity93830 | ||||||
| Node: commodities98533 | Node: cashflow94553 | ||||||
| Ref: #commodities98660 | Ref: #cashflow94681 | ||||||
| Node: descriptions98742 | Node: check-dates95860 | ||||||
| Ref: #descriptions98870 | Ref: #check-dates95987 | ||||||
| Node: diff99051 | Node: check-dupes96266 | ||||||
| Ref: #diff99157 | Ref: #check-dupes96390 | ||||||
| Node: files100204 | Node: close96683 | ||||||
| Ref: #files100304 | Ref: #close96797 | ||||||
| Node: help100451 | Node: close usage98319 | ||||||
| Ref: #help100551 | Ref: #close-usage98412 | ||||||
| Node: import101632 | Node: commodities101225 | ||||||
| Ref: #import101746 | Ref: #commodities101352 | ||||||
| Node: Importing balance assignments102639 | Node: descriptions101434 | ||||||
| Ref: #importing-balance-assignments102787 | Ref: #descriptions101562 | ||||||
| Node: incomestatement103436 | Node: diff101743 | ||||||
| Ref: #incomestatement103569 | Ref: #diff101849 | ||||||
| Node: notes105056 | Node: files102896 | ||||||
| Ref: #notes105169 | Ref: #files102996 | ||||||
| Node: payees105295 | Node: help103143 | ||||||
| Ref: #payees105401 | Ref: #help103243 | ||||||
| Node: prices105559 | Node: import104324 | ||||||
| Ref: #prices105665 | Ref: #import104438 | ||||||
| Node: print106006 | Node: Importing balance assignments105331 | ||||||
| Ref: #print106116 | Ref: #importing-balance-assignments105479 | ||||||
| Node: print-unique110902 | Node: incomestatement106128 | ||||||
| Ref: #print-unique111028 | Ref: #incomestatement106261 | ||||||
| Node: register111313 | Node: notes107748 | ||||||
| Ref: #register111440 | Ref: #notes107861 | ||||||
| Node: Custom register output115612 | Node: payees107987 | ||||||
| Ref: #custom-register-output115741 | Ref: #payees108093 | ||||||
| Node: register-match117078 | Node: prices108251 | ||||||
| Ref: #register-match117212 | Ref: #prices108357 | ||||||
| Node: rewrite117563 | Node: print108698 | ||||||
| Ref: #rewrite117678 | Ref: #print108808 | ||||||
| Node: Re-write rules in a file119533 | Node: print-unique113594 | ||||||
| Ref: #re-write-rules-in-a-file119667 | Ref: #print-unique113720 | ||||||
| Node: Diff output format120877 | Node: register114005 | ||||||
| Ref: #diff-output-format121046 | Ref: #register114132 | ||||||
| Node: rewrite vs print --auto122138 | Node: Custom register output118304 | ||||||
| Ref: #rewrite-vs.-print---auto122317 | Ref: #custom-register-output118433 | ||||||
| Node: roi122873 | Node: register-match119770 | ||||||
| Ref: #roi122971 | Ref: #register-match119904 | ||||||
| Node: stats123983 | Node: rewrite120255 | ||||||
| Ref: #stats124082 | Ref: #rewrite120370 | ||||||
| Node: tags124870 | Node: Re-write rules in a file122225 | ||||||
| Ref: #tags124968 | Ref: #re-write-rules-in-a-file122359 | ||||||
| Node: test125262 | Node: Diff output format123569 | ||||||
| Ref: #test125370 | Ref: #diff-output-format123738 | ||||||
| Node: Add-on commands126117 | Node: rewrite vs print --auto124830 | ||||||
| Ref: #add-on-commands126234 | Ref: #rewrite-vs.-print---auto125009 | ||||||
| Node: ui127577 | Node: roi125565 | ||||||
| Ref: #ui127665 | Ref: #roi125663 | ||||||
| Node: web127719 | Node: stats126675 | ||||||
| Ref: #web127822 | Ref: #stats126774 | ||||||
| Node: iadd127938 | Node: tags127562 | ||||||
| Ref: #iadd128049 | Ref: #tags127660 | ||||||
| Node: interest128131 | Node: test127954 | ||||||
| Ref: #interest128238 | Ref: #test128062 | ||||||
| Node: ENVIRONMENT128478 | Node: Add-on commands128809 | ||||||
| Ref: #environment128590 | Ref: #add-on-commands128926 | ||||||
| Node: FILES129419 | Node: ui130269 | ||||||
| Ref: #files-1129522 | Ref: #ui130357 | ||||||
| Node: LIMITATIONS129735 | Node: web130411 | ||||||
| Ref: #limitations129854 | Ref: #web130514 | ||||||
| Node: TROUBLESHOOTING130596 | Node: iadd130630 | ||||||
| Ref: #troubleshooting130709 | Ref: #iadd130741 | ||||||
|  | Node: interest130823 | ||||||
|  | Ref: #interest130930 | ||||||
|  | Node: ENVIRONMENT131170 | ||||||
|  | Ref: #environment131282 | ||||||
|  | Node: FILES132111 | ||||||
|  | Ref: #files-1132214 | ||||||
|  | Node: LIMITATIONS132427 | ||||||
|  | Ref: #limitations132546 | ||||||
|  | Node: TROUBLESHOOTING133288 | ||||||
|  | Ref: #troubleshooting133401 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
| 
 | 
 | ||||||
|  | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user