`Curves.Curve`

— Method`Curve(x:: AbstractVector{Tenor}, y:: AbstractVector; offset:: Real = 0, kwargs...)`

Construct Curve objects from an array of Tenor objects strings as x-axis.

With the `offset`

keyword argument the points on the x-axis, defined by the given tenors, can be shifted. This could be e.g. used to take a spot lag of financial instruments into account. Note that the shift is always in calendar days, a spot lag given in business days must be converted to calendar days beforehand.

`Curves.Curve`

— Method`Curve(x:: AbstractVector, y:: AbstractVector; method=ItpLinear(), extrapolation=EtpFlat(), logx=false, logy=false, sort=true)`

Standard curve constructor. Creates the interpolation/extrapolation object of the curve instance. The points `x`

and `y`

do not need to be sorted, this is done in the Curve constructor.

Interpolation/extrapolation details can be changed using the keyword arguments, defaults are:

- linear interpolation
- constant extrapolation
- no logarithmic axes

Note that for method ˋGridded(x)ˋ must be used so that the x-grid can be non-uniform.

Valid choices for ˋmethodˋ are:

- ˋItpLinear()ˋ, corresponds to Interpolation.jl ˋGridded(Linear())ˋ - default
- ˋItpConstant()ˋ, corresponds to Interpolation.jl ˋGridded(Constant())ˋ

Valid choices for ˋextrapolationˋ are:

- ˋEtpFlat()ˋ, corresponds to Interpolation.jl ˋFlat()ˋ - default
- ˋEtpLine()ˋ, corresponds to Interpolation.jl ˋLine()ˋ

If the curve consists only of a single point, always constant extrapolation is used.

`sort=true`

: per default, the input points are sorted and duplicate x-values are removed.`sort=true`

is unsafe and intended to be used for Curves.jl internal operations only, where it can be guaranteed that the points are sorted and not duplicate.

`Curves.Curve`

— Method`Curve(x:: AbstractVector{<: AbstractString}, y; kwargs...)`

Construct Curve objects from an array of tenor strings as x-axis.

`Curves.Curve`

— Method`Curve(c1:: Curve; method=getitpm(c1), extrapolation=getetpm(c1), logx=c1.logx, logy=c1.logy, sort=true)`

Copy constructor to generate a new curve from an existing one. The interpolation / extrapolation parameters can be changed.

`Curves.Tenor`

— TypeStructure for tenors, consisting of a multiplier and a unit (e.g. days, month, year)

`Curves.Tenor`

— Method`Tenor(x:: AbstractString)`

Constructor for creating a Tenor object from a string. The input string must start with the multiplier as Integer followed by the unit (as last character).

Example:

```
julia> Tenor.(("1D", "3W", "1M", "10y"))
(Tenor(TDays, 1), Tenor(TWeeks, 3), Tenor(TMonths, 1), Tenor(TYears, 10))
```

`Base.filter`

— Method`filter(f:: Function, c1::Curve; axis:: Symbol = :x, kwargs...)`

Filters curve points according to the given (boolean return) function.

The output Curve is constructed using default settings, alternative settings can be passed to the Curve constructor using the ˋkwargs...ˋ

`Base.first`

— Method`first(c1:: Curve, n:: Integer; kwargs...)`

Returns a new curve containing the first n points of the previous curve. `n`

must be at least 1.

The output Curve is constructed using default settings, alternative settings can be passed to the Curve constructor using the ˋkwargs...ˋ

`Base.last`

— Method`last(c1:: Curve, n:: Integer; kwargs...)`

Returns a new curve containing the last n points of the previous curve. `n`

must be at least 1.

The output Curve is constructed using default settings, alternative settings can be passed to the Curve constructor using the ˋkwargs...ˋ

`Curves.apply`

— Method`apply(f:: Function, c1:: Curve; axis:: Symbol = :xy, kwargs...)`

If ˋaxisˋ is ˋ:xyˋ (default): applies a 2-argument function ˋf(x,y)=zˋ to each entry of the Curve.

If ˋaxisˋ is ˋ:xˋ or ˋ:yˋ: applies a 1-argument function ˋf(x)=zˋ to a single axis of the Curve.

`Curves.concat`

— Method`concat(c1:: Curve, c2:: Curve; drop_dup=true, kwargs...)`

Merges two curves.

Element type is inferred by promotion. Dulicate points are dropped by default, unless ˋdrop_dup=falseˋ is set. The output Curve is constructed using default settings, alternative settings can be passed to the Curve constructor using the ˋkwargs...ˋ

`Curves.firstpoint`

— Method`firstpoint(c1:: Curve; dims=1):: Real`

Returns the first point of the X-axis (if `dims=1`

) or the Y-axis (if `dims=2`

).

`Curves.get_days`

— Method`get_days(x:: Tenor):: Int`

Gets the number of days corresponding to the Tenor object. The days are calculated in a simplified way, assuming 30 days/ month and 365 days/ year.

`Curves.get_tenor`

— Method`get_tenor(x:: Integer):: Tenor`

Converts the given number of days to a Tenor.

The following mapping is used (exactly the reverse of `get_days`

): TDays => 1, TWeeks => 7, TMonths => 30, TYears => 365

`Curves.getetpm`

— Methodhelper function to get Interpolations.jl extrapolation method

`Curves.getitpm`

— Methodhelper function to get Interpolations.jl interpolation method

`Curves.lastpoint`

— Method`lastpoint(c1:: Curve; dims=1):: Real`

Returns the last point of the X-axis (if `dims=1`

) or the Y-axis (if `dims=2`

).

`Curves.mergexy`

— MethodMerges two pairs of arrays x, y into a combined (along x-values) array pair.

`Curves.uniquexy`

— MethodRemoves duplicates in the array x and the entries in the array y which have the same index as the x-duplicates.

Note that it does not check if the y-values for x-value duplicates are the same!

`Interpolations.interpolate`

— Method`interpolate(xval:: AbstractArray{T} where T, c1:: Curve; kwargs...):: Curve`

Interpolates the curve onto the given array and returns a new Curve instance on the interpolated points.

`Interpolations.interpolate`

— Method`interpolate(c0:: Curve, c1:: Curve; kwargs...):: Curve`

Interpolates the Curve ˋc1ˋ on the x-axis points of the Curve ˋc0ˋ and returns a new Curve instance on the interpolated points.

`Interpolations.interpolate`

— Method`interpolate(xval:: Real, c1:: Curve)`

Returns the interpolated or extrapolated y-value of the curve for a given x-value.

`Curves.@t_str`

— MacroString macro for the creation of Tenor objects.

Example:

```
julia> t"1W"
Tenor(Curves.TWeeks, 1)
```