Wednesday, 24 June 2015

Modeling Interest Rates Meucci Style

I have signed up for Attilio Meucci’s ARPM Bootcamp next month (13-18 July 2015) in NYC, and need to do quite a bit of prep as it’s going to be a deep-dive…

The Advanced Risk and Portfolio Management Bootcamp provides in-depth understanding of buy-side modeling from the foundations to the most advanced statistical and optimization techniques, in 6 intensive days of theory and MATLAB live examples and exercises:

  • Market modeling: random walk, ARMA, GARCH, Levy, long memory, stochastic volatility
  • Multivariate statistics: non-parametric, non-normal MLE, shrinkage, robust, Bayesian estimation; copula/marginal factorization; location-dispersion ellipsoid
  • Factor modeling: theory and pitfalls of time-series and cross-sectional factor models, CAPM, APT, principal components analysis, random matrix theory
  • Pricing: full evaluation, Greeks, stress-matrix interpolation; analytical, Monte Carlo, historical
  • Risk analysis: diversification, stochastic dominance, expected utility, Sharpe ratio, Omega, Kappa, Sortino, value at risk, expected shortfall, coherent and spectral measures
  • Portfolio construction: robust/SOCP optimization, shrinkage/Bayesian allocations, Black-Litterman and beyond; transaction costs, liquidity, market impact; statistical arbitrage; convex/concave dynamic strategies, CPPI, delta-replication

So I thought I would delve into one of his many interesting papers, “Neither ”Normal" not “Lognormal”: Modeling Interest Rates Across all Regimes“, co-authored by Angela Loregian. The paper and Matlab code can be downloaded at

However, since I’m still an R fan I thought it would be interesting to port his code to R (although there is an R package, “Meucci”, under development, it failed to build when I looked). Here is my port of the code and the resulting chart showing JGB rates, log-rates, and shadow rates (derived from the inverse call transformation):

+ Show R code

The main point regarding the shadow rates is to...

Notice how the behavior of the unconstrained risk drivers attained by means of the inverse call transformation looks smoother than those of yields and log-yields, displaying a homogeneous evolution for both short and long-term series.

... which is further explained in Meucci’s “The Prayer”...

Homogeneity ensures that we can apply statistical techniques to the observed time series of the risk drivers {yt}t=1,…,T and project future distributions.

You can find out more about this quest for invariance in “The Prayer” at

One question I’ll be sure to ask is how to model “real-life” negative interest rates that we observed recently in the Euro area - this Meucci model doesn’t appear to admit such…

If you are also taking the plunge and attending the course, do drop me an email and we’ll meet up!

Click here for the R code on GitHub.


  1. The Meucci package is being actively worked on this summer as part of the Google Summer of Code. You'll probably want to install it from source or import functions directly:
    That should give you a good head start for his bootcamp, which I've heard great things about. Let us know what you think and how we might improve the package.


    1. Thanks for the heads up. I just had a quick look at the repo, and it looks gR8! Apart from resolving the 'Failed to build' and getting it on CRAN proper, my wish list would include examples in the object documentation help pages and a few vignettes.

    2. We are hoping to get it onto CRAN late this summer. The goal of the project is to match Attilio's Matlab code as closely as possible, to support R-based readers and students as they work through his papers and books. Proper functionalization is more likely to happen in the context of other packages - such as his Fully Flexible Framework that has been implemented in PortfolioAnalytics.

      R-forge is (in my opinion) overly conservative about building packages, so packages that are in heavy development frequently "fail" to build because they aren't fully CRAN-ready. As a result, you can't rely on it for regular builds when they are being worked on. I built it from source yesterday and had no difficulties installing it.

  2. I'm unable to download and install the this package from, appreciate your help and support.

  3. Hi, I'm not the package maintainer and didn't use it in my blog. But you could try, otherwise contact someone like Peter Carl directly.