8

Bernd Scherer has done exactly this test in his text "Portfolio Construction and Risk Budgeting 4th Edition". There is an SSRN paper by Scherer called "Resampled Efficiency and Portfolio Choice (2004)" you can take a look at as well. I would suggest you skip re-sampling (especially if you have a long-only portfolio) and take a look at Meucci's Robot ...


6

There is no way to calculate returns here. Let me stop you right there. You didn't open a brokerage account with zero dollars. The money you put-up for margin is your starting position. After a year of trading, you have a stopping position represented by a different amount of money in your account. The change from your starting position to your stopping is ...


5

While @Baruch Youssin answers correctly in the general sense, the first part of his answer isn't what happened in the example code. While QLNet is a port of QuantLib, it's not a direct port. Your quoted example doesn't show up in QLNet. The example in QuantLib was written in a very complicated way, in fact it's a simple example. discountingTermStructure is ...


5

There is a great deal of misinformation and out-of-date information on this site. Many of the references in this discussion and elsewhere have serious research flaws. The Michaud efficient frontier was invented and patented by Robert Michaud and Richard Michaud, U.S. patent # 6,003,018. The alternatives discussed here are not patented nor in many cases ...


5

You're not the first to trip on this, and unfortunately the fact that the provided example is from a different era doesn't help. Quite simply, you're not writing rates correctly. The 5-years swap rate, 0.3523%, must be written in decimal form as 0.003523. The same goes for the deposit rates. As your code is now, you're writing that the 4-years rate is 23....


5

Yes, it's possible to reduce the number of objects you'll create; whether this will speed up your calculations depend on how much time is taken by their creation and how much is taken by the actual bootstrapping. In any case: When you create your rate helpers, make sure you're passing quote objects and not simple numbers; that is, something like q1 = ...


5

You do not need zero rates to estimate a parametric model of the yield curve, such as Nelson-Siegel. Suppose for instance that you have a cross-section of bond prices. Then: For given parameters for your yield-curve model, compute yield curve; with this yield curve, calculate theoretical bond prices; compute discrepancy between theoretical bond prices and ...


4

No, you can't. You can never deduce the 3M/6M basis spread from 3 month instruments alone. If you consider the OIS curve riskless, you can interpret the 3 month curve as riskless rate + additional cost for things like credit risk, liquidity and so on. The 6 month rate contains even more of these credit risk and liquidity cost. How much exactly though is ...


4

Simulation for timeseries data is not a trivial matter and there are a number of methods to ensure you retain some of the relevant properties (mostly called dependent bootstrap methods): Block bootstrap - contiguous blocks of data chosen so that they are large enough to retain significant autocorrelations. Stationary bootstrap - randomised block size ...


3

15 years does correspond to t=15.236 according to the day counter you told the curve to use. First, you can't get exactly 15 anyway. Your calculation date is September 1st, 2016; according to the usual conventions, the swap whose rate you're quoting starts spot, that is, two business days after the calculation date. Given the weekend (your calculation date ...


3

It is true that intraday/market-making strategies don't have a reasonable "return" metric. For this reason you can't characterize them with the Sharpe Ratio, which depends on a capital basis and how that basis is leveraged (not to mention the risk-free rate on the capital basis). What you're asking is how to characterize the performance of a daily stream ...


3

A curve is used to do calculations (e.g. discounting of cash flows) as of a given trade date. Bootstrapping a single curve for two different trade dates does not make sense. With the first set of data you should bootstrap an OIS curve for the 2017-02-09 trade date, with the second set of data you should bootstrap an OIS curve for the 2017-02-10 trade date.


3

To retrieve the original curve, you need to use the same key tenors of the original curve and with the same interpolation. For instance, when you create the original curve as: crv = ql.PiecewiseLinearZero(2, ql.TARGET(), deposits + futures + swaps, ql.Actual365Fixed()) the curve linearly interpolates zero rates between nodes given by the maturities of the ...


2

You are going to need to interpolate in some way shape or form.... Linear is the easiest and most basic, however it may not capture the curvature, you can use splines to better capture the curve. A nice guide to doing so is here: It's a guide to bootstrapping and it has all the components. http://www.business.mcmaster.ca/finance/deavesr/yieldcur.pdf


2

I do not yet know QuantLib but one question is general and easy to answer: My first question is why do they use different yield curve? These two curves differ by risk levels inherent in them - the credit spreads over the risk-free yield curve (e.g., the OIS curve). The discounting curve, discountingTermStructure, embeds the risk that this particular ...


2

Bootstrap is a very interesting method to obtain the variance of any estimator. This means you can rely on it to obtain de variance of your Sharpe ratio (SR), but what you try to do is to deduce something (the probability to be positive) from the distribution of it. From a methodological viewpoint, if you boostrap your SR a "standard" way (i.e. ...


2

Answering my own question: All the indicated numbers as obtained from ICAP need to be divided by 100, as they are percentages The OptionletStripper1 takes an IborIndex, which should have a tenor equal to 1Y. I had set it to 6M, and that seemed to cause problems Ouch!


2

Unfortunately, financial markets are not like physical measures, where you know the "true" value of a physical variable but you just access to it thanks to noised sensors. We do not know the "true" volatility, just because there is not such one value... In statistics you have two kinds of modelling procedures: the ones dedicated to estimate the unknown ...


2

Let $\delta$ be 3 month and consider points of interest $\{T_i\}_i$ evenly spaced with $T_{i+1} -T_i = 3 month$. The Forward Rate $F_m^n(t)$ from period m to n at time $t$ is defined by $$(1 + \delta (n-m) F_m^n(t)) = \frac{B(t,T_m)}{B(t,T_n)},$$ where $B(t,T_i)$ is the time $t$ value of a zero coupon bond that matures in $T_i$. A swap rate $S_m^n(t)$ a ...


2

In interest rate land you can look at the yield curve in 3 ways: par space (a chart of the par swap rates of different maturities) , zero space (the zero coupon swap rates) and forward space (usually the 3 month forward rates for various maturities). These are equivalent ways to display the prevailing market rates. Perhaps that is what is being referred to


2

The FuturesRateHelper class knows that futures are quoted as 100-rate, so there's no need to convert the prices. You can just create them as futures_helpers.append(ql.FuturesRateHelper( ql.QuoteHandle(ql.SimpleQuote(future_rates[i])), imm,ql.Euribor3M(),ql.QuoteHandle(convexity_quote[i]))) I admit that the name of the class can lead one astray by ...


2

The section that refers to USD-LIBOR-BBA 3M looks correct. This shows that CME IRS are marginally higher than LCH IRS. This means that when you bootstrap the curve, the corresponding forward rates will be higher also. The sections USD-LIBOR-BBA 1M and USD-LIBOR-BBA 6M appear to show the level of 3M-1M and 6M-1M basis swaps respectively. These may help ...


2

From a pure mathematical perspective, this is possible. For example, consider dates $t_0 \le t_1 < t_2 < t_3$. Given \begin{align*} L(t_0, t_1, t_2) = \frac{1}{\Delta t_2}\left(\frac{P(t_0, t_1)}{P(t_0, t_2)}-1 \right), \end{align*} and \begin{align*} L(t_0, t_2, t_3) = \frac{1}{\Delta t_3}\left(\frac{P(t_0, t_2)}{P(t_0, t_3)}-1 \right), \end{align*} ...


2

There are no traded instruments that would allow a 1w libor curve to be bootstrapped. If you need to calculate a forward rate for 1week libor in the current environment, I would suggest that it can be bounded as follows : overnight fed funds < 1 week libor < 1 month libor. The forward rates on the bounds can be calculated from bootstrapped curves.


2

USD FRA: $\text{payoff} = N \frac{\delta (R - K) }{ 1 + \delta R}$ paid on the FRA start date, where $N$=notional, $\delta$= year fraction, $K$= fixed rate, $R$= floating rate; AUD FRA: $\text{payoff} = N (\frac{1}{1 + \delta K} - \frac{1}{1 + \delta R} )$ paid on the FRA start date. Now $$ N \left(\frac{1}{1 + \delta K} - \frac{1}{1 + \delta R} \...


2

The implementation of the bootstrap procedure in QuantLib is too long to describe here. It is explained at https://www.implementingquantlib.com/2013/10/chapter-3-part-3-of-n-bootstrapping.html; you might also want to look at the previous posts for background.


2

One possible solution is to build "synthetic" short term 6M IBOR deposits by extrapolating for $T < 6\text{M}$ from the 6M IBOR deposit and 1x7, 2x8, etc. 6M IBOR FRAs as I have seen done in various places, or better by extrapolating from the known 0x6, 1x7, 2x8, etc. OIS-6M IBOR basis as suggested in section 4.4.2 of the paper you are referring to. In ...


2

You use the most liquid instruments whose observable quotes you believe. For the swap curve, you use swap rates from the most common market convention. E.g., in case of USD - the fixed coupon one would pay for a floating leg reset from 3 month Libor. Not just any par rate. In case of some other currency, you'd use annual frequency because that's the most ...


2

There are several representations of "the yield curve". You can choose which one you want to use. For the "raw yield curve" (or what I call the Wall Street Journal yield curve, because it is used in newspapers) you simply get a list of bonds of various maturities and coupons and you plot points using the maturity on the x-axis and the YTM on the y-axis. ...


1

An FRA (forward rate agreement) is an interest rate derivative contract with specific documentation. A 3M FRA settles to 3M-IBOR, and a 6M FRA settles to 6M-IBOR, not a 6M rate that is a compounded composite rate of two 3M periods. Gordon's answer does as much as you can with the given information: it transforms a 3M rate into a 6M 'period' with ...


Only top voted, non community-wiki answers of a minimum length are eligible