Imported from previous forum
Hi All
We currently looking at system that allows clients to trade fixed income instruments on clean price and on yield. We are in the process of defining the fields to be used when communicating with this system. Here is how we have done this previously:
New Order Single:
The client always specifies the Clean Price or Yield-To-Mat. in Price(44) and qualify the type with PriceType(423) to denote whether it is a yield or a price.
Execution Report:
Currently whatever the client specified as Price(44) will be echoed to the client in Price(44) and the value at which it executed in LastPx(31). The price type of the LastPx(31) is identical to Price(44) (i.e. either both are yields or both are clean prices). If LastPx(31) refers to a clean price, then we communicate the corresponding yield in Yield(236) and if LastPx(31) refers to YTM, then we communicate the corresponding clean price in LastParPx(669). This all works fine (so far).
The complexity comes up because we want to disseminate the yield/price conversion prior to the trade actually takes place. In this case we need a Yield field to communicate the yield if the Price(44) refers to a clean price and something in the lines of a ‘ParPx’ if the Price(44) refers to the yield.
Question:
Here is what we plan to do
On Execution Report:
Price(44) will refer to the value that the customer submitted.
LastPx(31) will refer to the value at which the order was executed. (Same price type as Price(44) )
Yield(236) will refer to the yield corresponding to Price(44) if it refers to clean price (i.e. a change from what is mentioned above. This is not necessarily the yield at which the order was executed).
Any proposals on a field to communicate the clean price if Price(44) refers to yield? Is it correct to use YieldRedemptionPrice(697)?
FillYield(1623) will refer to the yield corresponding to LastPx(31) if it refers to clean price. This will be the yield at which the order executed.
LastParPx(669) will refer to the clean price if LastPx(31) refers to yield.
Can anyone let know if the proposed usage of the fields are correct? I tried to find some examples but couldn’t. Sorry if this is a case of pure ignorance.
Kulendra,
Your solution to reporting FI prices is interesting but as you know it goes beyond the standard. My recommendation would be to use the standard ER fields for their intended purpose - Yield(236) reporting the yield derived from LastPx(31) when it is percent-of-par. Then for reporting yield derived from Price(44) when it is percent-of-par and par-price derived from Price(44) when it is yield use user defined fields. Since all the regular UDF tags are taken (5000-9999) you can allocate tag numbers 20000 and above without publishing them on the FIX website, e.g. OrderPxYield(20000) and OrderParPx(20001). Finally a word of caution about all Yield and Coupon fields in FIX – their datatype is Percentage but they are expressed as fractions. To report a yield of 2.25% you must use 236=0.0225.
Hi All
We currently looking at system that allows clients to trade fixed income instruments on clean price and on yield. We are in the process of defining the fields to be used when communicating with this system. Here is how we have done this previously:New Order Single:
The client always specifies the Clean Price or Yield-To-Mat. in Price(44) and qualify the type with PriceType(423) to denote whether it is a yield or a price.Execution Report:
Currently whatever the client specified as Price(44) will be echoed to the client in Price(44) and the value at which it executed in LastPx(31). The price type of the LastPx(31) is identical to Price(44) (i.e. either both are yields or both are clean prices). If LastPx(31) refers to a clean price, then we communicate the corresponding yield in Yield(236) and if LastPx(31) refers to YTM, then we communicate the corresponding clean price in LastParPx(669). This all works fine (so far).The complexity comes up because we want to disseminate the yield/price conversion prior to the trade actually takes place. In this case we need a Yield field to communicate the yield if the Price(44) refers to a clean price and something in the lines of a ‘ParPx’ if the Price(44) refers to the yield.
Question:
Here is what we plan to do
On Execution Report:
Price(44) will refer to the value that the customer submitted.
LastPx(31) will refer to the value at which the order was executed. (Same price type as Price(44) )Yield(236) will refer to the yield corresponding to Price(44) if it refers to clean price (i.e. a change from what is mentioned above. This is not necessarily the yield at which the order was executed).
Any proposals on a field to communicate the clean price if Price(44) refers to yield? Is it correct to use YieldRedemptionPrice(697)?FillYield(1623) will refer to the yield corresponding to LastPx(31) if it refers to clean price. This will be the yield at which the order executed.
LastParPx(669) will refer to the clean price if LastPx(31) refers to yield.Can anyone let know if the proposed usage of the fields are correct? I tried to find some examples but couldn’t. Sorry if this is a case of pure ignorance.
Hi Dean
Thanks for the reply, usage of UDFs was also a possible candidate but I wanted to check and see if there is any standard way of doing all we wanted. Seems like the post-trade computations are standardized like you mentioned but not the pre-trade and I think we will stick to it.
I’ll keep this thread open for a while anyway in case someone comes up with a different solution. Many thanks for your reply and greetings for the season to everyone ![]()
Kulendra
Kulendra,
Your solution to reporting FI prices is interesting but as you know it goes beyond the standard. My recommendation would be to use the standard ER fields for their intended purpose - Yield(236) reporting the yield derived from LastPx(31) when it is percent-of-par. Then for reporting yield derived from Price(44) when it is percent-of-par and par-price derived from Price(44) when it is yield use user defined fields. Since all the regular UDF tags are taken (5000-9999) you can allocate tag numbers 20000 and above without publishing them on the FIX website, e.g. OrderPxYield(20000) and OrderParPx(20001). Finally a word of caution about all Yield and Coupon fields in FIX – their datatype is Percentage but they are expressed as fractions. To report a yield of 2.25% you must use 236=0.0225.