Correlations

Correlation Term Structure Type

DiffFusion.CorrelationTermstructureType
abstract type CorrelationTermstructure <: Termstructure end

An abstract correlation term structure that provides methods to calculate instantaneous correlations.

DiffFusion.CorrelationHolderType
struct CorrelationHolder <: CorrelationTermstructure
    alias::String
    correlations::Dict{String, ModelValue}
    sep::String
    value_type::DataType
end

A container holding correlation values.

A CorrelationHolder allows to calculate correlation matrices based on String alias keys (identifiers).

value_type specifies the type of correlation entries. This ensures that all values are of consistent type. This feature is required for correlation sensitivity calculation.

DiffFusion.correlation_holderFunction
correlation_holder(
    alias::String,
    correlations::Dict,
    sep::String = "<>",
    value_type::DataType = ModelValue,
    )

Create a CorrelationHolder object from dictionary.

correlation_holder(
    alias::String,
    sep::String = "<>",
    value_type::DataType = ModelValue,
    )

Create an empty CorrelationHolder object.

correlation_holder(m::AssetModel)

Return the correlation holder term structure.

Return the model's CorrelationHolder.

Functions

Call operator for CorrelationTermstructure is defined as

(ts::CorrelationTermstructure)(args...) = correlation(ts, args...)
DiffFusion.correlationFunction
correlation(ts::CorrelationTermstructure, alias1::String, alias2::String)

Return a scalar instantaneous correlation.

correlation(ts::CorrelationTermstructure, aliases::AbstractVector{String})

Return a symmetric matrix of instantaneous correlations.

correlation(ts::CorrelationTermstructure, aliases1::AbstractVector{String}, aliases2::AbstractVector{String})

Return a matrix of instantaneous correlations, each element of aliases1 versus each element of aliases2. The size of the resulting matrix is (length(aliases1), length(aliases2)).

correlation(ts::CorrelationTermstructure, alias1::String, aliases2::AbstractVector{String})

Return an (1,N) matrix of instantaneous correlations.

correlation(ts::CorrelationTermstructure, aliases1::AbstractVector{String}, alias2::String)

Return an (N, 1) matrix of instantaneous correlations.

correlation(ch::CorrelationHolder, alias1::String, alias2::String)

Return a scalar instantaneous correlation.

correlation(ch::CorrelationHolder, aliases1::AbstractVector{String}, aliases2::AbstractVector{String})

Return a matrix of instantaneous correlations, each element of aliases1 versus each element of aliases2. The size of the resulting matrix is (length(aliases1), length(aliases2)).

correlation(ch::CorrelationHolder, aliases::AbstractVector{String})

Return a symmetric matrix of instantaneous correlations.

DiffFusion.correlation_keyFunction
correlation_key(ch::CorrelationHolder, alias1::String, alias2::String)

Derive the key for correlation dictionary from two aliases.

DiffFusion.set_correlation!Function
set_correlation!(
    ch::CorrelationHolder,
    alias1::String,
    alias2::String,
    value::ModelValue
    )

Insert a new correlation value into CorrelationHolder. If a correlation already exists it is overwritten.

DiffFusion.getFunction
get(ch::CorrelationHolder, alias1::String, alias2::String)

Implement methodology to obtain a scalar correlation from a CorrelationHolder.