Currencies / the accounting equation.

Christopher Browne cbbrowne@localhost.brownes.org
Sun, 01 Oct 2000 22:51:25 -0500


On Sun, 01 Oct 2000 14:37:40 PDT, the world broke into rejoicing as
Dave Peticolas <dave@krondo.com>  said:
>  writes:
> > On Fri, Sep 29, 2000 at 04:50:18PM -0700, Dave Peticolas wrote:
> > > I think there is an additional issue for transactions. Consider
> > > a transfer between two accounts with the same security (USD).
> > > 
> > >  	Acct		DR			CR
> > >  	bank (USD)	                        USD 100 (? ?)
> > >  	cash (USD)	USD 100 (? ?)
> > > 
> > > Under the current rules of balancing, you can choose any two distinct
> > > currencies and any amounts for the two values, and the transaction is
> > > in balance with respect to the common currency (USD). This is the case
> > > now, but choosing the account also chooses the currency so there is no
> > > ambiguity. Should we allow this?
> > 
> > Should we allow what?  It sounds like you're asking about allowing
> > more than two total commodities involved in a transaction, and I think
> > the answer is yes.
> 
> It's not just that there are more than two total commodities, it's
> that I can't understand what the transaction means when the values
> are totally unrelated.
> 
> > In your example, the splits each state an equivalence by exchange
> > between 100 USD and some other amount of some other currency.  Clearly
> > there's a difference between the case when the two "mystery
> > currencies" are the same, in which case it's possible to detect an
> > error condition where the 'values' of the two splits are different,
> > and the case where the currencies are different, in which case you
> > can't detect an analogous error condition.
> > 
> > I can't easily explain your example transaction to myself in words.
> > For example, to fill in some real values,
> > 
> >     Acct 		DR			CR
> >     bank(USD)    				USD 100 (EUR 105)
> >     cash(USD)		USD 100 (GBP 65)
> > 
> > What would this mean, and how would we know not to take it at face
> > value as being balanced?  As far as "meaning", it seems to say "I took
> > EUR 105 out of a USD-denominated account, and put it in my pocket as
> > 65 GBP (but my cash account is USD-denominated)"
> 
> I don't agree. The 'value' side of a split (regardless of whether
> currencies are associated with accounts or splits) does not necessarily
> refer to a tangible commodity that was exchanged. The tangible commodity
> that you are counting is always the security.
> 
> To me, the above transaction says "I took $100 out of my bank account
> and put it in my cash account. The $100 dollars coming out of my bank
> account is worth 105 Euros and the $100 going into the cash account is
> worth 65 Pounds."
> 
> If you actually received 105 Euros, then you should have transferred it
> to an account with a security of Euros.

I think you've hit the nail on the head here...

If someone traded 105 Euros for 65 GBP, then the only _permanently
accurate_ statements about the values involve those two numbers, and
those two numbers alone.

If "reality" was that this took place in a USD-denominated bank account,
then "reality" changes; it _wasn't_ 105 Euros; it was the however-much
the bank took out to pay for the 65 GBP.  Which appears to be $100.00.

It might be reasonable to have a note that the bank thought this was
a trade involving 105 Euros; if the account was denominated in $USD,
and the amount taken out to pay for the transaction was $100.00, then
that was, and is, the historical cost of the transaction.  105 Euros
is a _distraction_.

> > I can see the first
> > part of that -- say, using a US-bank ATM card in a machine that gives
> > Euros -- but I don't understand the debit side.  If one were to
> > withdraw EUR and then change them for GBP, I would assume there would
> > be two transactions.  So far, it looks like it might be reasonable to
> > enforce just 2 currencies.
> > 
> > What would a multiple-currency money-changing transaction look like?
> > i.e.  one where you give the banker USD 100 and ask for EUR 50, GBP
> > 25, and the rest in ITL?  Assuming a "tourist" account setup, where
> > you have a single Cash account that you keep your records in, maybe
> > like:
> > 
> >    Acct			DR			CR
> >    cash(USD)					USD 100 (USD 100)
> >    cash(USD)		USD 47 (EUR 50)
> >    cash(USD)		USD 35 (GBP 25)
> >    cash(USD)		USD 18 (ITL 20,000)
> 
> I don't understand this transaction. According to this transaction,
> you still have the same number of dollars as you started with in
> the cash account.

The transaction doesn't really make sense.

The account "cash(USD)" is for $USD amounts.  It's not sensible to
pretend to have other currencies in it.

That's not entirely fair; it's fine to "pretend" all sorts of things.
But that doesn't establish that is reasonable to treat it as any sort
of reality.

More reasonable is to consider that my wallet can contain cash of
all sorts of currencies.  My wallet _usually_ only holds $USD, but
this year has contained $CDN and will soon contain Rupees.  Which
means that the account hierarchy is _NOT_ that I have

   wallet (USD)         USD 150
                        CDN 175
                        RUP 975

Rather, it is properly expressed via having three "compartments" in
the wallet, one for each relevant currency:

   wallet(USD)
   wallet(CDN)
   wallet(RUP)

The same is true for bank accounts.  I have bank accounts denominated
in $USD and $CDN; I _cannot_ hold $USD in a $CDN account, nor the
converse.  What instead happens is that if I deposit some $USD into
a $CDN account, the amounts are translated at the point in time so
that all that ever gets deposited into a $CDN account is an amount
expressed as $CDN.

> > Or worse, if you actually accounted for things correctly with a
> > different cash account for each currency:
> > 
> >    Acct			DR			CR
> >    USD cash(USD)				USD 100 (USD 100)
> >    EUR cash(EUR)	EUR 50 (USD 47)
> >    GBP cash(GBP)	GBP 25 (USD 35)
> >    ITL cash(ITL)	ITL 20,000 (USD 18)
> 
> Now this I understand. You exchanged one commodity for another set
> of commodities and tracked how the value in USD is distributed among
> them.
> 
> I think one of the things that bothers me about the current balancing
> rules is that they treat the currency and security as interchangeable,
> when they really mean different things.
> 
> What if we required transactions to have a common valuation currency?
> What if the currency were associated with transactions instead of
> splits, and we always balanced with the value?

That is, I guess, the other possibility.

I think it needs to be associated with the split entries, otherwise it's
a bit of a problem to precisely express:

                                  DR       CR
   Chequing - $CDN               $135.21
   Chequing - $USD                        $100.02

By trying to unify this either to be all in $USD or all in $CDN, this
forces one or the other of those values to be approximations, forever
denying the ability to have one of the values be exact.
--
cbbrowne@acm.org - <http://www.ntlug.org/~cbbrowne/linux.html>
HAKMEM ITEM 163 (Sussman):
To exchange two variables in LISP without using a third variable:
(SETQ X (PROG2 0 Y (SETQ Y X)))