/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.equity.capm; import org.apache.commons.lang.Validate; import com.opengamma.analytics.financial.timeseries.analysis.DoubleTimeSeriesStatisticsCalculator; import com.opengamma.analytics.financial.timeseries.util.TimeSeriesDataTestUtils; import com.opengamma.timeseries.DoubleTimeSeries; /** * */ public class CAPMExpectedReturnCalculator { private final DoubleTimeSeriesStatisticsCalculator _expectedMarketReturnCalculator; private final DoubleTimeSeriesStatisticsCalculator _expectedRiskFreeReturnCalculator; public CAPMExpectedReturnCalculator(final DoubleTimeSeriesStatisticsCalculator expectedMarketReturnCalculator, final DoubleTimeSeriesStatisticsCalculator expectedRiskFreeReturnCalculator) { Validate.notNull(expectedMarketReturnCalculator, "expected market return calculator"); Validate.notNull(expectedRiskFreeReturnCalculator, "expected risk free return calculator"); _expectedMarketReturnCalculator = expectedMarketReturnCalculator; _expectedRiskFreeReturnCalculator = expectedRiskFreeReturnCalculator; } public Double evaluate(final DoubleTimeSeries<?> marketReturnTS, final DoubleTimeSeries<?> riskFreeReturnTS, final double beta) { TimeSeriesDataTestUtils.testNotNullOrEmpty(marketReturnTS); TimeSeriesDataTestUtils.testNotNullOrEmpty(riskFreeReturnTS); final Double expectedMarketReturn = _expectedMarketReturnCalculator.evaluate(marketReturnTS); final Double expectedRiskFreeReturn = _expectedRiskFreeReturnCalculator.evaluate(riskFreeReturnTS); return expectedRiskFreeReturn + beta * (expectedMarketReturn - expectedRiskFreeReturn); } }