I'm trying to calculate a historical VaR for a portfolio of futures, however there are certain days for which some assets are missing prices. Since the portfolio consists of many spread positions, the days that are missing prices have large PnL's when one leg of the spread contains a return and the other leg doesn't.

I was wondering what the most appropriate way of imputing this data would be, I've tried using the median/mean for each asset but that ignores the co-variance structure of the portfolio. Would an algorithm such as MICE or EM be appropriate in this situation?


For a VaR calc you might not want to interpolate missing values. By doing that you are inherently editing the returns distribution; potentially this will make a VaR look better or worse. Not good if your goal is an accurate risk distribution.

Its worth considering what a missing value signifies. There are two cases. A missing value or unchanged value can reflect a zero trade volume. If you have volume data and it shows that trades occurred, you probably have a data error somewhere. As a result, it is worth considering bid/ask data to help complete this task. Generally in futures markets there is always a bid/ask even if there is no trade volume. You can use this data to compute the mark to market value of each position. Furthermore, it allows you the flexibility to calc VaR based off mark to bid - mid - ask.

Now lets consider a case where say bid or ask is missing, that also tell you something about the risk. If there is no bid that means no way to sell and if there is no ask, there is no way to buy. That would signify great risk because that means the the order book is empty for given levels. That is just an example how bid/ask data can inform you.

Another method would be to use data from a more liquid contract in the term-structure. You would just have to adjust the price and return to match the target contract. You can do this through a simple ratio and beta calc.

One question, are you using daily data or intraday data?

Let me know if that helps.


A completely different statistical approach is to pose your own machine learning problem:

1) Collect a set of full data where you have data values available for all instruments on any given day.

2) Propose a machine learning model that will devise its own optimised parameters for the task of regressing any missing data.

3) From your set of good data systematically alter the the data by removing values (which you attempt to predict) under a supervised learning paradigm with a loss function equivalent to the squared error residual.

As an example of a possible model: suppose you had the daily changes of 100 stock prices valid on a set of days. You could try implementing a neural network which took as inputs the 100 daily changes and 100 binary flags (0 or 1) stating whether the data was available or not for a particular stock (set an unknown value to zero). The output of the network would be the 100 known stock prices.

This is of course completely untested and just an idea but the benefits that this model allows is that data generation is probably plentiful. Even if you had 5y of 100 stock prices you could generate lots of noisy data since for each date you have many billions of combinations of data elements that you could remove and hopefully use to get your neural network weights to converge for a generalist setting. I'm actually tempted to see if this would work...

The advantage of this model is that it is non-parametric and agnostic as to which of the 100 stocks are unknown on any given day. It will simply takes the inputs as it sees them and return a vector of 100 expected stock changes.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.