Package com.opengamma.livedata.normalization

Source Code of com.opengamma.livedata.normalization.MarketValueCalculatorTest

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.livedata.normalization;

import static org.testng.AssertJUnit.assertEquals;

import org.fudgemsg.MutableFudgeMsg;
import org.testng.annotations.Test;

import com.opengamma.core.value.MarketDataRequirementNames;
import com.opengamma.livedata.server.FieldHistoryStore;
import com.opengamma.util.fudgemsg.OpenGammaFudgeContext;
import com.opengamma.util.test.TestGroup;

/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class MarketValueCalculatorTest {

  public void bidAskLast() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add(MarketDataRequirementNames.BID, 50.80);
    msg.add(MarketDataRequirementNames.ASK, 50.90);
    msg.add(MarketDataRequirementNames.LAST, 50.89);
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(msg);
   
    MutableFudgeMsg normalized = calculator.apply(msg, "123", store);
    assertEquals(4, normalized.getAllFields().size());
    assertEquals(50.85, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }

  public void bidAskOnly() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add(MarketDataRequirementNames.BID, 50.80);
    msg.add(MarketDataRequirementNames.ASK, 50.90);
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(msg);
   
    MutableFudgeMsg normalized = calculator.apply(msg, "123", store);
    assertEquals(3, normalized.getAllFields().size());
    assertEquals(50.85, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }

  public void lastOnly() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add(MarketDataRequirementNames.LAST, 50.89);
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(msg);
   
    MutableFudgeMsg normalized = calculator.apply(msg, "123", store);
    assertEquals(2, normalized.getAllFields().size());
    assertEquals(50.89, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }

  public void bigSpread() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add(MarketDataRequirementNames.BID, 50.0);
    msg.add(MarketDataRequirementNames.ASK, 100.0);
    msg.add(MarketDataRequirementNames.LAST, 55.12);
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(msg);
   
    MutableFudgeMsg normalized = calculator.apply(msg, "123", store);
    assertEquals(4, normalized.getAllFields().size());
    assertEquals(55.12, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }

  public void bigSpreadHistory() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg historicalMsg = OpenGammaFudgeContext.getInstance().newMessage();
    historicalMsg.add(MarketDataRequirementNames.LAST, 45); // Should never use this
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(historicalMsg);
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add(MarketDataRequirementNames.BID, 50.0);
    msg.add(MarketDataRequirementNames.ASK, 100.0);
    msg.add(MarketDataRequirementNames.LAST, 50.52);
   
    MutableFudgeMsg normalized = calculator.apply(msg, "123", store);
    assertEquals(4, normalized.getAllFields().size());
    assertEquals(50.52, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }

  public void bigSpreadLowLast() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add(MarketDataRequirementNames.BID, 50.0);
    msg.add(MarketDataRequirementNames.ASK, 100.0);
    msg.add(MarketDataRequirementNames.LAST, 44.50);
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(msg);
   
    MutableFudgeMsg normalized = calculator.apply(msg, "123", store);
    assertEquals(4, normalized.getAllFields().size());
    assertEquals(50.0, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }

  public void bigSpreadHighLast() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add(MarketDataRequirementNames.BID, 50.0);
    msg.add(MarketDataRequirementNames.ASK, 100.0);
    msg.add(MarketDataRequirementNames.LAST, 120.0);
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(msg);
   
    MutableFudgeMsg normalized = calculator.apply(msg, "123", store);
    assertEquals(4, normalized.getAllFields().size());
    assertEquals(100.0, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }

  public void useHistoricalBidAsk() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg historicalMsg = OpenGammaFudgeContext.getInstance().newMessage();
    historicalMsg.add(MarketDataRequirementNames.BID, 50.0);
    historicalMsg.add(MarketDataRequirementNames.ASK, 51.0);
    historicalMsg.add(MarketDataRequirementNames.MARKET_VALUE, 50.52);
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(historicalMsg);
   
    MutableFudgeMsg newMsg = OpenGammaFudgeContext.getInstance().newMessage();
    newMsg.add(MarketDataRequirementNames.LAST, 50.89);
   
    MutableFudgeMsg normalized = calculator.apply(newMsg, "123", store);
    assertEquals(2, normalized.getAllFields().size());
    assertEquals(50.5, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }

  public void useHistoricalMarketValueWithEmptyMsg() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg historicalMsg = OpenGammaFudgeContext.getInstance().newMessage();
    historicalMsg.add(MarketDataRequirementNames.MARKET_VALUE, 50.52);
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(historicalMsg);
   
    MutableFudgeMsg newMsg = OpenGammaFudgeContext.getInstance().newMessage();
   
    MutableFudgeMsg normalized = calculator.apply(newMsg, "123", store);
    assertEquals(1, normalized.getAllFields().size());
    assertEquals(50.52, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }

  public void noMarketValueAvailable() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    FieldHistoryStore store = new FieldHistoryStore();
   
    MutableFudgeMsg newMsg = OpenGammaFudgeContext.getInstance().newMessage();
   
    MutableFudgeMsg normalized = calculator.apply(newMsg, "123", store);
    assertEquals(0, normalized.getAllFields().size());
  }

  public void zeroBid() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add(MarketDataRequirementNames.BID, 0.0);
    msg.add(MarketDataRequirementNames.ASK, 1.0);
    msg.add(MarketDataRequirementNames.LAST, 0.57);
   
    FieldHistoryStore store = new FieldHistoryStore();
    store.liveDataReceived(msg);
   
    MutableFudgeMsg normalized = calculator.apply(msg, "123", store);
    assertEquals(4, normalized.getAllFields().size());
    assertEquals(0.5, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE), 0.0001);
  }
 
  public void noBidAskLastOrFieldHistory() {
    MarketValueCalculator calculator = new MarketValueCalculator();
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add(MarketDataRequirementNames.CLOSING_BID, 0.1);
    msg.add(MarketDataRequirementNames.CLOSING_ASK, 0.2);
    msg.add(MarketDataRequirementNames.CLOSE, 0.14);
   
    FieldHistoryStore store = new FieldHistoryStore();
   
    MutableFudgeMsg normalized = calculator.apply(msg, "123", store);
    assertEquals(0.14, normalized.getDouble(MarketDataRequirementNames.MARKET_VALUE));
  }

}
TOP

Related Classes of com.opengamma.livedata.normalization.MarketValueCalculatorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.