I've been trying to make sense of how the FX forward market works. Let's say today is June 13, 2022. And we have the next market info as seen in Bloomberg for the FX cross between USDMXN, assuming mid values for simplicity.

T Dates Fwd
ON june 14 20.4579
TN june 15 20.4609
SP june 15 20.4640
1W june 22 20.4883
2W june 29 20.5163

I'd like to be clear in what these info means in terms of a contract and payoff.

For example if I have $100,000 usd.

ON : Does it mean I could buy today 100,000USD at 20.4579 MXN, but tomorrow I would have to sell those 100,000USD at tomorrow's spot? So the 20.4579 is a cash FX rate?

TN : Does it mean I could buy tomorrow 100,000USD at 20.4609 MXN, but the day after tomorrow I would have to sell those 100,000USD at t+2 spot? 20.4609 is a next business day from today rate?

Are these two, more of a swap exchange with legs in different days more than just a simple forward like the ones below?

SP: I get that these is just the spot value.

1W and the longer tenors: Are these just the value of the forward price? For example in the 1W I could buy/sell those 100,000 usd at 20.4883? But no obligation to sell/buy them later like in the first cases?

Thanks to everyone who might help with their experience and knowledge.

  • 1
    $\begingroup$ I am voting to close this question because it is off topic. You can look this up on the FRD help page. SP is simply spot (no forward or swap). Anything above SP is a classic forward. ON and TN are two leg swaps (details should be on the help page or ask the help desk so that they can show you where this section is). $\endgroup$
    – AKdemy
    Commented Jun 20, 2022 at 6:00
  • $\begingroup$ See this similar question quant.stackexchange.com/questions/42114/… $\endgroup$
    – nbbo2
    Commented Jun 20, 2022 at 6:24

2 Answers 2


There are two relevant sections on the help page, the direct links (e.g. if you have it in an IB) look like this:

  1. {LPHP FRD:0:1 2898067 }:

ON ("Overnight"), TN ("Tomorrow-Next"), and SN ("Spot-Next") are not tenors; they are swaps. Each are associated with two separate settlement dates, one for each leg:
• ON is the swap between TOD and TOM.
• TN is the swap between TOM and the following business day (which is spot in a T+2 currency).

  1. {LPHP FRD:0:1 612124 }:

Certain rules apply when calculating two-day settlements for Overnight (ON) and Tomorrow Night (TN) outrights.
Two-Day Settlement Outright Calculations
• ON bid outright: spot bid - TN ask points - ON ask points
• ON ask outright: spot ask - TN bid points - ON bid points
• TN bid outright: spot bid - TN ask points
• TN ask outright: spot ask - TN bid points

The special rule for US holidays mentioned on the help page refers to days where there is a US holiday only (e.g. independence day or last Friday). On these days, there is no TN quote (see for example 07/03/19) and FRD displays no values (blank).

Longer tenors are classic forward outrights. They are an obligation to buy/sell at the agreed rate (the forward rate) at the date of expiry. That is why you simply add the forward bid to spot bid in these cases, whereas in the ON and TN case, you cross bid and ask because you have two opposite transactions.

Within Bloomberg, you can use OVML to see the difference between a foward (OVML FWD) and a swap (OVML SW). The standard forward has one leg (left hand side is FRD, right hand side OVML FWD). The asterisk (*) next to the side (ask for the 3m forward example) refers to the side of the market that the user is on (by default the client, not the bank / market maker). The generic rule is BBBB (bank buys base at bid), which means the bank is buying the base currency (CCY1 in a CCY1CCY2 quote, so EUR in EURUSD) at the bid. Insofar, if a client buys, the banks sells at ask. enter image description here

We can also quickly manually compute the values using the formulas above (I am using Julia).

import DataFrames, PrettyTables, Statistics # import relevant packages
# define market data from screenshot (only forward points and Spot)
SP_bid = 1.0441
SP_ask = 1.0447
ON_bid = 0.304
ON_ask = 0.556
TN_bid = 0.666
TN_ask = 0.722

# define fwd_scale
fwd_scale = 10^-4

# compute results according to formulas
ON_Ask_Outright = SP_ask - (TN_bid + ON_bid)*fwd_scale
TN_Bid_Outright = SP_bid - TN_ask*fwd_scale
TN_Ask_Outright = SP_ask - TN_bid*fwd_scale
ON_Bid_Outright = SP_bid - (TN_ask + ON_ask)*fwd_scale

# create DataFrame
tenors = ["ON","TN","SP"]
df = DataFrame(Tenors = tenors)
df[!,"Pts Bid"]=[ON_bid, TN_bid, SP_bid]
df[!,"Pts Ask"]=[ON_ask, TN_ask, SP_ask]
df[!,"Fwds Bid"] = [ON_Bid_Outright, TN_Bid_Outright, SP_bid]
df[!,"Fwds Ask"] = [ON_Ask_Outright, TN_Ask_Outright, SP_ask]

# display results
PrettyTables.pretty_table(df,  border_crayon = Crayons.crayon"blue", header_crayon = Crayons.crayon"bold green", formatters = ft_printf("%.7f", [2,3,4,5]))

enter image description here

The swap on the other hand has two legs (near and far) in opposite directions. enter image description here

ATMF for ON and TN is identical due to OVML rounding values to 4 decimals and displaying MID as can be seen below.

ON_Mid_Outright_OVML = round(Statistics.mean([ON_Bid_Outright, ON_Ask_Outright]), digits = 4) # OVML displays ATMF rounded
TN_Mid_Outright_OVML = round(Statistics.mean([TN_Bid_Outright, TN_Ask_Outright]), digits = 4)
SP_Mid_Outright = round(Statistics.mean([SP_bid, SP_ask]), digits = 4)
df[!,"Mid rounded"] = [ON_Mid_Outright_OVML, TN_Mid_Outright_OVML , SP_Mid_Outright]

PrettyTables.pretty_table(df,  border_crayon = Crayons.crayon"blue", header_crayon = Crayons.crayon"bold green", formatters = ft_printf("%.7f", [2,3,4,5]),highlighters = (hl_value(1.0443)))

enter image description here

  • $\begingroup$ Thank you very much. I was able to check the info in BBG that was quite useful. I do get that the longer tenors are classic forwards. What's the rationale behind the ON and TN swaps? For example in the ON in your image you sell 1M Euro today at the ON outright, and then tomorrow you buy the same 1M Euro but at the TN outright? $\endgroup$ Commented Jun 23, 2022 at 5:29
  • $\begingroup$ The rational is probably well explained on Investopedia. The ATMF of 1.0443 that you see in the second screenshot is the MID for the TN quote (both legs are identical). $\endgroup$
    – AKdemy
    Commented Jun 23, 2022 at 15:29
  • $\begingroup$ Thanks, learned a lot. I just have one question about the implied interest from today to the spot rate. Might post it later instead of the other one now that I have it more clear. $\endgroup$ Commented Jun 25, 2022 at 22:54
  • $\begingroup$ By the way, don't you find it odd that BBG shows the 1.0443 for both the today leg and the tomorrow leg? I would expect that the Today leg ATMF was at the ON rate and the tomorrow leg at the TN rate, but it doesn't seem to be the case. $\endgroup$ Commented Jun 25, 2022 at 22:55

Your wrote

ON : Does it mean I could buy today 100,000 USD at 20.4579 MXN,
but tomorrow I would have to sell those 100,000 USD ...  ?

No, it is the opposite. By convention a swap moves the base currency from an earlier date to a later date. If you "do" or "buy" the ON spread you will be selling the USD today and buying it tomorrow.

So what do you do if you need USD today? First you will buy spot USD, giving you access to USD two days from now, then you will reverse or sell the TN spread and also sell the ON spread to send the USD backwards in time, in two steps. This explains the "special rules" for ON and TN outrights mentioned above, which hit the bid side of these two spreads (and the ask side of Spot).



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.