0
$\begingroup$

I wrote some python code that tries to calculate this by samplying 1000 forex prices using polygon.io's REST api. However, will the precision ever change or is it fixed by something.

How do they choose the forex price number's precision?

It's important to me because I'm discretizing the price data. I have to multiply this precision by a constant parameter of my code and that determines how many prices fit into a discretized unit (an integer).

Can you point me to a table that lists all of them (supposing they are indeed fixed), of all 128 FX pairs?

By precision I mean the minimum nonzero change I will ever see from polygon.io. For example 0.00001 is commonly seen in some of the pairs.

Thank you!

$\endgroup$
0

3 Answers 3

2
$\begingroup$

I had to deal with discrete FX quotes a long time ago. My answer may be badly out of date, sorry.

For each currency pair, there is a "PIP", which stands for "point in percentage" or "price interest point" or "percentage in point", and used to be the smallest amount by which the quote can change. It is usually 1 basis point (i.e. the currency pair is quoted to 4 decimals), but some currency pairs have different PIP. or example for Japanese Yen JPY, a PIP is the second decimal. For some currencies v GBP, PIP is the fifth decimal.

However many modern FX trading platforms actually use 1/10 PIP quotes for spot, i.e. usually 5 decimals, sometimes called "pipettes", "micro PIPs", or "decimal PIPs". Some use 1/2 PIPs. Your data vendor should be able to give you their list of PIPs and precisions (not necessarily the same thing), which in theory may differ a little from other vendors.

For example, this table https://fx.cboe.com/products/currency.jsp lists "ECN/FA Min Price Increment" for many currency pairs, most of them in the 5th decimal.

Bloomberg BFIX page https://www.bloomberg.com/markets/currencies/fx-fixings sows 4 decimals for most currency pairs, but 5 decimals for a few pairs (and less than 4 for a few others).

This brochure https://www.eurexchange.com/resource/blob/1621162/59398ad9144b5d1bb81ca4214b6e420d/data/factsheet_eurex_currency_products_brochure.pdf mentions:

Rolling spot futures

Minimum tick value is OTC spot equivalent; tenths of a pip (0.00001)

This recent paper https://www.federalreserve.gov/econres/feds/files/2020051pap.pdf describes how EBS switched to 1/10 PIP precision, but later switched to 1/2 PIP precision (i.e. the fifth decimal can only be "0" or "5").

As for forwards, for example, WM/Refinitiv documentation https://www.refinitiv.com/content/dam/marketing/en_us/documents/methodology/wm-refinitiv-methodology.pdf says:

All NDF (non-delivery forward) rates (bid, offer and mid) are rounded to five decimal places after the decimal point. Where a “5” is encountered, the convention is to round up.

Other vendors' forwards often have 6 digits.

For example:

EUR/USD moves from 1.09128 to 1.09123: EUR has depreciated 1/2 pip (or 5 pipettes). Note that EUR, GBP, and a few other currencies are "quoted cable", the amoung of USD equal to 1 unit of the other currency. 1 pipette is 0.00001 USD.

USD/JPY moves from 107.84 to 107.85: JPY has depreciated 1 pip (or 10 pipettes). Most currencies are quoted as the amount of the other currency equal to 1 USD. 1 pipette is 0.00001 of the other currency.

$\endgroup$
2
4
$\begingroup$

"How do they choose the forex price number's precision?"

By convention. And/or by vendor, e.g. BBG has 4dp for some pairs where Oanda has 5. And of course convention for forwards differs from spot, even for the same pair.

There is some colour on the move to 'fractional pips' in the book "Why Aren't They Shouting?".

EDIT: perhaps also worth mentioning that tick sizes on FX futures (on CME) have changed over the years, so neither spot nor futures are fixed.

$\endgroup$
2
  • $\begingroup$ Do you recommend some other way to determine the how to relatively discretize the price of every pair? I can't just pick some real number to be unit because that will make some of the currency prices always zero for instance... The goal is to have a finite number of "levels" that each price takes on because otherwise there is a # of states explosion which only a super computer has the power to work with. $\endgroup$ Commented May 5, 2021 at 17:30
  • 1
    $\begingroup$ The traditional rule for spot quotes was 4 decimal digits for small rates (like EURUSD) and 2 decimal digits for big rates (like USDJPY). As user42108 mentioned there is nowadays a move by data vendors to provide an additional digit (the "fractional pip"), making 5 or 3 digits common. $\endgroup$
    – nbbo2
    Commented May 5, 2021 at 17:36
2
$\begingroup$

In addition to @user42108's great answer:

Maybe you already had a look on the 'usual' sources. Wiki states that the convention is still 4 to 6 digits, and Bank of Canada states the same, i.e. up to six digits. There may be currency pairs that are quoted with less digits, this seems to be the case when the exchange rate is above 80 or so.

Depending on your use case (trading? statistical analysis?): If you really need to quantize your data, you could do so without that much loss of precision by simply rounding to 4 digits, no?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.