On 10 Feb 2020, at 6:27, Edward d'Auvergne wrote:

I realise that F::Q is broken in some places.  As I said, I reported
an issue.  However, as you have seen yourself, the F::Q developers are
simply non-responsive.  I believe that asking all GnuCash users to
manually patch their own Finance::Quote perl modules to get around
this 2 year old issue is too much to ask of users.  My reasoning is
that a little more logic on the GnuCash side to handle F::Q
misbehaving is easier for all GnuCash users.  And, from the behaviour
of the scripts below, I now wonder if GnuCash could benefit by
switching from piping '(currency "USD" "EUR")' into gnc-fc-helper to
instead piping in '(alphavantage "USDEUR")'?  The only disadvantage is
that gold and silver quotes do not work via the fetch() interface with
Alpha Vantage.

I think I understand now why we've been talking past each other. There isn't any API in F::Q to fetch multiple currency quotes in one call. Instead it's a feature of AlphaVantage to treat exchange rates as if they were stock quotes and use the stock quote API to fetch them. I wasn't aware that this existed. I played with it for a few minutes and see a couple of problems with it. Some currencies are not available using the stock quote API but are available using the currency API. For example three in my list of currencies which don't work with the quote API are MNT, SBD, and VUV. These all work fine with the currency API.

The other problem is that for very small exchange rates the stock quote interface loses precision. For example, compare

./gnc-fq-dump alphavantage IDRUSD
Finance::Quote fields Gnucash uses:
    symbol: IDRUSD               <=== required
      date: 02/10/2020           <=== recommended
  currency: USD                  <=== required
      last: 0.0001               <=\
       nav:                      <=== one of these
     price:                      <=/
  timezone:                      <=== optional

and

./gnc-fq-dump currency IDR USD
1 IDR = 7.295e-05 USD

These problems would make the quote API for currencies less useful.

By the way, I didn't mean to suggest that we should encourage all users of GnuCash to patch F::Q. I still remain hopeful that the maintainers will merge my pull request that fixes this bug. In the meantime switching to the quote API might be a good idea even if it does have issues. The code would have to be smart enough to work around the problems. For example if the quote API fails for a given currency it could try the currency API. If the returned value appears to have lost all precision then it could try the reverse quote and compute the reciprocal itself.

Another possibility would be to abandon AlphaVantage entirely for currency exchange rates. For example https://currencylayer.com/ looks promising. They allow up to 250 queries per month for free and it seems very fast. Of course this would require changes to F::Q which gets us right back into those problems.

        Mike
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to