This type represents the input data required to build a yield curve that produces discount factors that are equal to the forward discount factors of a given source curve relative to a given forward date. Technically, the mentioned curve is created by feeding an object of this type as value next to the key Market Data in the formula that creates the Yield Curve object.
Formally, denote by T₀ some assumed trade date, which in most cases will be today. Also assume the spot yield curve is known, which means an object of type Yield Curve is available, of which the Trade Date corresponds to the date T₀ The spot curve implies discount factors P₀(t) for any dates t, such that t >= T₀ Next, introduce a date T, such that T >= T₀, meant to be used as the reference date of the forward curve. Then the discount factor P(t) implied by the forward curve for any maturity date t such that t >= T will be given by: P(t) = P₀(t)/P₀(T)
In particular, setting t = T, we get: P(T) = P₀(T)/P₀(T) = 1 which shows that the reference date (trade date) of the forward curve is T
Practical notes:
1) The forward curve cannot return discount factors for dates earlier than T This means, an error is issued if the forward curve is used in a pricing context where the discount factor for a date earlier than T is required.
2) The Yield Curve object still carries its own independent Trade Date element. The latter date must be conformant with the valuation date that applies in the current pricing context and may differ from both T₀ and T
3) The most efficient usage of the forward curve is within a pricing context with a valuation date being equal to the spot date T₀ because then the spot discount factors are immediately retrievable. On a different occasion, the retrieval of the spot discount factors is still possible but highly inefficient due to the QuantLib's current architecture, where the global valuation date must be reset to T₀ every time a spot discount factor is needed! This may increase the execution time by a significant factor.
4) The above "efficient usage" carries the restriction that it can be used only when no discount factors before T are involved. If such discount factors are involved, the following two options are possible:
4a) Use a valuation date equal to T and tolerate the inefficiency penalty mentioned above. All required past fixings must be obviously supplied as input to the pricing function.
4b) Use a valuation date equal to T₀, but add as input to the pricing function an object of type Advanced Pricing that has Horizon Date = T and Spot Price = true The last approach requires that the Output entry to the function Price is set to Advanced