bitcoin-wallet / bitcoin-wallet

Bitcoin Wallet app for your Android device. Standalone Bitcoin node, no centralized backend required.
3.75k stars 2.07k forks source link

GBP exchange rates - using mtGox when that is not realistic #50

Closed ronohara closed 3 years ago

ronohara commented 10 years ago

Now that MtGox appears to be in terminal decline, using it as the basis for the exchange rates seems problematic. This is especially evident with the BTC->GBP estimates Can you consider either just using the 'bitcoinaverage.com' weighted 24hr average exchange rate, or allowing the user to select which exchange they trust for a particular national currency.

schildbach commented 10 years ago

But that's exactly what the app is doing. It never specifically picked the exchange rate from MtGox. Why do you think so?

ronohara commented 10 years ago

I suspect that because I look up bitcoinaverage.com and it show the 24hr GBP conversion as 416 and at the same moment, the wallet app shows 390.55. So there is a discrepancy somewhere

ronohara commented 10 years ago

It actually seems to come closer to matching the price shown by Coinbase ...

ronohara commented 10 years ago

Ah ha !!! I think I understand the discrepancy now. If you go to bitcoinaverage.com and select GPB on the front page, it gives your the global average of all trades in GBP. Presumably this is done by working in a main currency like USD (or perhaps CNY), and then converting using the daily Forex rate to come up with a GBP cross rate. Right at the moment that shows as 387. However, when you select GBP from the list of 'cross rates' (middlle right of screen) you get the weighted average of ACTUAL GBP trades for the past 24 hours. Right at the moment that shows as 416. Since the actual trades are the real market rates (rather than an estimate based on Forex rates against some other currency), it would be better to use that 24hr sliding average. Where there is zero trading in a national fiat in the past 24hrs, I guess the global Forex cross rate against USD (or CNY depending on volume) is the best you can do.

ronohara commented 10 years ago

Update: ... the discrepancy on bitcoinaverage.com is in the Bid/Ask values, not the 24hr sliding average as I thought.

schildbach commented 10 years ago

The app reads this feed: https://api.bitcoinaverage.com/ticker/global/all It picks the "24h_avg" value if present, otherwise "last" as a fallback. If BitcoinAverage is not available, it falls back to bitcoincharts and blockchain.info.

schildbach commented 10 years ago

The source is all in https://github.com/schildbach/bitcoin-wallet/blob/master/wallet/src/de/schildbach/wallet/ExchangeRatesProvider.java -- see for yourself.

ronohara commented 10 years ago
Hi Andreas,
I have been corresponding with the 'bitcoinaverage.com' guys ... the
conversation is copied below.
I will have a look at the code as you suggest, and also look at what
options there are to make the wallet display more focused on real
market rates rather than only estimates based on a calculated cross
rate  (see below for confirmation that the 24hr average is not
taking local [real] markets into account).
I will get back to you after looking to see if there are
improvements that are possible. 
Regards
Ron OHara
schildbach commented 10 years ago

@ronohara I just edited your comment to remove the private conversation with bitcoinaverage. Keep in mind this is a public forum.

Indeed, if I look at the JSON feed I see a 24h_avg of 388.83 GBP and on their web page its 415.1 GBP. That's unexpected. I'd expect both values to be based on actual exchange data, as for GBP there are 5 non-ignored exchanges.

schildbach commented 10 years ago

I just noticed that in the https://api.bitcoinaverage.com/ticker/all feed, the value is correct at currently 414.92 GBP. I will mail BitcoinAverage about this.

ronohara commented 10 years ago

Ah. Thanks .. so it is a problem at their end ... I will leave it in your capable hands.

schildbach commented 10 years ago

Your issue has been partly solved by now showing the global values on BitcoinAverage. So the app and the web page should now be in sync. However, I assume that's not what you want?

ronohara commented 10 years ago
On 18/02/14 09:10, Andreas Schildbach
  wrote:

  Your issue has been partly solved by now showing the global
    values on BitcoinAverage. So the app and the web page should now
    be in sync. However, I assume that's not what you want?
  —
    Reply to this email directly or view
      it on GitHub.

Hi Andreas,
You are correct. That is not what I want.
This 'calculated' global 24hr average is not a good number when
there is an 'actual trades' 24hr average available.
This has a real and negative impact when using the Android wallet -
and any other wallet that relies on the bitcoinavereage.com feed
If I try to send 1GBP from the phone, because it is using the global
average that is calculated, rather than the real trading rates I can
get from somewhere like localbitcoins (and other exchanges), the app
calculates a larger amount of BTC to send...
A bonus for recipient  - a loss for me.  And perception being what
it is, the receiver will not accept the argument that 'Oh .. it is
not the right rate being shown'
I am trying to get bitcoinaverage.com to understand that whilst both
figures are valid for their respective methods of calculation, there
is almost certainly a perception problem here. I fear many people,
just like myself (and it appears you too) would assume that the 24hr
average supplied would reflect actual trade statistics in preference
to the 'global calculation'.  Bitcoinavaerage.com is doing the
opposite. (They do state the details, but you have to spend time and
effort to find the explanation)
If the very techie amongst us dont immediately appreciate the issue
with the results given by the API, then the general public has no
hope.
All they will is see an inconsistency in the results.. 
- front page of web sites says  .... GBP=388
- drill down page of web site says ... GBP=415
- Wallet app chooses .... shows .... GBP=388
Inconsistency will breed mistrust ... even though there are logical
explanations.   People are lazy and want it to 'just work'.  Me
too.....
For reference - I do have a very serious backgound in lots of this
.... and I appreciate the UI aspects of this as much as the
technical side of things. For a credibility check on me see: 
http://www.linkedin.com/pub/ron-o-hara/7/534/a45
As the bitcoinaverage guys say, you can (as the app developer)
choose either 24hr average, and they do not seem all that interested
in the potential misunderstanding that happen ...
So for the moment, perhaps you could consider changing the wallet to
use the 'actual trades' 24hr average when it exists, and fall back
to the 'global average' number - with an * on the UI to indicate it
is not based on real trading results.
Regards
Ron OHara-- 
  "Only the paranoid survive" - Andy Grove, Intel