Author: Ilya Archakov and Peter Reinhard Hansen

# The generalized Fisher transformation and its inverse

#### Ilya Archakov and Peter Reinhard Hansen

    library(GFT)

## The transformation

The generalized Fisher transformation (GFT) of a non-singular \(n \times n\) correlation matrix \(C\) is \[\gamma = \mathrm{vecl}(\log C) \in \mathbb{R}^d, \qquad d = n(n-1)/2,\] the below-diagonal elements of the matrix logarithm of \(C\), stacked column by column. Archakov and Hansen (2021) showed that this map is a bijection between the set of positive definite correlation matrices and \(\mathbb{R}^d\). For \(n = 2\) it reduces to Fisher’s classical \(z\)-transformation:

    C <- matrix(c(1, 0.5, 0.5, 1), 2, 2)
    c(gft(C), atanh(0.5))
    #> [1] 0.5493061 0.5493061

A correlation matrix is mapped to an unrestricted vector:

    C <- 0.9^abs(outer(1:5, 1:5, "-"))   # Toeplitz correlation matrix
    z <- gft(C)
    z
    #>  [1] 1.1532900 0.5558857 0.3580039 0.2732945 1.0109968 0.5069767 0.3580039
    #>  [8] 1.0109968 0.5558857 1.1532900

## The inverse

The inverse is not available in closed form for \(n \ge 3\). It is computed from the variational characterization \[x^*(z) = \arg\min_x \; \mathrm{tr}\, e^{A[x;z]} - \sum_i x_i,\] where \(A[x;z]\) is the symmetric matrix with off-diagonal elements \(z\) and diagonal \(x\): at the minimizer, \(C = e^{A[x^*;z]}\) is the unique correlation matrix with \(\mathrm{vecl}(\log C) = z\). The recommended solver is `inv_gft()`, the GFT-FP+N algorithm of Archakov and Hansen (2026): a globally convergent fixed-point phase in the log domain, followed by a matrix-free inexact Newton phase.

    r <- inv_gft(z)
    r
    #> Inverse GFT result (n = 5)
    #>   converged: TRUE  (err = 1.18e-15)
    #>   iterations: 5   eigendecompositions: 6   Hessian-vector products: 9
    max(abs(r$C - C))
    #> [1] 1.776357e-15

Because the GFT is a bijection, any vector in \(\mathbb{R}^d\) is a valid input, which makes the parametrization convenient for unconstrained estimation and modeling of correlation matrices:

    set.seed(42)
    r <- inv_gft(rnorm(45, sd = 2))      # n = 10
    range(diag(r$C))                     # unit diagonal
    #> [1] 1 1
    min(eigen(r$C, symmetric = TRUE)$values)  # positive definite
    #> [1] 1.145917e-10

## Solvers

Three reference solvers accompany `inv_gft()`: the plain Archakov–Hansen fixed point, Broyden’s method (Chen, Fei and Yu, 2025), and full Newton with the exact \(O(n^4)\) Hessian. All count eigendecompositions (`eighs`), the dominant \(O(n^3)\) kernel:

    set.seed(1)
    z <- rnorm(190, sd = 2)              # n = 20, demanding spectrum
    data.frame(
      solver = c("inv_gft (GFT-FP+N)", "inv_gft_fp", "inv_gft_broyden",
                 "inv_gft_newton"),
      eighs = c(inv_gft(z)$eighs, inv_gft_fp(z)$eighs,
                inv_gft_broyden(z)$eighs, inv_gft_newton(z)$eighs),
      converged = c(inv_gft(z)$converged, inv_gft_fp(z)$converged,
                    inv_gft_broyden(z)$converged, inv_gft_newton(z)$converged)
    )
    #>               solver eighs converged
    #> 1 inv_gft (GFT-FP+N)    13      TRUE
    #> 2         inv_gft_fp   242      TRUE
    #> 3    inv_gft_broyden    20      TRUE
    #> 4     inv_gft_newton    11      TRUE

For sequences of nearby problems (e.g. along a filtration), warm starts cut the cost further:

    z2 <- z + 0.01
    c(cold = inv_gft(z2)$eighs, warm = inv_gft(z2, x0 = inv_gft(z)$x)$eighs)
    #> cold warm
    #>   13    6

## References

Archakov, I. and Hansen, P. R. (2021). A new parametrization of correlation matrices. Econometrica, 89(4), 1699–1715. doi:10.3982/ECTA16910

Archakov, I. and Hansen, P. R. (2026). A variational approach to the generalized Fisher transformation of correlation matrices. Working paper.

Chen, H., Fei, Y. and Yu, J. (2025). Multivariate stochastic volatility models based on generalized Fisher transformation. Journal of Econometrics, 251, 106041.