title: Bloomberg - get real world prices from the API
body: <p>For a number of financial instruments, Bloomberg scales the prices that are shown in the Terminal - for example:</p>
  
  <ul>
  <li><p>FX Futures at CME: e.g. <code>ADZ3 Curncy</code> (Dec-2013 AUD Futures at CME) show as 93.88 (close on 04-Oct-2013), whereas the actual (CME) market/settlement price was 0.9388</p></li>
  <li><p>FX Rates: sometimes FX rates are scaled - this may vary by which way round the FX rate is asked for, so <code>EURJPY Curncy</code> (i.e. JPY per EUR) has a <code>BGN</code> close of 132.14 on 04-Oct-2013. The inverse (EUR per JPY) would be 0.007567. However, for <code>JPYEUR Curncy</code> (i.e. EUR per JPY), <code>BGN</code> has a close of 0.75672 for 04-Oct-2013.</p></li>
  <li><p>FX Forwards: Depending on whether you are asking for rates or forward points (which can be <a href="https://stackoverflow.com/questions/2929178/in-bloomberg-api-how-do-you-specify-to-get-fx-forwards-as-a-spread-rather-than-a">set by overrides</a>)... if you ask for rates, you might get these in terms of the original rate, so for <code>EURJPY1M Curncy</code>, <code>BGN</code> has a close of 132.1174 on 04-Oct-2013. But if you ask for forward points, you would get these scaled by some factor - i.e. -1.28 for <code>EURJPY1M Curncy</code>.</p></li>
  </ul>
  
  <p>Now, I am not trying to criticise Bloomberg for the way that they represent this data in the Terminal. Goodness only knows when they first wrote these systems, and they have to maintain the functionality that market practitioners have come to know and perhaps love... In that context, scaling to the significant figures might make sense.</p>
  
  <p>However, when I am using the API, I want to get <em>real-world, actual prices</em>. Like... the actual price at the exchange or the actual price that you can trade EUR for JPY.</p>
  
  <p>So... how can I do that?</p>
  
  <p>Well... the approach that I have come to use is to find the <code>FLDS</code> that communicate this scaling information, and then I fetch that value to reverse the scale that they have applied to the values. For futures, that's <code>PX_SCALING_FACTOR</code>. For FX, I've found <code>PX_POS_MULT_FACTOR</code> most reliable. For FX forward points, it's <code>FWD_SCALE</code>. </p>
  
  <p>(It's also worth mentioning that how these are applied vaires - so <code>PX_SCALING_FACTOR</code> is what futures prices should be <em>divided</em> by, <code>PX_POS_MULT_FACTOR</code> is what FX rates should be <em>multipled</em> by, and <code>FWD_SCALE</code> is how many decimal places to divide the forward points by to get to a value that can be added to the actual FX rate.)</p>
  
  <p>The problem with that is that it doubles the number of fetchs I have to make, which adds a significant overhead to my use of the API (reference data fetches also seem to take longer than historical data fetches.) (FWIW, I'm using the API in Java, but the question should be equally applicable to using the API in Excel or any of the other supported languages.)</p>
  
  <p>I've thought about finding out this information and storing it somewhere... but I'd really like to not have to hard code that. Also, that would require to spend a very long time finding out the right scaling factors for all the different instruments I'm interested in. Even then, I would have no guarantee that they wouldn't change their scale on me at some point!</p>
  
  <p>What I would really like to be able to do is apply an override in my fetch that would allow me specify what scale should be used. (And no, the fields above do not seem to be override-able.) I've asked the "helpdesk" about this on lots and lots of occasions - I've been badgering them about it for about 12 months, but as ever with Bloomberg, nothing seems to have happened.</p>
  
  <p>So... </p>
  
  <ul>
  <li>has anyone else in the SO community faced this problem? </li>
  <li>has anyone else found a way of setting this as an override?</li>
  <li>has anyone else worked out a better solution?</li>
  </ul>