The source files can be found in examples/.
Cross-sectional factor model, end to end
Every other factor example on this site fits a factor model through time: it regresses each asset's return series on a set of observed factor series, one regression per asset. This page fits one across the cross-section. At each observation it regresses that day's returns of every asset on the lagged traits of those assets — their size, their value, their industry — and the coefficients it recovers are the factor returns of that day. Nobody supplies a factor series; the fit produces one.
That change of direction is what a point-in-time Asset Panel buys. A panel is a stack of Panel Fields — market capitalisation, book equity, an industry label — each indexed by observation and asset, and it travels on the returns carrier as rd.pnl. The panel is where the factor exposures come from, so the model can carry factors nobody publishes a series for.
The page runs the whole route on a synthetic panel drawn from a factor model we know, so every claim below is checkable against an answer fixed before the estimator ran:
- Build the panel, and the traits it was drawn from.
- Fit a
CrossSectionalFactorPrioron it. - Check what the fit recovered, and the identities it makes exact.
- Hand the prior's own factor model to two orthogonal uncertainty sets, and watch the book leave the directions the factors do not span.
- Run the same optimiser through a
WalkForwardunder a factor mandate. - Read a predicted and a realised factor attribution off the answer.
Reach for a cross-sectional factor model when your conviction lives in asset traits rather than in factor series — when you can say "cheap companies beat expensive ones" but have no published value-factor return to regress on. It is also the only route here that admits a universe whose membership changes: assets list and delist, and the panel says which pair is live at which observation. If you already hold factor series, FactorPrior is the simpler tool.
using PortfolioOptimisers, StableRNGs, Statistics, LinearAlgebra, Dates, PrettyTables, DataFrames, Clarabelnumfmt = (v, i, j) -> begin return isa(v, AbstractFloat) ? round(v; sigdigits = 4) : vend;1. A synthetic Asset Panel, and the model it was drawn from
The generator below draws nine factors — a market factor, four industries and four styles — and gives every asset a fixed trait vector: a market beta, a one-hot industry membership and four style loadings. Returns are that trait vector through the factor returns, plus an idiosyncratic shock and a small per-asset alpha.
The Panel Fields are then built as noisy functions of the same traits. Log market capitalisation tracks the size trait, book-to-price tracks the value trait, and so on. That is what makes the panel an acceptance test rather than a demonstration: a fit that recovers the traits from the fields has recovered something we can name.
A fifth of the assets list late, so the panel's active mask is not all-true and the universe is genuinely point-in-time.
function synthetic_panel(; T = 500, N = 80, seed = 661_001) rng = StableRNG(seed) industries = ["Energy", "Financials", "Health Care", "Technology"] Kind = length(industries) ind = rand(rng, 1:Kind, N) # The traits. `beta` is the market exposure, `Ltrue` the four style loadings. beta = 1.0 .+ 0.35 .* randn(rng, N) Ltrue = randn(rng, N, 4) alpha = 0.0004 .* randn(rng, N) # The factor returns, and the idiosyncratic shocks. onehot = Float64[ind[i] == k for i in 1:N, k in 1:Kind] Btrue = hcat(beta, onehot, Ltrue) ftrue = hcat(0.009 .* randn(rng, T), 0.005 .* randn(rng, T, Kind), 0.004 .* randn(rng, T, 4)) ivol = 0.008 .+ 0.012 .* rand(rng, N) X = ftrue * transpose(Btrue) + randn(rng, T, N) .* transpose(ivol) .+ transpose(alpha) # The Panel Fields, each a noisy function of the traits above. logcap = 20.0 .+ 1.4 .* transpose(view(Ltrue, :, 1)) .+ 0.3 .* cumsum(randn(rng, T, N); dims = 1) ./ sqrt(T) mcap = exp.(logcap) shares = mcap ./ 50.0 fields = ["market_cap" => mcap, "book_equity" => mcap .* exp.(-0.7 .+ 0.5 .* transpose(view(Ltrue, :, 2)) .+ 0.05 .* randn(rng, T, N)), "net_income_ttm" => mcap .* (0.05 .+ 0.02 .* transpose(view(Ltrue, :, 3)) .+ 0.004 .* randn(rng, T, N)), "adj_shares_outstanding" => shares, "adj_volume" => shares .* exp.(-4.5 .+ 0.6 .* transpose(view(Ltrue, :, 4)) .+ 0.15 .* randn(rng, T, N)), # A field no Factor Exposure reads, so a forecast built on it carries a part # the factors do not span. "signal" => transpose(alpha) .+ 0.0002 .* randn(rng, T, N)] # A fifth of the assets list late. A cell before an asset lists is blank. listed = [i <= N ÷ 5 ? rand(rng, 20:120) : 1 for i in 1:N] amsk = [t >= listed[i] for t in 1:T, i in 1:N] for (_, a) in fields a[.!amsk] .= NaN end inputs = [[NumericPanelInput(; name = n, vals = a, alg = ForwardPanelFill(; val = 0.0)) for (n, a) in fields] CategoricalPanelInput(; name = "industry", vals = repeat(reshape(industries[ind], 1, N), T, 1), levels = industries)] days = filter(d -> Dates.dayofweek(d) <= 5, Date(2015, 1, 1):Day(1):(Date(2015, 1, 1) + Day(2 * T + 10)))[1:T] rd = ReturnsResult(; nx = ["A" * lpad(i, 3, '0') for i in 1:N], X = ifelse.(amsk, X, NaN), ts = days, pnl = asset_panel(inputs; amsk = amsk, emsk = amsk)) nf = vcat("market", ["industry=" * l for l in industries], ["size", "value", "earnings_yield", "liquidity"]) return (; rd = rd, B = Btrue, f = ftrue, ivar = ivol .^ 2, nf = nf)endsyn = synthetic_panel()rd = syn.rdT, N = size(rd.X)(500, 80)The panel rides the carrier. rd.X is the returns, rd.pnl is the panel, and the active mask says which pair is live.
pretty_table(DataFrame("Assets" => N, "Observations" => T, "Panel Fields" => length(rd.pnl.pf), "Active cells" => count(rd.pnl.amsk) / (T * N)); formatters = [numfmt], title = "The synthetic Asset Panel") The synthetic Asset Panel
┌────────┬──────────────┬──────────────┬──────────────┐
│ Assets │ Observations │ Panel Fields │ Active cells │
│ Int64 │ Int64 │ Int64 │ Float64 │
├────────┼──────────────┼──────────────┼──────────────┤
│ 80 │ 500 │ 7 │ 0.969 │
└────────┴──────────────┴──────────────┴──────────────┘2. The prior
A CrossSectionalFactorPrior is specified by its Factor Exposures — one per factor, each naming the family it belongs to. Four kinds ship, and three of them appear here:
ConstantExposureis a column of ones, the market intercept. Here we use aCompositeExposureoverEWMarketBetainstead, so the market exposure is the asset's own estimated beta rather than one.OneHotExposureturns a categorical Panel Field into a block of indicator columns, one per level.CompositeExposurescores one or more Descriptors across the cross-section. A Descriptor is the trait itself —LogMarketCap,BookToPrice— and the exposure standardises it.
Three further pieces of the specification are worth naming, because each one changes the answer:
families = ["industry" => nothing]puts the industry block under a zero-sum re-basis. An industry block sums to one for every asset, so it is collinear with a market factor whose exposure is a beta near one. The constraint is what identifies the members.neutralise = ["style" => "industry"]removes the benchmark-weighted overlap of the style family with the industry family, so a style factor return is not an industry bet in disguise.wa = BlendedInverseVarianceWeights(...)makes the regression a two-pass fit: the first pass estimates residual variances, the second re-weights by them.
Finally, rfe supplies an alpha forecast. It scores the signal field, which no exposure reads, and lambda/c split the forecast into the part the factors span and the part they do not. The second part lands in rr.b, and that is the whole reason the orthogonal sets of §4 have anything to bite on.
style(d) = CompositeExposure(; descriptors = [d], family = "style")factors = ["market" => CompositeExposure(; descriptors = [EWMarketBeta()], outlier = nothing, scoring = nothing, family = "market"), "industry" => OneHotExposure(; field = "industry", family = "industry"), "size" => style(LogMarketCap()), "value" => style(BookToPrice()), "earnings_yield" => style(EarningsToPrice()), "liquidity" => style(EWShareTurnover())]forecast = FixedWeightedReturnForecast(; scores = DescriptorScores(; descriptors = [Passthrough(; field = "signal")], outlier = nothing, scoring = nothing), scale = 1.0)pe = CrossSectionalFactorPrior(; factors = factors, families = ["industry" => nothing], neutralise = ["style" => "industry"], wa = BlendedInverseVarianceWeights(; lambda = 0.5), rfe = forecast, lambda = 1.0, c = 1.0)pr = prior(pe, rd)rr = pr.rrpretty_table(DataFrame("Factor" => rr.nf, "Family" => rr.fam); title = "The nine factors the fit produced, and their families")The nine factors the fit produced, and their families
┌──────────────────────┬──────────┐
│ Factor │ Family │
│ String │ String │
├──────────────────────┼──────────┤
│ market │ market │
│ industry=Energy │ industry │
│ industry=Financials │ industry │
│ industry=Health Care │ industry │
│ industry=Technology │ industry │
│ size │ style │
│ value │ style │
│ earnings_yield │ style │
│ liquidity │ style │
└──────────────────────┴──────────┘The result is an ordinary LowOrderPrior over the full asset universe, so every consumer in the library takes it unchanged. What is new is the block on rr: a CrossSectionalFactorModel carrying the exposure history Ms, the realised factor returns, the idiosyncratic returns and variances, the regression and benchmark weights, and the family basis.
The fit keeps the tail of the observation axis — the window left after the Descriptors' warm-up and the exposure lag.
pretty_table(DataFrame("Fit rows" => size(pr.X, 1), "Warm-up rows" => T - size(pr.X, 1), "Factors" => size(rr.Ms, 3), "Investable assets" => count(isfinite, pr.mu)); formatters = [numfmt], title = "What the fit kept") What the fit kept
┌──────────┬──────────────┬─────────┬───────────────────┐
│ Fit rows │ Warm-up rows │ Factors │ Investable assets │
│ Int64 │ Int64 │ Int64 │ Int64 │
├──────────┼──────────────┼─────────┼───────────────────┤
│ 440 │ 60 │ 9 │ 80 │
└──────────┴──────────────┴─────────┴───────────────────┘3. What the fit recovered, and what it makes exact
Two different claims live here, and they need different tests.
The recovery is statistical. The Panel Fields are noisy functions of the traits, so a fitted exposure correlates with the truth rather than equalling it. The one exception is the industry block: a one-hot exposure of a known classification is the classification, so it is recovered exactly.
active = findall(view(rd.pnl.amsk, T, :))loading_corr = [cor(view(rr.M, active, k), view(syn.B, active, k)) for k in eachindex(rr.nf)]industry_k = findall(isequal("industry"), rr.fam)pretty_table(DataFrame("Factor" => rr.nf, "corr(fitted, true) loading" => loading_corr); formatters = [numfmt], title = "The fit recovers the traits it was drawn from")pretty_table(DataFrame("One-hot industry loadings recovered exactly" => rr.M[active, industry_k] == syn.B[active, industry_k])) The fit recovers the traits it was drawn from
┌──────────────────────┬────────────────────────────┐
│ Factor │ corr(fitted, true) loading │
│ String │ Float64 │
├──────────────────────┼────────────────────────────┤
│ market │ 0.6562 │
│ industry=Energy │ 1.0 │
│ industry=Financials │ 1.0 │
│ industry=Health Care │ 1.0 │
│ industry=Technology │ 1.0 │
│ size │ 0.9051 │
│ value │ 0.9201 │
│ earnings_yield │ 0.9011 │
│ liquidity │ 0.7713 │
└──────────────────────┴────────────────────────────┘
┌─────────────────────────────────────────────┐
│ One-hot industry loadings recovered exactly │
│ Bool │
├─────────────────────────────────────────────┤
│ true │
└─────────────────────────────────────────────┘The systematic return of a pair is the quantity the model actually asserts about an asset. A single factor return is identified only up to the basis the family constraint chose, but Ms[t - lag] · f_t is basis-free, and it is comparable with the generator's own.
# The systematic return of every eligible pair, fitted against the generator's own.function systematic_pairs(pr, B, f) rr = pr.rr Tf = size(rr.csr.eps, 1) ftail = view(f, (size(f, 1) - Tf + 1):size(f, 1), :) fitted = Float64[] truth = Float64[] for t in 2:Tf, i in axes(rr.csr.eps, 2) u = dot(view(rr.Ms, t - 1, i, :), view(pr.fpr.X, t, :)) v = dot(view(B, i, :), view(ftail, t, :)) if isfinite(u) && isfinite(v) push!(fitted, u) push!(truth, v) end end return fitted, truthendsys_fit, sys_true = systematic_pairs(pr, syn.B, syn.f)idio_ok = findall(isfinite, rr.esigma)pretty_table(DataFrame("corr(systematic return)" => cor(sys_fit, sys_true), "Pairs" => length(sys_fit), "corr(idio variance)" => cor(rr.esigma[idio_ok], syn.ivar[idio_ok]), "median ratio" => median(rr.esigma[idio_ok] ./ syn.ivar[idio_ok])); formatters = [numfmt], title = "The systematic return and the idiosyncratic level") The systematic return and the idiosyncratic level
┌─────────────────────────┬───────┬─────────────────────┬──────────────┐
│ corr(systematic return) │ Pairs │ corr(idio variance) │ median ratio │
│ Float64 │ Int64 │ Float64 │ Float64 │
├─────────────────────────┼───────┼─────────────────────┼──────────────┤
│ 0.9143 │ 33895 │ 0.9176 │ 1.027 │
└─────────────────────────┴───────┴─────────────────────┴──────────────┘The identities, by contrast, are constructions rather than estimates, and they hold at machine precision. Three of them need only public fields:
- The lagged exposures through the factor returns, plus the idiosyncratic return, reproduce the asset's return exactly. This is the reconciliation the fit is built to satisfy.
- The covariance square root reproduces the covariance.
muis the loadings through the factor mean, plus the orthogonal part of the alpha forecast.
# The reconciliation identity, over every pair whose arithmetic is finite.function reconciliation(pr, X) rr = pr.rr Tf = size(rr.csr.eps, 1) Xtail = view(X, (size(X, 1) - Tf + 1):size(X, 1), :) worst = 0.0 n = 0 for t in 2:Tf, i in axes(rr.csr.eps, 2) v = dot(view(rr.Ms, t - 1, i, :), view(pr.fpr.X, t, :)) + rr.csr.eps[t, i] if isfinite(v) && isfinite(Xtail[t, i]) worst = max(worst, abs(v - Xtail[t, i])) n += 1 end end return worst, nendrecon, recon_pairs = reconciliation(pr, rd.X)inv_i = findall(isfinite, pr.mu)pretty_table(DataFrame("max |Ms*f + eps - X|" => recon, "Pairs" => recon_pairs, "max |chol'chol - S|" => maximum(abs, transpose(pr.chol[:, inv_i]) * pr.chol[:, inv_i] - pr.sigma[inv_i, inv_i]), "max |mu - M*f - b|" => maximum(abs, view(pr.mu, inv_i) - view(rr.M * pr.fpr.mu + rr.b, inv_i))); formatters = [numfmt], title = "Three identities the fit makes exact") Three identities the fit makes exact
┌──────────────────────┬───────┬─────────────────────┬────────────────────┐
│ max |Ms*f + eps - X| │ Pairs │ max |chol'chol - S| │ max |mu - M*f - b| │
│ Float64 │ Int64 │ Float64 │ Float64 │
├──────────────────────┼───────┼─────────────────────┼────────────────────┤
│ 1.388e-17 │ 33895 │ 3.247e-15 │ 4.337e-19 │
└──────────────────────┴───────┴─────────────────────┴────────────────────┘The zero-sum re-basis is exact too. Under the constraint, the benchmark-weighted sum of the industry family's factor returns is zero at every observation, relative to the size of its own terms.
# The benchmark-weighted sum of a family's factor returns, relative to the size of its# own terms. The exposures are read `lag` observations back, because the fit's coefficients# are coordinates in the basis of that observation.function family_zero_sum(pr, family) rr = pr.rr worst = 0.0 for u in axes(pr.fpr.X, 1) t = u - rr.lag if t < 1 continue end total = 0.0 magnitude = 0.0 for k in family c = 0.0 for a in axes(rr.bw, 2) e = rr.Ms[t, a, k] isfinite(e) && (c += rr.bw[t, a] * e) end total += c * pr.fpr.X[u, k] magnitude += abs(c * pr.fpr.X[u, k]) end worst = max(worst, abs(total) / max(magnitude, eps())) end return worstendzero_sum = family_zero_sum(pr, industry_k)pretty_table(DataFrame("max relative benchmark-weighted industry return" => zero_sum); formatters = [numfmt], title = "The zero-sum re-basis") The zero-sum re-basis
┌─────────────────────────────────────────────────┐
│ max relative benchmark-weighted industry return │
│ Float64 │
├─────────────────────────────────────────────────┤
│ 4.192e-16 │
└─────────────────────────────────────────────────┘4. Two orthogonal uncertainty sets
Here is the idea the rest of this page builds to. The factor model splits the asset space in two: the directions the loadings span, where the model has something to say, and the Orthogonal Subspace, where it has nothing. A portfolio that bets in the second half is betting on estimation error.
OrthogonalUncertaintySet reads the factor model off the optimisation's own prior result and confines the uncertainty to that second half. One estimator produces two sets:
- a low-rank norm ball on the mean, whose radius is
sqrt(χ²_r)at the rankrof the complement, and - a compact covariance set,
(κ, C, Q), whose worst-case variance isw'Σw + κ·min_z ‖Cw − Qz‖²— a quadratic term the variance consumer adds directly, with no lifted semidefinite block.Qis an orthonormal basis of the subspace the penalty spares, which is the weighted factor span.
Both are fitted from the prior we already have.
mu_set = mu_ucs(OrthogonalUncertaintySet(), pr)sigma_set = sigma_ucs(OrthogonalUncertaintySet(), pr)pretty_table(DataFrame("Rank of the factor span" => size(sigma_set.Q, 2), "Rank of the Orthogonal Subspace" => size(mu_set.L, 2), "Mean-ball radius" => mu_set.kappa); formatters = [numfmt], title = "The geometry the two sets share") The geometry the two sets share
┌─────────────────────────┬─────────────────────────────────┬──────────────────┐
│ Rank of the factor span │ Rank of the Orthogonal Subspace │ Mean-ball radius │
│ Int64 │ Int64 │ Float64 │
├─────────────────────────┼─────────────────────────────────┼──────────────────┤
│ 8 │ 72 │ 9.634 │
└─────────────────────────┴─────────────────────────────────┴──────────────────┘The natural reading of a book is then: how much of it lies outside the spared subspace? That is ‖(I − QQᵀ)Cw‖ / ‖Cw‖, and it is the number the two sweeps below move.
universe = UniverseSets(; dict = Dict("nx" => rd.nx, "ncf" => rr.nf))solver = Solver(; name = :clarabel, solver = Clarabel.Optimizer, check_sol = (; allow_local = true, allow_almost = true), settings = Dict("verbose" => false))function orthogonal_share(w, set) v = set.C .* w return norm(v - set.Q * (transpose(set.Q) * v)) / norm(v)endfunction book(; radius = 0.0, kappa = 1.0, obj = MinimumRisk(), constraint = nothing, data = rd) u = OrthogonalUncertaintySet(; kappa = kappa, method = radius) return optimise(MeanRisk(; r = UncertaintySetVariance(; ucs = u), obj = obj, opt = JuMPOptimiser(; pe = pe, slv = solver, bgt = 1.0, wb = WeightBounds(; lb = 0.0, ub = 0.1), sets = universe, lcse = constraint, ret = ArithmeticReturn(; ucs = u))), data)endbook (generic function with 1 method)The covariance radius moves the book smoothly
κ scales a quadratic penalty on the orthogonal component, so raising it squeezes the book out of the Orthogonal Subspace gradually. The minimum-risk book below starts with 91% of its metric-scaled weight outside the factor span, and ends with a tenth of a percent of it.
kappa_grid = [0.0, 1.0, 10.0, 100.0, 1_000.0, 10_000.0]kappa_books = [book(; kappa = k) for k in kappa_grid]pretty_table(DataFrame("kappa" => kappa_grid, "Outside the span" => [orthogonal_share(r.w, sigma_set) for r in kappa_books], "Volatility" => [sqrt(dot(r.w, pr.sigma * r.w)) for r in kappa_books], "Expected return" => [dot(r.w, pr.mu) for r in kappa_books], "Names" => [count(>(1e-6), r.w) for r in kappa_books]); formatters = [(v, i, j) -> if j == 2 "$(round(v * 100, digits = 2)) %" elseif j == 3 || j == 4 "$(round(v * 10_000, digits = 2)) bp" else v end], title = "The compact covariance radius") The compact covariance radius
┌─────────┬──────────────────┬────────────┬─────────────────┬───────┐
│ kappa │ Outside the span │ Volatility │ Expected return │ Names │
│ Float64 │ Float64 │ Float64 │ Float64 │ Int64 │
├─────────┼──────────────────┼────────────┼─────────────────┼───────┤
│ 0.0 │ 91.01 % │ 63.02 bp │ 6.73 bp │ 30 │
│ 1.0 │ 87.11 % │ 63.66 bp │ 7.07 bp │ 45 │
│ 10.0 │ 54.78 % │ 74.32 bp │ 7.31 bp │ 69 │
│ 100.0 │ 9.25 % │ 85.44 bp │ 7.89 bp │ 73 │
│ 1000.0 │ 1.26 % │ 87.83 bp │ 7.9 bp │ 77 │
│ 10000.0 │ 0.13 % │ 88.22 bp │ 7.88 bp │ 77 │
└─────────┴──────────────────┴────────────┴─────────────────┴───────┘Calibrating the covariance radius instead of stating it
The sweep above is the honest way to explore κ, and it is also an admission: the numbers in kappa_grid were chosen by hand, and nothing in the data suggested them. κ can instead be sized from the sample, by a rule of AbstractCompactRadiusAlgorithm placed in the same field. The estimator resolves it inside the fit, where the metric, the loadings block and the factor span are all in hand, and the set that comes out carries a plain number.
Two rules ship, and they answer two different questions.
ResidualInflationtreatsκas a confidence level. The penalty lives exactly where the idiosyncratic variance lives, so the question is how far the estimate of that variance can sit from the truth, and a variance has a chi-squared bound. Under this model's default metric the answer is dimensionless — it is the relative inflation itself.VarianceFractiontreatsκas a magnitude with a unit. It sizes the penalty so that a reference portfolio pays a stated fraction of its nominal variance, which is a number a desk can argue about: robustify by ten percent.
calibrated = ["Stated" => 100.0, "ResidualInflation()" => ResidualInflation(), "ResidualInflation(; q = 0.01)" => ResidualInflation(; q = 0.01), "VarianceFraction(; f = 0.1)" => VarianceFraction(; f = 0.1), "VarianceFraction(; f = 0.5)" => VarianceFraction(; f = 0.5)]calibrated_sets = [sigma_ucs(OrthogonalUncertaintySet(; kappa = k), rd, pr) for (_, k) in calibrated]calibrated_books = [book(; kappa = k) for (_, k) in calibrated]pretty_table(DataFrame("kappa" => first.(calibrated), "Resolved" => [s.kappa for s in calibrated_sets], "Outside the span" => [orthogonal_share(r.w, sigma_set) for r in calibrated_books], "Volatility" => [sqrt(dot(r.w, pr.sigma * r.w)) for r in calibrated_books], "Names" => [count(>(1e-6), r.w) for r in calibrated_books]); formatters = [(v, i, j) -> if j == 2 round(v; sigdigits = 4) elseif j == 3 "$(round(v * 100, digits = 2)) %" elseif j == 4 "$(round(v * 10_000, digits = 2)) bp" else v end], title = "A radius the sample chose") A radius the sample chose
┌───────────────────────────────┬──────────┬──────────────────┬────────────┬───────┐
│ kappa │ Resolved │ Outside the span │ Volatility │ Names │
│ String │ Float64 │ Float64 │ Float64 │ Int64 │
├───────────────────────────────┼──────────┼──────────────────┼────────────┼───────┤
│ Stated │ 100.0 │ 9.25 % │ 85.44 bp │ 73 │
│ ResidualInflation() │ 0.1296 │ 90.38 % │ 63.04 bp │ 30 │
│ ResidualInflation(; q = 0.01) │ 0.1889 │ 90.14 % │ 63.06 bp │ 30 │
│ VarianceFraction(; f = 0.1) │ 11.33 │ 50.84 % │ 75.34 bp │ 69 │
│ VarianceFraction(; f = 0.5) │ 56.65 │ 14.78 % │ 84.04 bp │ 73 │
└───────────────────────────────┴──────────┴──────────────────┴────────────┴───────┘The two rules land in different places, and the gap between them is the whole reading. ResidualInflation returns about 0.13 here — three orders of magnitude below the 100.0 the sweep above needed to move the book — and that is the point rather than a defect: a chi-squared bound on a residual variance is a statement about estimation error, and over this sample that error is small. A radius that size barely moves the book, and the table says so: 90% of the metric-scaled weight still sits outside the factor span. VarianceFraction is the rule to reach for when you want the book to move, because it is sized against the nominal variance rather than against the sampling error, and it is linear in f — the f = 0.5 row is exactly five times the f = 0.1 row.
Neither answer is more correct than the other. They price different things, and stating 100.0 prices a third thing that nothing in the sample asked for. What the rules buy is that the number now moves with the data instead of holding still across every fold.
VarianceFraction reads a reference portfolio, and w0 admits a weight vector or any non-finite-allocation optimiser — the optimiser carries its own solver, so nothing extra is threaded into the fit. nothing reads the equal-weight book.
Two notes on where each rule applies. ResidualInflation reads the idiosyncratic variances off rr.esigma, so it refuses a block fitted without a residual term; VarianceFraction reads none and serves that block too. And ResidualInflation's own q defaults to the estimator's, so one confidence level governs both axes unless you state otherwise — the two are tail probabilities over different errors, but they tighten in the same direction.
vf_book = book(; kappa = VarianceFraction(; f = 0.1, w0 = InverseVolatility()))pretty_table(DataFrame("Reference" => ["Equal weight (default)", "InverseVolatility()"], "Outside the span" => [orthogonal_share(calibrated_books[4].w, sigma_set), orthogonal_share(vf_book.w, sigma_set)]); formatters = [(v, i, j) -> j == 2 ? "$(round(v * 100, digits = 2)) %" : v], title = "The fraction is measured at a portfolio you choose")[ Info: 16 asset(s) left the investable universe and are excluded from this optimisation: ["A001", "A002", "A003", "A004", "A005", "A006", "A007", "A008", "A009", "A010", "A011", "A012", "A013", "A014", "A015", "A016"]. A constraint, bound or rate stated for one of them is dropped, and a forced-liquidation carrier is priced over them.
The fraction is measured at a portfolio you choose
┌────────────────────────┬──────────────────┐
│ Reference │ Outside the span │
│ String │ Float64 │
├────────────────────────┼──────────────────┤
│ Equal weight (default) │ 50.84 % │
│ InverseVolatility() │ 63.79 % │
└────────────────────────┴──────────────────┘The radius is also searchable
Nothing above had to be chosen in advance. kappa is a plain field, so its lens path "ucs.kappa" is a key a search grid ranges over, and the grid may hold rules beside numbers: each candidate is fitted per fold, and the walk-forward score decides. That is the third route, after stating a size and calibrating one.
grid = ["r.ucs.kappa" => [0.0, 1.0, 100.0, ResidualInflation(), VarianceFraction(; f = 0.1)]]search_cross_validation(mr, GridSearchCrossValidation(grid; cv = IndexWalkForward(252, 63)), rd)The mean radius is a threshold, not a dial
The mean set behaves differently, and the difference is worth understanding. Its penalty is a norm, −κ‖Lᵀw‖, and a norm is not differentiable at zero. So any strictly positive radius drives the orthogonal component to exactly zero, and raising it further changes nothing. The maximum-return book below pays for that with 5 bp of expected return and goes from 10 names to 73.
radius_grid = [0.0, 0.5, 1.0, 2.0, 4.0, mu_set.kappa]radius_books = [book(; radius = rad, obj = MaximumReturn()) for rad in radius_grid]pretty_table(DataFrame("Radius" => radius_grid, "Outside the span" => [orthogonal_share(r.w, sigma_set) for r in radius_books], "Volatility" => [sqrt(dot(r.w, pr.sigma * r.w)) for r in radius_books], "Expected return" => [dot(r.w, pr.mu) for r in radius_books], "Names" => [count(>(1e-6), r.w) for r in radius_books]); formatters = [(v, i, j) -> if j == 1 round(v; digits = 3) elseif j == 2 "$(round(v * 100, digits = 4)) %" elseif j == 3 || j == 4 "$(round(v * 10_000, digits = 2)) bp" else v end], title = "The mean norm-ball radius") The mean norm-ball radius
┌─────────┬──────────────────┬────────────┬─────────────────┬───────┐
│ Radius │ Outside the span │ Volatility │ Expected return │ Names │
│ Float64 │ Float64 │ Float64 │ Float64 │ Int64 │
├─────────┼──────────────────┼────────────┼─────────────────┼───────┤
│ 0.0 │ 68.2963 % │ 114.16 bp │ 21.85 bp │ 10 │
│ 0.5 │ 0.0 % │ 104.53 bp │ 16.86 bp │ 73 │
│ 1.0 │ 0.0 % │ 104.53 bp │ 16.86 bp │ 73 │
│ 2.0 │ 0.0 % │ 104.53 bp │ 16.86 bp │ 73 │
│ 4.0 │ 0.0 % │ 104.53 bp │ 16.86 bp │ 73 │
│ 9.634 │ 0.0 % │ 104.53 bp │ 16.86 bp │ 73 │
└─────────┴──────────────────┴────────────┴─────────────────┴───────┘MaximumRatio solves a homogenised problem in a scaled variable k, and a mean uncertainty set wide enough that no feasible portfolio's worst case beats rf leaves nothing to pin that scale: the objective is then non-positive along every ray and its supremum sits at the origin. MaximumRatio writes a floor k >= kmin for exactly this, so the constraints stay meaningful and the recovered weights keep the mandate. A k that comes back on the floor is the signal that there was no tangency portfolio to find, and that the weights beside it maximise the return expression at that scale rather than the ratio. The books on this page use MinimumRisk and MaximumReturn, whose scale is fixed at one, so the question does not arise for them.
5. A walk-forward, under a factor mandate
Nothing above is worth much if it only holds on the sample it was fitted on. A WalkForward refits everything per fold: the prior refits on the fold's own rows, the two uncertainty sets refit against that fold's factor model, and a factor-exposure constraint written in a factor name is re-based through the loadings the fold actually fitted.
The mandate below is one line of the constraint grammar — "size >= 0.10" — wrapped in an ExposureConstraintEstimator that declares the space the name lives in.
mandate = ExposureConstraintEstimator(; lce = LinearConstraintEstimator(; val = "size >= 0.10"), space = FactorSpace())ucs_wf = OrthogonalUncertaintySet(; kappa = 100.0)strategy = MeanRisk(; r = UncertaintySetVariance(; ucs = ucs_wf), obj = MinimumRisk(), opt = JuMPOptimiser(; pe = pe, slv = solver, bgt = 1.0, wb = WeightBounds(; lb = 0.0, ub = 0.1), sets = universe, lcse = mandate, ret = ArithmeticReturn(; ucs = ucs_wf)))walk = IndexWalkForward(252, 63)folds = cross_val_predict(strategy, rd, walk)size_k = findfirst(isequal("size"), rr.nf)fold_priors = [p.res.pa.pr for p in folds.pred]fold_sets = [sigma_ucs(OrthogonalUncertaintySet(), prf) for prf in fold_priors]pretty_table(DataFrame("Fold" => eachindex(folds.pred), "Fit rows" => [size(prf.X, 1) for prf in fold_priors], "Size exposure" => [(transpose(fold_priors[i].rr.M) * folds.pred[i].res.w)[size_k] for i in eachindex(folds.pred)], "norm(M_fold - M_full)" => [norm(prf.rr.M - rr.M) for prf in fold_priors], "Outside the span" => [orthogonal_share(folds.pred[i].res.w, fold_sets[i]) for i in eachindex(folds.pred)], "Names" => [count(>(1e-6), p.res.w) for p in folds.pred]); formatters = [numfmt], title = "Every fold refits the prior, both sets and the mandate") Every fold refits the prior, both sets and the mandate
┌───────┬──────────┬───────────────┬───────────────────────┬──────────────────┬───────┐
│ Fold │ Fit rows │ Size exposure │ norm(M_fold - M_full) │ Outside the span │ Names │
│ Int64 │ Int64 │ Float64 │ Float64 │ Float64 │ Int64 │
├───────┼──────────┼───────────────┼───────────────────────┼──────────────────┼───────┤
│ 1 │ 192 │ 0.1 │ 3.166 │ 0.4567 │ 36 │
│ 2 │ 192 │ 0.1 │ 3.285 │ 0.4558 │ 37 │
│ 3 │ 192 │ 0.1 │ 2.958 │ 0.486 │ 36 │
└───────┴──────────┴───────────────┴───────────────────────┴──────────────────┴───────┘Three things to read off that table. The fold loadings differ from the full-sample loadings, so the prior really did refit. The share outside the span differs per fold, so the sets really were rebuilt against each fold's own factor model. And the size exposure is 0.1 in every fold: the mandate binds exactly, in a basis that was refitted underneath it.
6. Factor attribution
The last question is where the book's risk and return actually came from. factor_attribution answers it twice. The predicted decomposition reads the prior's own moments; the realised one reads a return series and decomposes what happened.
final = book(; kappa = 100.0, constraint = mandate)predicted = factor_attribution(final.w, final.pa.pr; assets = true)FactorAttributionResult
sys ┼ AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}: AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}(0.011571203031764734, 0.011283297416685963, 0.950856640707536, 0.0008345601428510188, 0.9751187828708542, nothing)
idio ┼ AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}: AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}(0.002630591497692542, 0.0005831574553970429, 0.04914335930048097, 1.201450125063083e-5, 0.22168301536311022, nothing)
unattr ┼ AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}: AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}(NaN, -9.513287236119869e-14, -8.016958172214579e-12, -1.2197274440461925e-19, NaN, nothing)
total ┼ AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}: AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}(0.011866454871987875, 0.011866454871987875, 1.0, 0.0008465746441016495, 1.0, nothing)
fbd ┼ AttributionBreakdown{Nothing, Vector{Float64}, Nothing, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Nothing}: AttributionBreakdown{Nothing, Vector{Float64}, Nothing, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Nothing}(nothing, [0.965370166158213, 0.16160567201896045, 0.2823080083693165, 0.29602198299276894, 0.26006433661895423, 0.10000000062250858, -0.024719284600920495, -0.1252882977669791, -0.06321055699422713], nothing, [0.011568616066409361, 0.005779158951923919, 0.007286003867658532, 0.007215822381138328, 0.006072551219825041, 0.005397313044511197, 0.005064768982871288, 0.004876334181782589, 0.004778195687916952], [0.9497907050884282, -0.20992874709316622, 0.17363329400196206, 0.157840274706571, 0.08121054552234286, -0.0757771197194631, -0.005890032563587463, -0.11534602396888632, -0.0637011976958861], [0.010607259568631995, -0.00019606187560077754, 0.0003571458433523009, 0.00033715346398648804, 0.000128252079229346, -4.089928392833603e-5, 7.374171511798856e-7, 7.047037754896503e-5, 1.9239826314799032e-5], [0.8938861423281226, -0.01652236305752985, 0.030097097002019072, 0.028412315862117964, 0.010807952384506995, -0.003446630385363322, 6.214300388236787e-5, 0.005938620953703573, 0.0016213626160764196], [0.0005270168198895986, -0.0002894456780756307, 0.0012611529834744262, 0.00025155990654982874, -0.0001543831017766371, -0.0003020780536781022, 0.0003343477558909972, -2.7014688981367712e-5, -0.0002737928608175427], [0.0005087663149849949, -4.6776063318395985e-5, 0.0003560335870136868, 7.446726237835594e-5, -4.014953894871762e-5, -3.0207805555856403e-5, -8.264837333548651e-6, 3.3846243971799276e-6, 1.730659923331978e-5], nothing)
fmbd ┼ AttributionBreakdown{Vector{String}, Vector{Float64}, Nothing, Nothing, Nothing, Vector{Float64}, Vector{Float64}, Nothing, Vector{Float64}, Nothing}: AttributionBreakdown{Vector{String}, Vector{Float64}, Nothing, Nothing, Nothing, Vector{Float64}, Vector{Float64}, Nothing, Vector{Float64}, Nothing}(["industry", "market", "style"], [1.0, 0.965370166158213, -0.11321813873961815], nothing, nothing, nothing, [0.0006264895109673573, 0.010607259568631995, 4.9548337086607915e-5], [0.052795002191114174, 0.8938861423281226, 0.004175496188299039], nothing, [0.0003435752471249291, 0.0005087663149849949, -1.7781419258905345e-5], nothing)
abd ┼ AssetAttributionBreakdown{Vector{Float64}, Nothing, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}}: AssetAttributionBreakdown{Vector{Float64}, Nothing, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}}([0.0004073180647816746, 1.6303646140641137e-9, 1.7733028316245267e-9, 2.03893859856591e-9, 0.09999999462491459, 4.4225195431233376e-10, 0.02736921908869657, 0.009380611377433781, 5.101623080086385e-10, 5.870226864639259e-10, 6.884242136668462e-10, 4.6471587587015316e-10, 7.942925791528923e-10, 2.4929547510948786e-10, 0.030720261188890912, 0.04976928615978285, 2.7002680129891904e-10, 5.002354885254673e-10, 2.600118400092024e-10, 0.0019370953119838784, 0.006846916585970778, 4.683432093925005e-10, 0.004859707956203854, 1.0583928350329508e-9, 0.01862176225684324, 2.426249505732324e-10, 6.981153731911741e-10, 1.2818909108819883e-9, 1.5394660408239114e-9, 7.736031625275514e-10, 0.08398584883247308, 0.05342459156509504, 0.012175555845087139, 0.005982408452075028, 4.524743801599888e-10, 1.2166848488221391e-9, 0.01936255502618818, 6.568511783988342e-10, 0.07636950784376033, 7.259894562347738e-10, 5.38878995651582e-10, 3.73671957950972e-10, 9.969904378592729e-10, 1.5976590573742384e-9, 1.0562468780037103e-9, 0.007996652703299833, 0.041617471931250635, 0.06652113509967741, 0.011523346286144934, 0.0023821084440777862, 9.484803746675298e-10, 5.113930976694372e-10, 1.7780243697866057e-9, 0.014791914944627007, 5.399680160280366e-10, 1.3675232896054584e-9, 0.02795389242618819, 0.004909946794681775, 1.7019765633495783e-9, 0.012556693097072467, 0.00913518579591105, 1.9995942605163548e-9, 8.580566501600635e-10, 5.605993105924318e-10, 8.090994256690887e-10, 0.008704170101875118, 0.0001896861329522505, 0.001276059143711772, 0.024403374842061155, 3.918983702308924e-10, 0.09999999574381281, 3.362138188650075e-9, 0.06140977008830333, 0.036141090649244506, 7.183371204330788e-10, 0.04895626849115072, 7.976522162729464e-10, 5.653112447331344e-10, 0.0066767092317149765, 0.011641847075079963], nothing, [4.049412869276871e-6, 2.1274838904045938e-12, 8.8716969106538e-12, 1.9292319274581467e-11, 0.001279163097994001, 1.7048059872063402e-12, 0.0001642571481286407, 5.717903893394984e-5, -1.1088296757429726e-13, 3.853693543931508e-12, 1.1809682231777471e-12, 5.96330859522057e-13, 2.9249998110244625e-12, 6.043664014061176e-13, 0.00023897324040067296, 0.0005302565967755079, 1.0716322760991262e-12, 1.9256533162298057e-12, 6.799014455603477e-13, 1.732393674155589e-5, 5.605612628217582e-5, 3.031326993970771e-12, 2.2793002042831338e-5, 8.139511611662918e-12, 0.00021364988382934806, 2.859005591755819e-13, 5.790254773491111e-12, 1.711620529441767e-11, 7.576053556244077e-12, 4.1461983281494135e-12, 0.0015162208482345323, 0.00035056126157664315, 0.00011077191734173046, 5.285861882369428e-5, 1.8425458480359223e-12, 9.068286065594492e-12, 0.00016290976545269538, 4.83662532769894e-12, 0.0010212746538600238, 4.921244404970906e-12, 2.5033104106325388e-12, 2.0164384507095046e-12, 2.5465184272387977e-12, 7.656391832078952e-12, 7.68358582817313e-12, 6.56166060096115e-5, 0.00040855171157246257, 0.00047576653648606887, 8.60036018794668e-5, 1.2648438754126516e-5, 4.761588471552533e-12, 4.173635667706648e-12, 5.322215371395378e-12, 0.0001535054125164007, 2.121429241918085e-12, 1.9795149210739128e-11, 0.0002217085661156477, 4.405555678367199e-5, 6.7648866808562985e-12, 8.796850867679198e-5, 0.00012244536104020755, 1.675800209167888e-11, 7.628468144651655e-12, 2.7728073623099274e-13, 3.6103267467336037e-12, 5.548162057027193e-5, 1.2596200092976118e-6, 1.2255075447603799e-5, 0.0002898993670183549, 3.4200027504953987e-12, 0.0016205364217556962, 3.10284558668302e-11, 0.000976023379987011, 0.000174704492732308, 4.413007574760868e-12, 0.0005118858896019602, 5.365969725858623e-12, 4.343548208099992e-12, 4.8446767296159176e-5, 0.00011623567947822647], [3.0640813235808826e-7, 7.932791351472123e-13, 2.638058271743842e-12, 1.566125099844446e-12, 0.00012042119718212289, 4.621079757008095e-13, 4.3812024825926186e-5, -1.30500199449253e-7, 5.418454277313702e-14, 4.80167799699931e-13, 9.327549891615151e-13, 3.94086490381875e-13, -6.825150827873641e-15, 1.6953947572795138e-13, 1.5605216818753487e-5, 5.3459702160573924e-5, 3.5955924789369336e-14, 8.351007767404822e-13, 1.507335696604831e-13, 4.6524637403450896e-7, 5.752559951937505e-6, 3.810068845247489e-13, 3.018988427492534e-6, 3.060193814392081e-13, 4.025749356846449e-5, 2.0539955158799657e-13, 8.597123131379508e-13, 8.005877035538089e-13, -6.136506223356632e-14, 1.6543736339907406e-12, 4.720097442565912e-5, 4.065126030669028e-5, 1.0643442597828716e-5, 4.5360594297043195e-6, 1.0461568406204959e-12, 1.5155641105196733e-12, 2.8947050183370835e-5, 2.616932932565518e-13, 1.6795157935628582e-5, 6.142442057697703e-13, 1.5746218391878335e-13, 6.145202627665707e-13, 1.7071257336258838e-12, 1.0795096646947797e-12, 1.3142121778950147e-13, 4.9237997878038234e-8, 9.649942900510764e-6, 4.100673189398461e-5, 1.0128069673910264e-5, 3.9859198016230343e-7, 5.883321765605425e-13, 8.145367472995329e-13, 5.0497749836303607e-14, 3.1994412404929917e-6, 7.934671026728288e-14, 9.265696242296062e-13, 3.1739925125806604e-5, 2.06813106094069e-6, 2.951897687204062e-12, 2.3815294371231094e-5, 2.669181757880125e-6, 2.6043412039602965e-12, 5.04999628015896e-13, -2.336550019135571e-13, 3.1270174908821535e-13, 6.220895081705023e-6, 1.069175814338446e-7, 6.040615631733362e-7, 1.535673944036858e-5, 2.123806537426626e-13, 1.437190601903434e-5, 1.7549408985829398e-12, 0.00015989962986784286, 5.427869192460088e-5, 2.6201236952871665e-13, 1.907136381064777e-5, 2.123438439844859e-13, 1.2507425379654044e-12, 4.364429171023022e-7, 7.746632450526583e-6], [9.91522112381967e-10, 6.725171488595971e-20, 6.182419335182594e-20, 5.411465078968391e-20, 8.328176403796634e-5, 2.7956183848013055e-21, 7.08058925480333e-6, 2.2109330350047522e-6, 2.6871073881241703e-21, 2.4344244353841646e-21, 5.108670371054675e-21, 5.59619525011514e-21, 6.386772882653408e-21, 4.288949432233778e-22, 1.6641181625721433e-5, 1.735895188953056e-5, 1.7661617251812607e-21, 3.0969142027015876e-21, 1.449483081841144e-21, 1.3667490489108636e-7, 1.0078843064341096e-6, 1.580526484022245e-21, 6.23047562126515e-7, 1.555736846051151e-20, 9.495580695798965e-6, 1.5022865991584588e-21, 9.026453576787926e-21, 4.7462507540741265e-20, 3.6152798517480383e-20, 1.9331779340712817e-20, 6.0429434158308385e-5, 2.6615665344943303e-5, 2.4680037156525376e-6, 1.2348293367057548e-6, 1.9433056975217608e-21, 3.652530497937105e-20, 1.321726711990176e-5, 4.934678224967087e-21, 6.21097781285227e-5, 5.59184243208326e-21, 2.9560489709406664e-21, 1.8117389816736577e-21, 9.200004462322204e-21, 1.4025263248277653e-20, 7.264377650451282e-21, 1.5871609018248637e-6, 1.3865861226797617e-5, 4.0418203992975464e-5, 2.402887903451538e-6, 1.7702474182746116e-7, 8.889853594927715e-21, 6.889958626133302e-21, 2.4501500878400286e-20, 5.544940866565694e-6, 4.368214587461586e-21, 6.176253015824459e-20, 1.1421796741577175e-5, 4.685833929318609e-7, 2.2186024747034914e-20, 2.2411926539349077e-6, 2.3217340461358393e-6, 5.061422052957015e-20, 1.7488487488666837e-20, 2.5703465830813025e-21, 1.241868623086662e-20, 9.865813713444122e-7, 8.884316517684359e-10, 3.744102943478372e-8, 4.093569152282087e-6, 3.637301276808713e-21, 8.763720704121147e-5, 6.536902114943908e-20, 4.627886181135102e-5, 1.183914713400652e-5, 3.891477019290623e-21, 4.4040238636402785e-5, 1.768955413022446e-20, 2.544223518476076e-21, 1.0482520141341969e-6, 2.8333056687770145e-6], [2.982723676354336e-7, 3.64252465311055e-14, 1.0633404649315813e-12, 1.0594582170845352e-12, 5.765970186424498e-5, -2.336406869918911e-14, 2.3861725112229264e-5, 7.351763430680092e-6, 2.1996377654070791e-13, -1.0264824897810735e-13, -9.319219340903817e-14, 1.1406263660261847e-13, -1.7359538021852352e-13, -6.2666123142094e-15, 1.5808428778246986e-5, -1.3278840480952106e-5, -1.5525969334384753e-14, -1.7801399948172955e-13, 9.172780483817628e-14, -5.351690893432467e-7, -2.341781036582703e-6, -1.7366481817952196e-13, -6.031090125735243e-7, -7.188013642875857e-13, -1.5992609120985966e-5, -4.480017115762009e-14, -1.5824544031677637e-13, 2.850789372807094e-13, -1.7231659202183794e-12, -5.609193724836208e-13, -1.1279145428593103e-5, 6.320023343348931e-6, -3.802663259468371e-6, -3.94346893341878e-6, -5.309241314416643e-14, -2.6803182901121953e-13, -1.660979573714989e-5, 1.895610543981472e-13, 3.989923081945426e-5, 6.878502931641225e-13, -2.3655329882491114e-14, 1.6073929448402263e-13, 1.1673732326547168e-12, 7.644455581786413e-14, -4.924895947379788e-13, 7.659259915916639e-7, -1.4142009211478745e-5, -5.485800695575947e-6, 4.876337164483964e-6, -9.414459403527743e-7, 1.67711501427298e-14, -5.973935715457651e-14, -5.445649682974194e-13, 8.857985900052272e-7, 3.566810577325823e-13, 1.5518340384346596e-13, 8.167530803679809e-6, -2.502888446605202e-6, -1.0911448719178489e-13, -7.748474766107781e-6, 8.071899313117888e-6, -6.657486588903121e-14, -2.568105749023923e-13, 8.510980299360448e-14, 5.909596347132172e-14, 9.806071149643349e-7, 1.3819658717596877e-8, 2.0353827870517238e-7, -2.0395180363248144e-5, -3.2103943875959896e-14, -2.285928383196783e-5, 7.597475015757716e-13, -4.000080734433466e-5, -2.0531815944626672e-6, -3.240680414735721e-13, 1.5505111598559646e-5, -1.1049836456597326e-13, 4.139928028030753e-13, 2.2780807751381e-6, 3.5823598533690478e-6], [0.01588899390512044, 0.019831472166960358, 0.018895667912873008, 0.01819397501885181, 0.01816994042739327, 0.01827535527006379, 0.014497273987568426, 0.020663590628489624, 0.014292017559516857, 0.015185289847286476, 0.015625862771049878, 0.022503847556130566, 0.016494585127793934, 0.01750094733459056, 0.018866838111110937, 0.01792245571557558, 0.022719718231082424, 0.01998590106432276, 0.022499052465606562, 0.025112853548898747, 0.02341641225690982, 0.01625521985763355, 0.02112333109440602, 0.019355473027847583, 0.023045765132956166, 0.022784395788346654, 0.021367483560186144, 0.02486322347591656, 0.0166020312086135, 0.02403604171149569, 0.02283428332674836, 0.01580164894305334, 0.019843278730835575, 0.02299143167271629, 0.019071543293849715, 0.023880494092415435, 0.023946166459572055, 0.017453579492356493, 0.019174020756004714, 0.017988485891822004, 0.01793942912950479, 0.021429736416767924, 0.015388454538598384, 0.012801392011298374, 0.015765256349481796, 0.021591935578917757, 0.01753128107761776, 0.014979554653930176, 0.018809546423182687, 0.02320355139614899, 0.017835864904675057, 0.025299546412479182, 0.013515145959083881, 0.021760966738915814, 0.016918003779347643, 0.02630613992085666, 0.018186523085219546, 0.020456228088298386, 0.01399355977664961, 0.016961741075935868, 0.024536566942521407, 0.017871295211982555, 0.021316833808337737, 0.014408122458818081, 0.020223951257070227, 0.016255596137447686, 0.021048534331325985, 0.022204803980219588, 0.017081927843724344, 0.023942188992851145, 0.023110548487149617, 0.019257786868620265, 0.023072480671689415, 0.014039470484410194, 0.016112373573755605, 0.022273921647934285, 0.023367844535623652, 0.017550826256748073, 0.02032201183876144, 0.02056914869466881], [0.6258472021708977, 0.06580010679665314, 0.26476559140503475, 0.5200591002531931, 0.7498345636898757, 0.2109304958484824, 0.4318215128300044, 0.3063911288353524, -0.01520767840914067, 0.43231390476618137, 0.10978375237923738, 0.05702207300283474, 0.22325641239581248, 0.13852378804233836, 0.44102308894037234, 0.6139271545749686, 0.17467710010071036, 0.19261046090009062, 0.1162220716369908, 0.3589321818827691, 0.3559154978201949, 0.39817657958338754, 0.2281082811008485, 0.39732662406285685, 0.519967446724536, 0.05171803681449129, 0.3881656438224423, 0.5370305428655632, 0.296422863987235, 0.2229815287866604, 0.8221326036643172, 0.44678799781451256, 0.46870256276619815, 0.3932806593013779, 0.213519956231641, 0.31210721289989046, 0.3798633167625745, 0.4218819595227797, 0.7398597571254004, 0.3768339401278553, 0.2589493535584093, 0.25181270233703157, 0.16598193601144304, 0.37435432005276065, 0.461421123194021, 0.38921879713092467, 0.5789654245113708, 0.5180200966286714, 0.40787511669869103, 0.23203691344030028, 0.28146819980095467, 0.3225870574170984, 0.2214797361632832, 0.49411956716375277, 0.23222629756044458, 0.5502587078092711, 0.45857130131199947, 0.44329537261222834, 0.28403950344728246, 0.42355277940667263, 0.5566329117628478, 0.4689476147329626, 0.41706013274665954, 0.03432888929735387, 0.2206371339900449, 0.39909261236774557, 0.3157099833518955, 0.433833467057893, 0.7052614111658345, 0.36449295929601105, 0.7391316144875533, 0.4792236347620288, 0.7215186326426674, 0.36764483077125726, 0.3812824724416614, 0.509814391053736, 0.28788297938019897, 0.437783566592174, 0.36478110512390727, 0.4972335727897217], [4.050404391389253e-6, 2.127483957656309e-12, 8.871696972477993e-12, 1.9292319328696117e-11, 0.0013624448620319675, 1.7048059900019586e-12, 0.00017133773738344402, 5.938997196895459e-5, -1.1088296488718985e-13, 3.853693546365932e-12, 1.1809682282864172e-12, 5.963308651182524e-13, 2.9249998174112355e-12, 6.043664018350127e-13, 0.0002556144220263944, 0.0005476155486650385, 1.071632277865288e-12, 1.9256533193267194e-12, 6.799014470098308e-13, 1.7460611646446974e-5, 5.706401058860993e-5, 3.0313269955512975e-12, 2.3416049604957854e-5, 8.139511627220287e-12, 0.00022314546452514698, 2.859005606778685e-13, 5.790254782517565e-12, 1.711620534188018e-11, 7.576053592396877e-12, 4.146198347481193e-12, 0.0015766502823928409, 0.0003771769269215865, 0.00011323992105738302, 5.4093448160400025e-5, 1.8425458499792277e-12, 9.068286102119797e-12, 0.00017612703257259712, 4.8366253326336176e-12, 0.0010833844319885464, 4.9212444105627485e-12, 2.503310413588588e-12, 2.016438452521244e-12, 2.5465184364388022e-12, 7.656391846104214e-12, 7.683585835437506e-12, 6.720376691143637e-5, 0.0004224175727992602, 0.0005161847404790443, 8.840648978291833e-5, 1.2825463495953977e-5, 4.7615884804423864e-12, 4.173635674596607e-12, 5.322215395896879e-12, 0.00015905035338296635, 2.1214292462862993e-12, 1.9795149272501657e-11, 0.00023313036285722486, 4.452414017660385e-5, 6.764886703042323e-12, 9.020970133072688e-5, 0.0001247670950863434, 1.67580021422931e-11, 7.628468162140142e-12, 2.7728073880133926e-13, 3.61032675915229e-12, 5.6468201941616345e-5, 1.26050844094938e-6, 1.2292516477038583e-5, 0.00029399293617063697, 3.4200027541327e-12, 0.0017081736287969077, 3.102845593219922e-11, 0.0010223022417983618, 0.00018654363986631453, 4.413007578652345e-12, 0.0005559261282383631, 5.365969743548177e-12, 4.343548210644216e-12, 4.9495019310293375e-5, 0.00011906898514700349], [0.000341332304810824, 1.7928555584688386e-10, 7.476282569801575e-10, 1.6257862636159217e-9, 0.11481481847187357, 1.4366599025513073e-10, 0.014438831077334341, 0.005004862244843776, -9.34423684945213e-12, 3.247552523427209e-10, 9.95215707661964e-11, 5.025349791081746e-11, 2.4649314803497317e-10, 5.0930661967264443e-11, 0.021540925641557993, 0.04614820134341451, 9.030770263113701e-11, 1.6227705242215554e-10, 5.7296088372173905e-11, 0.0014714261196631477, 0.004808850764967392, 2.5545346341872433e-10, 0.0019732978263149277, 6.859261434882744e-10, 0.018804728702243447, 2.409317388909214e-11, 4.879515276450529e-10, 1.442402598461394e-9, 6.384428773483999e-10, 3.494049732805009e-10, 0.1328661592195243, 0.031785139790313936, 0.009542860296439405, 0.004558518002549675, 1.5527348899533324e-10, 7.641950523510206e-10, 0.014842430571944882, 4.075880610350633e-10, 0.09129807037365469, 4.147190094810801e-10, 2.109568898709537e-10, 1.6992762154106175e-10, 2.1459808037952015e-10, 6.45213075741602e-10, 6.475047449576107e-10, 0.005663339863203673, 0.03559762181343859, 0.04349949045839777, 0.007450118062776438, 0.0010808167758872915, 4.0126461793426285e-10, 3.5171714885537986e-10, 4.4850930234105366e-10, 0.013403358888459848, 1.787753182539948e-10, 1.6681603297738378e-9, 0.01964616773688288, 0.0037521012515463383, 5.700848969654461e-10, 0.007602076804225431, 0.010514268703862887, 1.4122163968155548e-9, 6.42859914307517e-10, 2.3366771440381254e-11, 3.042464491796012e-10, 0.004758641274987359, 0.00010622451730928962, 0.0010359047086637876, 0.02477512781552315, 2.882076231719389e-10, 0.14394978510635448, 2.6148041910516546e-9, 0.08615060292451988, 0.015720250224578205, 3.718892985528268e-10, 0.046848543582354185, 4.5219653227815855e-10, 3.660358765529593e-10, 0.004171003037068134, 0.010034082329683777], [0.0014845413259970065, 0.0005089072557886673, 0.0020872908285408664, 0.0012877206399328008, 0.0017808090861836882, 0.0009920677630104132, 0.0024726226100511787, 0.0007698073121974203, 0.0005373747041092711, 0.000643108962271807, 0.0012195428038194664, 0.0010934619481914926, -0.00022714618741473636, 0.0006549371316989781, 0.0010225709151314216, 0.0008073425355272794, 7.565899146569776e-5, 0.0013135549003043191, 0.0009325012833649351, -3.6096682943869345e-5, 0.0004981481623923143, 0.0004427139375292224, 0.0004971244026783383, -0.0003900082929374011, 0.0013030391062243058, 0.0006619244230691854, 0.0010048007818746064, 0.0008469259214011742, -0.0011591882738101046, 0.0014134562970690766, 0.00042771287659090567, 0.0008792071642289897, 0.0005618453420441264, 9.905550599441208e-5, 0.0021947417821207805, 0.0010253536753713813, 0.0006371707881286637, 0.0006869963280795111, 0.000742369439790949, 0.0017935446413877606, 0.00024830593716962477, 0.002074706278474105, 0.0028831760638072857, 0.000723529976672533, -0.00034184089389299857, 0.000101938150838203, -0.00010793702987025699, 0.00053397963136352, 0.001302087645880671, -0.00022788801304998198, 0.0006379713728029205, 0.0014759631946242163, -0.00027787426699917093, 0.00027618059228917723, 0.0008075066579077258, 0.0007910307899656807, 0.001427617139003501, -8.854625189328347e-5, 0.0016702833994479524, 0.0012795422712743704, 0.0011757922948656139, 0.0012691406392694579, 0.00028924553299272964, -0.00026497570744953757, 0.00045952042575246816, 0.0008273623001827544, 0.0006365106308632194, 0.0006328859017689262, -0.0002064649236217694, 0.0004600088276980845, -8.48737817417219e-5, 0.0007479432013377114, 0.0019524388766006017, 0.0014450452211582589, -8.638795097689315e-5, 0.0007062726893790408, 0.0001276815601345517, 0.002944812006268067, 0.0004065661088468803, 0.00097312670668437], [6.046804999935218e-7, 8.297043816783178e-13, 3.701398736675423e-12, 2.625583316928981e-12, 0.00017808089904636787, 4.3874390700162035e-13, 6.767374993815545e-5, 7.221263231230839e-6, 2.7414831931384495e-13, 3.775195507218237e-13, 8.395627957524769e-13, 5.081491269844934e-13, -1.8042053104639715e-13, 1.6327286341374199e-13, 3.141364559700047e-5, 4.018086167962182e-5, 2.0429955454984583e-14, 6.570867772587527e-13, 2.424613744986594e-13, -6.992271530873777e-8, 3.410778915354802e-6, 2.0734206634522694e-13, 2.4158794149190097e-6, -4.1278198284837756e-13, 2.4264884447478526e-5, 1.6059938043037649e-13, 7.014668728211744e-13, 1.0856666408345184e-12, -1.7845309824519458e-12, 1.09345426150712e-12, 3.592182899706602e-5, 4.697128365003921e-5, 6.840779338360345e-6, 5.925904962855393e-7, 9.930644274763295e-13, 1.2475322815084537e-12, 1.2337254446220943e-5, 4.5125434765469897e-13, 5.669438875508284e-5, 1.3020944989338928e-12, 1.3380685403629223e-13, 7.752595572505933e-13, 2.874498966280601e-12, 1.1559542205126439e-12, -3.610683769484773e-13, 8.151639894697022e-7, -4.492066310967981e-6, 3.552093119840866e-5, 1.5004406838394229e-5, -5.428539601904708e-7, 6.051033267032723e-13, 7.547973901449563e-13, -4.940672184611158e-13, 4.085239830498219e-6, 4.360277679998652e-13, 1.0817530280730721e-12, 3.9907455929486415e-5, -4.347573856645121e-7, 2.842783200012277e-12, 1.606681960512331e-5, 1.0741081070998013e-5, 2.5377663380712655e-12, 2.481890531135037e-13, -1.4854519891995265e-13, 3.717977125595371e-13, 7.201502196669358e-6, 1.2073724015144147e-7, 8.075998418785085e-7, -5.038440922879566e-6, 1.802767098667027e-13, -8.48737781293349e-6, 2.514688400158711e-12, 0.00011989882252350819, 5.222551033013821e-5, -6.205567194485543e-14, 3.457647540920742e-5, 1.0184547941851264e-13, 1.6647353407684798e-12, 2.7145236922404023e-6, 1.132899230389563e-5])
afc ┼ AssetFactorContribution{Matrix{Float64}, Matrix{Float64}}: AssetFactorContribution{Matrix{Float64}, Matrix{Float64}}([3.675517945754524e-6 -0.0 0.0 0.0 2.0087102059081736e-7 8.527188997411525e-8 -3.4801999247555164e-9 -1.0507619274858753e-8 1.0173983215702953e-7; -1.6769398447263043e-13 -0.0 0.0 1.8568995168380352e-12 0.0 4.463856794110458e-13 4.319166088855102e-14 -6.949234674195784e-13 6.436244851591705e-13; 6.637223764094241e-12 -0.0 2.243392736103479e-12 0.0 0.0 5.862608412082034e-13 2.463491929518067e-14 -5.683419356112007e-13 -5.147341443610153e-14; 1.866601642192496e-11 -0.0 0.0 0.0 1.005513166806079e-12 4.014993391052563e-13 -8.989596438024057e-14 -3.5575946118223286e-13 -3.3505422769235545e-13; 0.001149886585560317 -0.0 0.0001265092783652765 0.0 0.0 -1.239175432638897e-5 2.749762055737421e-6 3.762614620889283e-5 -2.521691986983346e-5; 9.700853129855458e-13 -0.0 0.0 5.037017077033759e-13 0.0 2.751699172006282e-13 4.379719675192146e-15 -2.2763564467567704e-13 1.7910497431727566e-13; 0.00011275371553868735 -0.0 3.4624603424423546e-5 0.0 0.0 3.3983751424865914e-6 5.203210277067597e-8 1.1883669121757318e-5 1.5447527985152037e-6; 4.482086346864889e-5 -0.0 0.0 1.0684022815596495e-5 0.0 1.1547444733497482e-6 5.042337912290133e-7 -1.700025411473391e-7 1.8517692627302285e-7; -2.0209375513827645e-13 -6.189348289536518e-13 0.0 0.0 0.0 2.6747096800085843e-13 1.4062903893396109e-14 2.5125298758971287e-13 1.7735875703366346e-13; 3.1191270360228515e-12 -0.0 0.0 0.0 2.894932887476423e-13 2.8577452422575525e-13 -1.1782078052333608e-14 8.904815401167935e-14 8.203261897591252e-14; 2.2173036308020956e-13 -0.0 8.7092055161448e-13 0.0 0.0 3.1837967779161927e-13 7.741136705485392e-15 -1.4025963414157032e-13 -9.754387187247661e-14; 4.2458028809032317e-14 -0.0 0.0 5.292869324605675e-13 0.0 2.5680277085118543e-13 8.140271617400661e-15 -4.614435608431594e-13 2.2108641662703023e-13; 1.70570078089546e-12 -0.0 0.0 9.046574574385614e-13 0.0 3.625501673987134e-13 4.3345692485975134e-14 -1.37056002119881e-14 -7.754868698225843e-14; 4.0724905621061256e-13 -3.0244816173914115e-13 0.0 0.0 0.0 2.3778400928668127e-13 8.2942924280393e-15 1.0395534616620123e-13 1.495318590537247e-13; 0.00028262946366588835 -3.72701771688624e-5 0.0 0.0 0.0 -2.799800776403406e-6 -6.837679506188549e-7 -9.343880031715857e-6 6.441402662385101e-6; 0.0004885920912880123 -0.0 0.0 5.668459841820416e-5 0.0 4.097332875834928e-6 -1.8568519702002193e-6 -1.0797116052914425e-5 -6.463457783428879e-6; 7.484960509009722e-13 -0.0 0.0 0.0 1.3316512046393288e-13 2.2703664877543932e-13 9.69428804631994e-15 -2.908880074024386e-14 -1.7671031347293883e-14; 1.109462122054586e-12 -0.0 0.0 5.697419024770679e-13 0.0 2.7706948218276635e-13 -1.844292724689209e-14 -3.0024447494966734e-13 2.880672117119448e-13; 8.283555269376372e-14 -0.0 0.0 0.0 1.2822619025340759e-13 2.261638616671693e-13 -2.2479708368447275e-15 2.6500484327041215e-13 -2.0081031487560145e-14; 1.6485400580167634e-5 -0.0 0.0 0.0 9.552886207206478e-7 2.975542562728737e-7 4.6588424080877256e-8 -8.110061072525518e-7 3.501109675664101e-7; 5.510198944146298e-5 -0.0 8.661985228773164e-6 0.0 0.0 1.3046288050404515e-6 4.675567945781244e-8 -2.564961547981235e-6 -6.494271324577346e-6; 2.0962351210120794e-12 -0.0 0.0 5.334182744971607e-13 0.0 3.073426668678741e-13 1.5269729913268927e-14 -4.1890969099070366e-14 1.2095217077945913e-13; 1.9694063269598214e-5 -5.895854055503454e-6 0.0 0.0 0.0 7.895998517353357e-7 -7.901188040036366e-8 6.388258142359428e-6 1.8959467150421766e-6; 7.959359699304061e-12 -0.0 0.0 0.0 5.219519273544442e-13 3.584855599750802e-13 2.01674944254777e-14 -8.185366460941972e-13 9.80835766980511e-14; 0.00018552805206576087 -0.0 2.3558258316306324e-5 0.0 0.0 7.175089485062034e-7 -3.132395011356051e-7 -1.0791491510446398e-7 4.267218915014664e-6; 3.8937648578285344e-14 -2.9435540400681466e-13 0.0 0.0 0.0 2.3237786474627604e-13 4.691618410504997e-15 1.397176533367442e-13 1.6453117811058612e-13; 5.4258792137424e-12 -8.469616675183257e-13 0.0 0.0 0.0 3.7159400682744904e-13 -3.338452504255464e-14 7.427995174053605e-13 1.3032822807678192e-13; 1.5215455526070394e-11 -0.0 0.0 0.0 6.321711650402162e-13 5.421164425186947e-13 1.5419918520005573e-14 7.028596082203116e-13 8.182634048050192e-15; 8.079502590079067e-12 -1.8676980555003467e-12 0.0 0.0 0.0 5.216034500675983e-13 4.796332477103316e-14 6.645023461278698e-13 1.3017990069885682e-13; 2.6590756690714378e-12 -0.0 9.786798309294394e-13 0.0 0.0 3.7120707419842984e-13 -4.7933857956898955e-15 -1.1221572318385187e-13 2.542448629296492e-13; 0.0014837724441437764 -0.0 0.0 0.0 4.141805784923285e-5 -6.647169912408216e-6 1.3631917128036531e-6 -1.4683222391074999e-5 1.0997546832202908e-5; 0.00023626227669860017 -0.0 0.0 6.084779895780612e-5 0.0 -8.694828627894435e-7 5.515699917896298e-7 3.013840934548522e-5 2.3630689445751496e-5; 0.00010859013058338818 -0.0 0.0 1.3867317513484586e-5 0.0 1.49482853491347e-6 -2.0519295748782298e-7 -1.2495420089416962e-5 -4.797462431509294e-7; 4.4280921114567165e-5 -0.0 0.0 6.813648473695989e-6 0.0 9.77721642951734e-7 6.446320120061815e-8 -3.033053514847594e-7 1.0251697427635313e-6; 4.551388123050063e-13 -0.0 5.724221038963367e-13 0.0 0.0 3.022064652821422e-13 -1.0143466365254396e-14 4.1525320311639736e-13 1.0766872980129398e-13; 7.477270995660091e-12 -0.0 0.0 0.0 6.000144566416071e-13 3.882297461506178e-13 -9.346728927363577e-14 7.232338851562032e-13 -2.6995728740393983e-14; 0.00014428995847890394 -0.0 2.4495429953360528e-5 0.0 0.0 -2.0856363969923972e-6 2.885964125441405e-7 -7.106266077417934e-6 3.027683082297128e-6; 3.736170456621127e-12 -0.0 0.0 0.0 3.2392957246317304e-13 3.2194736656881823e-13 4.910233108012224e-15 4.736877021799188e-13 -2.4020003242108954e-14; 0.001012468413836671 -0.0 0.0 0.0 3.7662019706435424e-5 -1.58098779481599e-5 6.949759208629343e-7 -1.3916399756356268e-5 1.755221005706675e-7; 3.609595196813788e-12 -0.0 0.0 8.268637940757257e-13 0.0 3.7011122999546557e-13 2.837916799999549e-14 -2.6490943002182067e-13 3.5120444610775217e-13; 3.42118817835415e-12 -6.537742474590654e-13 0.0 0.0 0.0 2.7657962821390915e-13 -2.4786563742380954e-15 -4.714212961571259e-13 -6.678319594509088e-14; 1.5131440052996545e-12 -4.5334315324456467e-13 0.0 0.0 0.0 2.757851458794362e-13 -2.2216567315816887e-14 5.10885486823254e-13 1.9218353326754207e-13; 5.556085648884067e-13 -0.0 1.2612854761017484e-12 0.0 0.0 3.969502188538519e-13 5.1189795827137204e-15 1.2605439011390514e-13 2.0150079769817255e-13; 6.862758050050942e-12 -1.9382984981035344e-12 0.0 0.0 0.0 5.430466172686768e-13 -1.7098241893121573e-14 1.6022121334655689e-12 6.037717712904192e-13; 7.330650359315063e-12 -1.2814509627767037e-12 0.0 0.0 0.0 4.75686717368298e-13 3.691490463955405e-14 1.0113196934218302e-12 1.1046511620508891e-13; 6.893240264755676e-5 -9.701631805058464e-6 0.0 0.0 0.0 1.3170718545044264e-6 8.298055706787423e-8 6.42401953719986e-6 -1.4382367816589465e-6; 0.0003494081109520993 -0.0 0.0 0.0 2.0523872580316054e-5 2.2172151595290468e-6 1.0742733791170395e-6 2.5907297731674785e-5 9.420941769726422e-6; 0.00035956635467874153 -0.0 0.0 7.576407299358323e-5 0.0 -5.1870614040812915e-6 1.1082833022869447e-6 1.9686666818379286e-5 2.48282200971592e-5; 7.854456228072879e-5 -0.0 0.0 1.312448514063397e-5 0.0 1.2573912429445713e-6 -2.6872047856784874e-7 -6.467469836292054e-6 -1.866464699805824e-7; 1.0780182718696659e-5 -0.0 0.0 2.71309618762978e-6 0.0 4.2032974459627147e-7 1.3289617252890822e-7 -2.0186967648572985e-6 6.206306955321955e-7; 3.1407515446641846e-12 -0.0 0.0 1.0802692442276196e-12 0.0 4.025770580977678e-13 4.7617944716814284e-14 -4.159194742439415e-13 5.062921540900875e-13; 3.725356660330788e-12 -0.0 0.0 0.0 2.5219616396591746e-13 2.6776954899641057e-13 -3.556102458203576e-14 -1.7729689401844703e-13 1.4117121301401506e-13; 3.2611450480377338e-12 -0.0 0.0 2.025076209764428e-12 0.0 5.309159342679779e-13 6.577409388199651e-14 -3.478751615184854e-13 -2.1282075303827198e-13; 0.00015361943617501076 -0.0 0.0 0.0 7.294709732583088e-6 -1.2121162967946735e-7 -3.623325682046303e-7 -4.377916348453609e-7 -6.487397558463665e-6; 1.4360223922298294e-12 -0.0 0.0 0.0 2.662880334661513e-13 2.66998598678563e-13 5.717562530796216e-15 2.0080301345265318e-13 -5.440035843990787e-14; 1.8426790771758868e-11 -0.0 0.0 0.0 6.744012176626618e-13 5.637286499664662e-13 1.715562295303475e-14 8.447375959154477e-14 2.859918880655507e-14; 0.00017056045352379281 -0.0 0.0 3.183801273172751e-5 0.0 9.749950831851888e-7 -6.473171012368685e-7 1.0009628629497642e-5 8.972793248681452e-6; 3.8071108679483194e-5 -0.0 0.0 0.0 2.4213657801379035e-6 7.926402954032889e-7 8.736766490334387e-8 1.1974424884072303e-6 1.4856318753370356e-6; 4.196012485975431e-12 -0.0 2.153158383973787e-12 0.0 0.0 5.507544880368861e-13 -3.366364436942696e-14 1.041721012310756e-13 -2.0554713399145313e-13; 6.886284508270369e-5 -0.0 1.5885382677501755e-5 0.0 0.0 2.0582401691856285e-6 -1.7840864075179546e-7 5.764012876927298e-8 1.2828092593834385e-6; 0.0001297740266256771 -1.108291335775495e-5 0.0 0.0 0.0 1.7703331601058404e-6 2.490592839894194e-7 1.1601206928092544e-6 5.747346353808717e-7; 1.3971836175659874e-11 -0.0 0.0 2.277432657820745e-12 0.0 6.7465488583597e-13 -4.8246937683076834e-14 -5.848486405227599e-13 4.671739505681321e-13; 7.623259007419178e-12 -1.0410042797406538e-12 0.0 0.0 0.0 4.2142333271933766e-13 2.21549657732353e-14 2.552156448766804e-13 3.4741947360387457e-13; 7.927903888966962e-13 -6.801255854581608e-13 0.0 0.0 0.0 2.7031036089250857e-13 1.6516958831242887e-14 1.645970851541384e-14 -1.3867109544670814e-13; 3.130616832030647e-12 -9.816088071808623e-13 0.0 0.0 0.0 3.7387971767014243e-13 3.4859801340592545e-14 5.11481718843034e-13 5.41097484030051e-13; 5.42333086980234e-5 -1.0560000118817762e-5 0.0 0.0 0.0 1.5402589119603685e-6 -8.257371872671668e-9 5.09092521948246e-6 5.185385231496119e-6; 1.5300391388356237e-6 -2.3012941648306335e-7 0.0 0.0 0.0 3.705461059632886e-8 -5.847395777384952e-9 -7.028008336763767e-8 -1.2168445062549356e-9; 9.429809417598346e-6 -0.0 0.0 1.4533642272255338e-6 0.0 4.001495829405521e-7 5.857696518019885e-8 7.395037316707739e-7 1.7367152298839473e-7; 0.0002593131492354751 -0.0 0.0 0.0 1.2034651134396828e-5 4.002808644968373e-6 -3.7947226661277864e-7 1.6384453592041922e-5 -1.4562233219145854e-6; 2.5089263136055998e-12 -0.0 0.0 0.0 1.9326671808271598e-13 2.828831298850285e-13 6.9124556490934524e-15 4.2739541894588677e-13 6.18714327073545e-16; 0.0018020618806244841 -0.00012132115463930875 0.0 0.0 0.0 -1.5761745300398532e-5 6.79315297009777e-7 -1.9642664934205996e-5 -2.547920929188404e-5; 3.557593651860207e-11 -4.07898504464865e-12 0.0 0.0 0.0 9.614532401998472e-13 7.947033133943742e-14 -3.0065576350032776e-12 1.4971384563407727e-12; 0.0009134804283378977 -0.0 7.768906116034137e-5 0.0 0.0 -3.6303604853829607e-6 -3.1230616241851253e-6 -1.6284846592256495e-5 7.892159190596587e-6; 0.00010934430569945409 -0.0 4.572183543128736e-5 0.0 0.0 2.38722278391885e-6 2.90394897588141e-7 1.2108575524324072e-5 4.8521583957354735e-6; 3.0183758708911895e-12 -0.0 0.0 8.181481862109128e-13 0.0 3.7484494717402577e-13 3.1660062401863834e-14 1.6251652464578955e-13 7.461983437087276e-15; 0.00048622080850247974 -0.0 0.0 5.575861406903426e-5 0.0 -1.08963827728266e-5 -9.936743662128097e-7 3.8517541583283964e-6 -2.2055229988842815e-5; 3.716799429377091e-12 -0.0 0.0 0.0 3.9336633607241543e-13 3.5434141351389885e-13 9.424509111621123e-15 9.410264890498778e-13 -4.898845126627924e-14; 3.1947594794446362e-12 -0.0 7.151712146707141e-13 0.0 0.0 3.4442171377201177e-13 -4.4873352935596466e-15 5.148962423931161e-15 8.853417308225833e-14; 4.310851640778296e-5 -0.0 0.0 7.604420532370584e-6 0.0 1.1170190552882543e-6 2.2836762146654334e-7 -1.9640193813594614e-6 -1.6475369393896995e-6; 0.00011158573402932193 -0.0 0.0 0.0 5.7412373909489925e-6 6.908863024076038e-7 -5.07631260920097e-7 1.0116366886053993e-6 -2.28618367213737e-6], [1.7629244470010799e-7 -0.0 0.0 0.0 -6.288302625065213e-8 6.298097238650732e-8 3.900544789378798e-8 -5.046708388819653e-10 9.15169644672191e-8; -8.043269797751763e-15 -0.0 0.0 4.1013436995611606e-13 -0.0 3.2969603649284054e-13 -4.840842809778774e-13 -3.33765051899558e-14 5.789527846638407e-13; 3.183476235629223e-13 -0.0 2.23640615670692e-12 0.0 -0.0 4.3300644400672564e-13 -2.76103695681605e-13 -2.729691606765608e-14 -4.630134078346492e-14; 8.952963137166758e-13 -0.0 0.0 0.0 -3.1477766517871467e-13 2.965434306318886e-13 1.0075376214892654e-12 -1.7086784457885384e-14 -3.013878163567839e-13; 5.51531295148319e-5 -0.0 0.0001261152915686376 0.0 -0.0 -9.152426869952041e-6 -3.0818833085549244e-5 1.8071475825709983e-6 -2.2683111528416337e-5; 4.652914607352948e-14 -0.0 0.0 1.1125286029828981e-13 -0.0 2.0323777228429002e-13 -4.908710168198347e-14 -1.0933120886172873e-14 1.6110841961285657e-13; 5.40811620421981e-6 -0.0 3.45167723090749e-5 0.0 -0.0 2.5100061822590276e-6 -5.831663459875505e-7 5.707611884095022e-7 1.3895352879504963e-6; 2.1497866997452e-6 -0.0 0.0 2.3597857214875022e-6 -0.0 8.528828176740202e-7 -5.65136063884379e-6 -8.16505840273193e-9 1.665702588905458e-7; -9.693219480292322e-15 -1.4766427517018915e-13 0.0 0.0 -0.0 1.9755140474742635e-13 -1.5761446954451738e-13 1.2067439131706158e-14 1.5953766308900337e-13; 1.4960572594831644e-13 -0.0 0.0 0.0 -9.06263831495552e-14 2.110702298787216e-13 1.3205138827854144e-13 4.276897117265296e-15 7.378994162664149e-14; 1.0635069219782655e-14 -0.0 8.682082509619789e-13 0.0 -0.0 2.351520729927052e-13 -8.676125249491571e-14 -6.736535210489471e-15 -8.774261630754643e-14; 2.0364557611635785e-15 -0.0 0.0 1.1690388230611754e-13 -0.0 1.8967198011755914e-13 -9.123468400629543e-14 -2.216269003051872e-14 1.9887154623384892e-13; 8.181218675269306e-14 -0.0 0.0 1.9981216698492403e-13 -0.0 2.6777595862591166e-13 -4.858106391116691e-13 -6.58266784838172e-16 -6.97565572948951e-14; 1.9533282868094456e-14 -7.215749783425222e-14 0.0 0.0 -0.0 1.756249114143416e-13 -9.296092124375713e-14 4.99287520642178e-15 1.3450682531710288e-13; 1.3556032055697513e-5 -8.89184683047901e-6 0.0 0.0 -0.0 -2.0679050908794436e-6 7.663546849590702e-6 -4.4877756327746986e-7 5.794167398101193e-6; 2.3434818032597006e-5 -0.0 0.0 1.2519956975406659e-5 -0.0 3.0262494333082323e-6 2.0811259219600782e-5 -5.1857509045535e-7 -5.814006409883405e-6; 3.590084461813743e-14 -0.0 0.0 0.0 -4.1687575147350784e-14 1.676870175105963e-13 -1.0865181754886327e-13 -1.3971070979678739e-15 -1.5895437545182464e-14; 5.321421162562741e-14 -0.0 0.0 1.258391927463745e-13 -0.0 2.0464077214418218e-13 2.0670497479770732e-13 -1.4420453109209235e-14 2.5912207853580024e-13; 3.973122239638638e-15 -0.0 0.0 0.0 -4.014143435927137e-14 1.6704238560690634e-13 2.51948483532772e-14 1.2727927522179891e-14 -1.8063279702247607e-14; 7.907053136538895e-7 -0.0 0.0 0.0 -2.990547827010537e-7 2.197706231619622e-7 -5.221545851472923e-7 -3.895184263716524e-8 3.1493164770416847e-7; 2.642910351640497e-6 -0.0 8.635009279997578e-6 0.0 -0.0 9.635858988212517e-7 -5.240291529971436e-7 -1.231926340552603e-7 -5.84172379146942e-6; 1.0054376542394584e-13 -0.0 0.0 1.178163739880243e-13 -0.0 2.2700024616643237e-13 -1.7114035611792264e-13 -2.0119829205641368e-15 1.087988379848332e-13; 9.446055252937538e-7 -1.406621464632962e-6 0.0 0.0 -0.0 5.831906208907671e-7 8.855507874775596e-7 3.068218890850911e-7 1.7054410693783241e-6; 3.8176251628932814e-13 -0.0 0.0 0.0 -1.6339796877055552e-13 2.6477387988709696e-13 -2.2603361012844434e-13 -3.93135271686499e-14 8.822809133043278e-14; 8.898662540037649e-6 -0.0 2.348489102776932e-5 0.0 -0.0 5.299449946126279e-7 3.5107313671582534e-6 -5.183049490949318e-9 3.838446688377595e-6; 1.867604337687557e-15 -7.022674333673563e-14 0.0 0.0 -0.0 1.716319866636402e-13 -5.258280598961413e-14 6.710504394157558e-15 1.4799900551886103e-13; 2.602467258643149e-13 -2.0206647756834135e-13 0.0 0.0 -0.0 2.7445564875007924e-13 3.741676858112405e-13 3.567594578412448e-14 1.1723278449653298e-13; 7.297937029568959e-13 -0.0 0.0 0.0 -1.9790229496124004e-13 4.0040182886653267e-13 -1.7282364271092448e-13 3.3757670393093147e-14 7.360439009451681e-15; 3.875250466974652e-13 -4.455917920606836e-13 0.0 0.0 -0.0 3.852511360471368e-13 -5.375642220614064e-13 3.191540801842519e-14 1.1709936112549637e-13; 1.2753983445643257e-13 -0.0 9.75631936446873e-13 0.0 -0.0 2.741698641470748e-13 5.37233963367033e-14 -5.389613162940013e-15 2.28698215766597e-13; 7.11676219290131e-5 -0.0 0.0 0.0 -1.296599584810095e-5 -4.909533784567063e-6 -1.527840482518883e-5 -7.052210370168638e-7 9.892507991519739e-6; 1.1332077536914122e-5 -0.0 0.0 1.3439485261578077e-5 -0.0 -6.421914207425946e-7 -6.181896166795314e-6 1.447518788898882e-6 2.1256266306837108e-5; 5.208414126493835e-6 -0.0 0.0 3.0628816905823417e-6 -0.0 1.104065533302087e-6 2.299765353861326e-6 -6.001429984998566e-7 -4.3154110791101724e-7; 2.123888919077812e-6 -0.0 0.0 1.5049341111468998e-6 -0.0 7.221355104844753e-7 -7.22491836636115e-7 -1.4567464062715624e-8 9.221601896939623e-7; 2.183026585187348e-14 -0.0 5.706394144845115e-13 0.0 -0.0 2.2320669860532265e-13 1.1368612646588562e-13 1.9944211612862463e-14 9.685012360004001e-14; 3.5863962656820223e-13 -0.0 0.0 0.0 -1.8783558084580063e-13 2.867426408556802e-13 1.0475643814607923e-12 3.473622730155023e-14 -2.428318482075088e-14; 6.920719719326849e-6 -0.0 2.441914403896497e-5 0.0 -0.0 -1.5404303618360802e-6 -3.234536111489458e-6 -3.413071190340755e-7 2.723460017438627e-6; 1.7920158011331526e-13 -0.0 0.0 0.0 -1.0140672232685123e-13 2.3778713254666397e-13 -5.503299976491382e-14 2.2750764352415467e-14 -2.1606461664077845e-14; 4.856200799211883e-5 -0.0 0.0 0.0 -1.1790161502074937e-5 -1.1677019083186339e-5 -7.78916374195394e-6 -6.683912840334142e-7 1.5788555475838352e-7; 1.7313052772850467e-13 -0.0 0.0 1.8262983976658068e-13 -0.0 2.7336048448505767e-13 -3.180685542858983e-13 -1.272334491569715e-14 3.1591525299122274e-13; 1.6409377852115193e-13 -1.55976196297087e-13 0.0 0.0 -0.0 2.0427897086013204e-13 2.778032990697835e-14 -2.2641911052838202e-14 -6.007278801955376e-14; 7.257639870476232e-14 -1.0815773324696765e-13 0.0 0.0 -0.0 2.036921740859055e-13 2.489992464662227e-13 2.4537338141343978e-14 1.728728386153039e-13; 2.6649194384599408e-14 -0.0 1.2573574652016966e-12 0.0 -0.0 2.9318349552286774e-13 -5.73725922935106e-14 6.0542710141536e-15 1.812538997960774e-13; 3.2916514403807754e-13 -4.624355091953594e-13 0.0 0.0 -0.0 4.010888467133404e-13 1.9163398587924154e-13 7.695270644204049e-14 5.43104490817439e-13; 3.516071182778789e-13 -3.057260938190519e-13 0.0 0.0 -0.0 3.5133749258161593e-13 -4.137355383465302e-13 4.857271135415285e-14 9.93655277414359e-14; 3.3062719217101568e-6 -2.3145965640419456e-6 0.0 0.0 -0.0 9.727762117711867e-7 -9.300309938762629e-7 3.0853947445448985e-7 -1.293722052139587e-6; 1.6759001312710794e-5 -0.0 0.0 0.0 -6.425034404848604e-6 1.6376131311225016e-6 -1.2040260680074828e-5 1.2443025710583625e-6 8.474320970542537e-6; 1.7246231043828777e-5 -0.0 0.0 1.6734050529263383e-5 -0.0 -3.8311121186211426e-6 -1.2421437714370827e-5 9.455316564231699e-7 2.233346849746125e-5; 3.767309289936562e-6 -0.0 0.0 2.898811914883936e-6 -0.0 9.286967038606421e-7 3.011770257856183e-6 -3.1062635049357485e-7 -1.6789214213348428e-7; 5.17060396341707e-7 -0.0 0.0 5.992429775837659e-7 -0.0 3.10451381406949e-7 -1.4894761349735787e-6 -9.69560623695644e-8 5.582694221730249e-7; 1.506429233039225e-13 -0.0 0.0 2.3859963441571033e-13 -0.0 2.973394231931933e-13 -5.336932652199442e-13 -1.9976211973749635e-14 4.554196728414102e-13; 1.7868290747651996e-13 -0.0 0.0 0.0 -7.895045264537044e-14 1.977719337100389e-13 3.985614968604859e-13 -8.51539914941002e-15 1.2698626104726855e-13; 1.564174740880506e-13 -0.0 0.0 4.472796443068367e-13 -0.0 3.921292445357833e-13 -7.371840834274954e-13 -1.6708109134653926e-14 -1.914364205322177e-13; 7.368198538664833e-6 -0.0 0.0 0.0 -2.2836217103677104e-6 -8.952570775766124e-8 4.060957535455646e-6 -2.1026710792762832e-8 -5.835540704709352e-6; 6.887733971281818e-14 -0.0 0.0 0.0 -8.336193717458519e-14 1.9720251744995054e-13 -6.40814011252854e-14 9.644375438273508e-15 -4.893418403388872e-14; 8.838221010138193e-13 -0.0 0.0 0.0 -2.1112248720108107e-13 4.1636439098275583e-13 -1.9227710236419203e-13 4.057193356689394e-15 2.5725528441614913e-14; 8.18075704285427e-6 -0.0 0.0 7.032078566435867e-6 -0.0 7.201217004772258e-7 7.255012358184071e-6 4.807528275631604e-7 8.071202630292007e-6; 1.8260416410976874e-6 -0.0 0.0 0.0 -7.580128157212296e-7 5.85436262435152e-7 -9.792009007151238e-7 5.7512010030978995e-8 1.3363548638132248e-6; 2.0125743094227574e-13 -0.0 2.1464528206718716e-12 0.0 -0.0 4.067818036321881e-13 3.77296004469897e-13 5.003285743534006e-15 -1.8489365825570437e-13; 3.3029356645250985e-6 -0.0 1.5835910961945675e-5 0.0 -0.0 1.5201957796365265e-6 1.9995716025235413e-6 2.7683998990003874e-9 1.153911962701251e-6; 6.224477951153358e-6 -2.6441400470443438e-6 0.0 0.0 -0.0 1.3075505175901437e-6 -2.7914111643445005e-6 5.571948011527504e-8 5.169850204101915e-7; 6.701447776092538e-13 -0.0 0.0 5.030177453130682e-13 -0.0 4.98293408861416e-13 5.407429040055197e-13 -2.8089717214803234e-14 4.2023208538584254e-13; 3.6564179166976155e-13 -2.483607889328838e-13 0.0 0.0 -0.0 3.112590947507245e-13 -2.483088275790055e-13 1.2257761746649066e-14 3.125105963606502e-13; 3.802537706414514e-14 -1.622630475831575e-13 0.0 0.0 -0.0 1.9964855218203522e-13 -1.8511907102611185e-13 7.9054395548017145e-16 -1.2473735650594833e-13; 1.5015682221752646e-13 -2.341903318933927e-13 0.0 0.0 -0.0 2.7614385211358987e-13 -3.9070231428552283e-13 2.4565974591306587e-14 4.86727746344708e-13; 2.6012449716355487e-6 -2.519384417222875e-6 0.0 0.0 -0.0 1.137619959305403e-6 9.254712237307788e-8 2.4451223764348873e-7 4.66435520797038e-6; 7.338675643897801e-8 -5.4903831373908377e-8 0.0 0.0 -0.0 2.7368167956270086e-8 6.55365485433045e-8 -3.375484750832575e-9 -1.0945753799670423e-9; 4.522911273511003e-7 -0.0 0.0 3.210053189441879e-7 -0.0 2.9554651411269856e-7 -6.565199737118514e-7 3.551765236789568e-8 1.5622092410930507e-7; 1.2437688972355517e-5 -0.0 0.0 0.0 -3.767468701935353e-6 2.9564347736839474e-6 4.253056158416577e-6 7.869295339528351e-7 -1.3099012961049482e-6; 1.2033807477633279e-13 -0.0 0.0 0.0 -6.050248597745407e-14 2.0893467468946648e-13 -7.747354590779035e-14 2.0527390550760995e-14 5.565456113467427e-16; 8.643404796951628e-5 -2.894456657562808e-5 0.0 0.0 -0.0 -1.164146878682879e-5 -7.6136423176405216e-6 -9.434182882836092e-7 -2.2919045982100928e-5; 1.7063632701357184e-12 -9.731563677977937e-13 0.0 0.0 -0.0 7.101198295279468e-13 -8.906890222349081e-13 -1.4440206902381112e-13 1.3467052579757875e-12; 4.381415089631156e-5 -0.0 7.744711476134232e-5 0.0 -0.0 -2.681348256176538e-6 3.500270676541645e-5 -7.821455056372581e-7 7.099151206586308e-6; 5.244587361642047e-6 -0.0 4.55794442983144e-5 0.0 -0.0 1.7631790767165319e-6 -3.2546932048140443e-6 5.815632264244181e-7 4.364611166317528e-6; 1.447732997516328e-13 -0.0 0.0 1.807048188874184e-13 -0.0 2.768567610540294e-13 -3.548402221222185e-13 7.805512236383794e-15 6.7121997214707425e-15; 2.3321081888329318e-5 -0.0 0.0 1.23154343266622e-5 -0.0 -8.047960268460398e-6 1.1136921600108746e-5 1.849960444324169e-7 -1.9839109780424515e-5; 1.7827246867933409e-13 -0.0 0.0 0.0 -1.2314402328722643e-13 2.617130544038512e-13 -1.0562818430716796e-13 4.5196596414113637e-14 -4.4066067918418596e-14; 1.5323335844698783e-13 -0.0 7.12943962886834e-13 0.0 -0.0 2.5438646253734184e-13 5.0293237963101344e-14 2.472997087051374e-16 7.963821642243433e-14; 2.0676557309973028e-6 -0.0 0.0 1.6795923503905984e-6 -0.0 8.250191979756453e-7 -2.5595027734986542e-6 -9.432996027394051e-8 -1.4819916284886494e-6; 5.352095170262299e-6 -0.0 0.0 0.0 -1.7973044618601149e-6 5.10281772191961e-7 5.689438861322804e-6 4.8587936327672404e-8 -2.056466827718038e-6])
realised ┼ Bool: false
ppy ┴ Int64: 1
The realised call needs returns. Our panel lists a fifth of its assets late, so a held asset can carry a non-finite return at an observation before it listed. strict = false warns and zeroes those pairs rather than refusing; strict = true would refuse. The warning is the point — it names the assets and counts the pairs, so an understated total is never silent.
realised = factor_attribution(final.w, final.pa.pr, rd.X; assets = true, strict = false)FactorAttributionResult
sys ┼ AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}: AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}(0.011138081925313875, 0.011045432289245838, 0.9435416616697946, 0.0008087615612460133, 0.9916817243139979, nothing)
idio ┼ AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}: AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}(0.0011047397682685163, 0.00028943341131339466, 0.024724472044366112, 3.905887589376415e-6, 0.2619923891823232, nothing)
unattr ┼ AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}: AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}(0.0010188812389188007, 0.00037148785853918575, 0.03173386628583908, 6.796550317359192e-5, 0.36460368917322983, nothing)
total ┼ AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}: AttributionComponent{Float64, Float64, Float64, Float64, Float64, Nothing}(0.01170635355909842, 0.01170635355909842, 1.0, 0.0008806329520089817, 1.0, nothing)
fbd ┼ AttributionBreakdown{Nothing, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Nothing}: AttributionBreakdown{Nothing, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Nothing}(nothing, [0.9362329400166277, 0.1616056720073657, 0.2802506409556027, 0.29375458921208025, 0.26004021273412053, 0.12089080320177858, -0.03338249961272991, -0.09437551331766274, -0.06528532539685832], [0.06233844070679186, 8.159922478887255e-11, 0.007224588384920495, 0.010389966063068945, 9.625620461700586e-5, 0.010864139078959686, 0.014804503799461442, 0.019773005039095893, 0.02784045521627723], [0.011571498376119333, 0.005593210192477349, 0.007281834197882982, 0.007217225135692791, 0.006065161600410353, 0.0053881176172345824, 0.0050697253596198935, 0.004822745882570198, 0.004782178092091768], [0.9729345536495434, -0.18775403265162735, 0.1564915677895714, 0.13827658362510953, 0.0754041788241917, -0.05315833030853702, -0.02955188306247437, -0.09847913538241153, -0.06387790905189024], [0.010454099341683657, -0.00016970983591057105, 0.00032168615366491956, 0.0002903092079719237, 0.00011894730664450207, -3.8170757974113334e-5, 8.500248558775843e-6, 4.296431319938734e-5, 1.6806311407352766e-5], [0.8930278151011861, -0.014497241609336927, 0.027479620536054832, 0.02479928583280225, 0.010160918687788458, -0.0032606872653736167, 0.0007261226577399308, 0.0036701704747328927, 0.0014356572542002675], [0.0005502895821641046, -0.00029839098988812616, 0.0012814647131807718, 0.0002665148562421711, -0.00013452631401608567, -0.0003214610553844653, 0.0003386953224479031, -6.30934759711544e-5, -0.0002794377779602246], [0.000469080033123251, -4.822167646498528e-5, 0.0003619142708335092, 7.794071255659804e-5, -3.498434779061645e-5, -4.047637791544271e-5, -1.1159958288056466e-5, 4.99549046941656e-6, 2.9673414722339175e-5], nothing)
fmbd ┼ AttributionBreakdown{Vector{String}, Vector{Float64}, Vector{Float64}, Nothing, Nothing, Vector{Float64}, Vector{Float64}, Nothing, Vector{Float64}, Nothing}: AttributionBreakdown{Vector{String}, Vector{Float64}, Vector{Float64}, Nothing, Nothing, Vector{Float64}, Vector{Float64}, Nothing, Vector{Float64}, Nothing}(["industry", "market", "style"], [0.9956511149091691, 0.9362329400166277, -0.07215253512547237], [0.01667833881572813, 0.06233844070679186, 0.045817597531392584], nothing, nothing, [0.0005612328323707742, 0.010454099341683657, 3.0100115191402617e-5], [0.04794258344730861, 0.8930278151011861, 0.0025712631212994742], nothing, [0.0003566489591345054, 0.000469080033123251, -1.696743101174344e-5], nothing)
abd ┼ AssetAttributionBreakdown{Vector{Float64}, Nothing, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}}: AssetAttributionBreakdown{Vector{Float64}, Nothing, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Float64}}([0.0004073180647816746, 1.6303646140641137e-9, 1.7733028316245267e-9, 2.03893859856591e-9, 0.09999999462491459, 4.4225195431233376e-10, 0.02736921908869657, 0.009380611377433781, 5.101623080086385e-10, 5.870226864639259e-10, 6.884242136668462e-10, 4.6471587587015316e-10, 7.942925791528923e-10, 2.4929547510948786e-10, 0.030720261188890912, 0.04976928615978285, 2.7002680129891904e-10, 5.002354885254673e-10, 2.600118400092024e-10, 0.0019370953119838784, 0.006846916585970778, 4.683432093925005e-10, 0.004859707956203854, 1.0583928350329508e-9, 0.01862176225684324, 2.426249505732324e-10, 6.981153731911741e-10, 1.2818909108819883e-9, 1.5394660408239114e-9, 7.736031625275514e-10, 0.08398584883247308, 0.05342459156509504, 0.012175555845087139, 0.005982408452075028, 4.524743801599888e-10, 1.2166848488221391e-9, 0.01936255502618818, 6.568511783988342e-10, 0.07636950784376033, 7.259894562347738e-10, 5.38878995651582e-10, 3.73671957950972e-10, 9.969904378592729e-10, 1.5976590573742384e-9, 1.0562468780037103e-9, 0.007996652703299833, 0.041617471931250635, 0.06652113509967741, 0.011523346286144934, 0.0023821084440777862, 9.484803746675298e-10, 5.113930976694372e-10, 1.7780243697866057e-9, 0.014791914944627007, 5.399680160280366e-10, 1.3675232896054584e-9, 0.02795389242618819, 0.004909946794681775, 1.7019765633495783e-9, 0.012556693097072467, 0.00913518579591105, 1.9995942605163548e-9, 8.580566501600635e-10, 5.605993105924318e-10, 8.090994256690887e-10, 0.008704170101875118, 0.0001896861329522505, 0.001276059143711772, 0.024403374842061155, 3.918983702308924e-10, 0.09999999574381281, 3.362138188650075e-9, 0.06140977008830333, 0.036141090649244506, 7.183371204330788e-10, 0.04895626849115072, 7.976522162729464e-10, 5.653112447331344e-10, 0.0066767092317149765, 0.011641847075079963], nothing, [2.928610713384821e-6, 3.6332677803041832e-12, 8.669704560001946e-12, 1.5218638682945212e-11, 0.0009255494925864575, 1.3221062747221426e-12, 0.00011481416882937511, 5.099642215240112e-5, 2.9421389536616636e-13, 3.5519546216909333e-12, 1.819566711410738e-12, 3.639855203295001e-13, 2.8547491782796516e-12, 5.608195024419781e-13, 0.00025902795202027094, 0.00043763093304204277, 1.5570804116275384e-12, 1.8065033696555357e-12, 1.3419726384845264e-12, 1.5738687001808805e-5, 4.256821155334818e-5, 3.363212909888552e-12, 2.3398458209306346e-5, 7.612929138224518e-12, 0.00019316624533128026, -6.983665757065913e-16, 6.309877272755528e-12, 1.7669451513682797e-11, 8.588160053776114e-12, 2.55129294522658e-12, 0.0015447768226827037, 0.000444301067188133, 0.00012275740287786996, 7.257809059848883e-5, 2.642465609298242e-12, 1.2082861234072063e-11, 0.00019803674671061932, 5.3968023350519476e-12, 0.0011303292571509958, 3.748263326628411e-12, 2.9921957095627633e-12, 2.03100761241455e-12, 2.2284693681277553e-12, 1.0277347628900381e-11, 7.464861468060748e-12, 7.756343441312434e-5, 0.00039579043372336086, 0.0004346263934667139, 9.737493281302079e-5, 1.132380551494368e-5, 4.789046517393133e-12, 4.584975101284443e-12, 6.667556141625059e-12, 0.0001322650637356184, 2.304975721617107e-12, 1.748427267583529e-11, 0.0002164443539751021, 3.7487802515243477e-5, 8.779998922310583e-12, 0.00010444160749093989, 0.00010431064220406493, 1.786379524910648e-11, 6.944223168805027e-12, -4.068217903849669e-14, 2.989119656150522e-12, 5.961998077367808e-5, 1.0797989168695087e-6, 1.3566679459818154e-5, 0.0002814105547069188, 3.46772436746208e-12, 0.0014456247368288503, 3.367859877841568e-11, 0.001073410417962827, 0.0001794529448403092, 4.803572834807244e-12, 0.0006236908116216151, 5.911627781869302e-12, 3.979407685571496e-12, 6.249701039955831e-5, 0.00011485205307349944], [1.6980708671723788e-7, 5.180997223083512e-13, 2.217405348023282e-12, 8.751168059090305e-13, 8.018121574203732e-5, 4.828963119245919e-13, 4.110258997801327e-5, -6.687702963574507e-7, 1.2981350892217605e-13, 3.659048786718389e-13, 9.47705707224338e-13, 1.9478461663148518e-13, 6.592568775631138e-15, 1.4644737264635725e-13, 1.5123240767690626e-5, 3.3597524300690276e-5, 8.424144799474931e-14, 8.071153351141771e-13, 1.9659647574528423e-13, 1.3517769161480718e-7, 4.723326288532181e-6, 3.96396773250998e-13, 3.808138306902673e-6, 1.0545109436149277e-13, 4.0196325141258006e-5, 1.8697624274587516e-13, 9.648622788152836e-13, 9.006455000049928e-13, 9.13436996201689e-15, 1.671778780158379e-12, 4.048647974434282e-5, 4.7064374194678046e-5, 1.13567603994012e-5, 6.3597527855038014e-6, 1.1326480857393506e-12, 1.8632614374545704e-12, 3.1622624984434705e-5, 3.11041935453443e-13, 2.8042049569240013e-5, 5.006074643474122e-13, 1.1735989940803318e-13, 7.00197938256866e-13, 1.7487513747294796e-12, 1.357809112147817e-12, 1.7569450050433557e-13, 1.3663725392401743e-6, 1.2519142189488584e-5, 5.1357901489151594e-5, 1.0720526578991432e-5, 1.3502168473437158e-7, 5.637919163803848e-13, 8.095597974288359e-13, 3.235718686982127e-13, 2.463323767527335e-6, 1.0149862833123612e-13, 7.409548256158662e-13, 3.0863738981389596e-5, 1.7785534538640317e-6, 3.2915835619063574e-12, 2.647260186909163e-5, 2.301971112517069e-6, 2.7973551721684264e-12, 4.181555375518755e-13, -2.441043129000835e-13, 3.557002618212547e-13, 6.740590114436133e-6, 7.75710699477188e-8, 8.041820921251465e-7, 1.5207999618906501e-5, 3.212570431620184e-13, 3.0928577843030563e-6, 1.7393810022087883e-12, 0.0001656910936273507, 5.829545221228469e-5, 3.7948361800537653e-13, 2.6662202434233943e-5, 3.4678152041661927e-13, 1.2883465040797376e-12, 1.3268621155232083e-6, 7.5829474775526e-6], [3.626017535306314e-7, -1.0428465178337296e-12, -5.846455274619907e-13, 1.3016685114887889e-12, 0.00012354367573395855, 1.2422106738116891e-14, 1.270052985816727e-6, -2.4568528931226434e-6, -3.8948316120980694e-13, 1.32657493538666e-13, -3.4690968783500235e-13, -3.109459848299161e-13, -4.465319990760601e-14, 6.618326032477344e-14, -1.4894126861366025e-5, 5.4207563837514274e-5, 2.797306817243271e-14, 6.50914286145458e-15, -1.5407436233753387e-13, -1.6649623344414654e-6, 1.1398970046368593e-5, -6.023528354166819e-14, -3.957736711869844e-6, 5.2533427201341984e-15, 1.0294230866646735e-5, 5.9230729958026e-14, 2.8358477443344e-13, 9.411015024862725e-14, 6.471518944254224e-13, 8.033255061989044e-14, 8.160775472608354e-5, -5.916282077786523e-6, 3.7966096985005486e-7, -3.364485535888918e-6, -2.396711293259367e-13, -6.072603750044216e-13, -2.021632462342302e-5, -3.5275950507893346e-13, 2.283723581184791e-5, 2.3795649924173743e-13, 2.0991415692739828e-13, 2.3531577699560053e-13, -6.37572601856832e-13, -2.6996157928968527e-14, 5.578706466399288e-13, 3.787409458774647e-6, -5.072107182017414e-6, 4.1826464159992975e-5, 1.0509956263581766e-6, 6.422442367854067e-7, -4.318694304929705e-13, 1.8649799509675262e-13, -1.1803538629844699e-12, -5.750252920171486e-6, -4.510042115898743e-13, 7.067962451515104e-13, 1.4118745214684353e-5, -1.6960719491490652e-7, -1.0407591216810396e-12, 1.3577935528840051e-6, 6.799945470171461e-6, 8.015243731204459e-13, 9.69771721482074e-13, 5.517090199717788e-14, -1.0620862367916194e-13, 3.0273004991628108e-6, 7.080775277105635e-8, -5.869388367920427e-7, 3.109535648088536e-6, -9.774096443826608e-14, -5.112402404408823e-5, 1.6481427444208977e-12, 3.4373098812274834e-5, -1.8226209817128554e-5, -2.9560776072701176e-14, 9.756815910032277e-6, -3.5683422965991337e-13, 1.4832356911925603e-13, -2.6659609008625087e-6, -3.236198083061528e-7], [9.873300163812977e-8, -1.1065324859422181e-12, -1.8014918615135762e-13, -5.15740410538698e-13, 6.595603704493857e-5, -1.9088144116029109e-13, 9.475715814726441e-7, -1.7175120860255494e-7, 4.2982738919396725e-13, -1.1370164618501063e-13, -7.557380304392606e-13, 1.3624079675836947e-13, -3.723401669611761e-13, 2.0275711760976474e-13, 1.3664934302756402e-5, -3.128853656410089e-6, -5.594270240352834e-13, -5.993004867465938e-13, 7.558116036545429e-14, 1.4166923027471482e-6, 7.853632186995801e-6, 1.246778182502543e-13, 2.584842824230383e-8, -1.451953115428605e-12, -2.1171893145305857e-5, -2.2288499199027083e-14, 5.501805002500756e-13, -3.9073493135932593e-13, -8.331349941477971e-13, 2.2700547884974613e-13, 3.3335691813144964e-5, 4.818804017706449e-5, -2.055504665365347e-7, -8.718478078442137e-6, 2.1925563085005107e-13, -8.632613026961741e-13, -5.901661079019473e-6, 4.751006219009514e-13, 5.783620146941578e-5, 8.198895160547605e-13, 2.346888639024786e-13, 1.9716948162728777e-13, 1.3743759246284783e-12, -2.773892715228939e-13, -6.30536327123416e-13, -3.2608204451696593e-7, -7.372912677197773e-5, 8.042461558384708e-6, 4.803082076618062e-7, -2.026305910790763e-7, -1.7342177294860137e-13, 2.8168287630440007e-15, -1.0323512595888221e-12, -1.4932735354780124e-6, 6.885096029680584e-14, 1.4123774068080702e-12, 1.4444237977343074e-6, 6.772845849167164e-7, -1.5654361394498101e-12, -1.8346999993623362e-5, 1.4142808323738704e-5, -1.230028741463703e-12, -1.093620583982358e-12, -7.157656626343315e-14, -4.3084769748690177e-13, -3.941940198519472e-6, 2.7702215513235097e-7, 1.4551891923781367e-6, -2.365070848907003e-6, 3.3280856095483977e-15, -0.00010785368022794846, 2.431535745122007e-12, -1.8208429692859886e-5, -4.168678418038765e-6, -4.399421940965532e-13, 1.1545984151737783e-5, 4.311790420546079e-13, 5.962071583250506e-13, 5.244728818093368e-6, 1.2063993357364103e-6], [0.01480270961052153, 0.016085904653938044, 0.018325321486679123, 0.017281025229272436, 0.018012166155797222, 0.016933281783531772, 0.01231598367349314, 0.02040438640598843, 0.012813616467453486, 0.014495516265082763, 0.01459692335423497, 0.017791039533105187, 0.015600180140066172, 0.01652232337424286, 0.018436775216777654, 0.016882386352442505, 0.023913745819595763, 0.018689958147692597, 0.022174492778013196, 0.025486503391386205, 0.02241666272475429, 0.017241861866349975, 0.022237468250001242, 0.01885811752466092, 0.022653262235291204, 0.02163546731448418, 0.021655537792596057, 0.025902369891199102, 0.01634131395010171, 0.023974155953556908, 0.023358013909526045, 0.015913217150322394, 0.021163245896536276, 0.023791524448320403, 0.019306073875683283, 0.02398030244740262, 0.022259602716045247, 0.01617908773527518, 0.020950548486011827, 0.016340164702569264, 0.01762436155655561, 0.018719171460738815, 0.013013662694748445, 0.013856303241269996, 0.016467384719944203, 0.02230539890179019, 0.0170953928020314, 0.014479677230172074, 0.019521228557960908, 0.02341527707623685, 0.01683135079787352, 0.024245476262697137, 0.01244100466511457, 0.022204882529077114, 0.0134461365548367, 0.024072362347186425, 0.017868119867750686, 0.02110424302120785, 0.012733655142431232, 0.01965951398394046, 0.02338171866733394, 0.018911360062890167, 0.02029909993469859, 0.013282792598552825, 0.021769384401186566, 0.016960238051694995, 0.02238659304265273, 0.022136721397299657, 0.016659302480667354, 0.022345238243344494, 0.021575398017749704, 0.01802065080956252, 0.024235447303970002, 0.012399996155518525, 0.016289904844223137, 0.02568351161227226, 0.021976265760860158, 0.017989612286821152, 0.022166299193907193, 0.020260442059571213], [0.545859694985594, 0.09877343681545091, 0.24879903143659066, 0.4688613860162605, 0.5824359022873117, 0.17820378257858893, 0.3443829832022807, 0.25359531995200585, -0.014573797441065307, 0.4330152608641944, 0.14654943492929007, 0.006415210007861103, 0.22678328143688517, 0.15222428426474574, 0.4310405133393292, 0.5853657013655374, 0.24546492253067403, 0.19391793313633043, 0.20603093476671674, 0.28506756337634, 0.35161204439194066, 0.40903195958004546, 0.17989407786531408, 0.38168592226067377, 0.4823125098511399, 0.011150499435390699, 0.4361313798907749, 0.5349823803924969, 0.36710853576179187, 0.14189350698236444, 0.829050945057705, 0.5156514852613295, 0.4778787497137343, 0.48628753635057714, 0.27506077865370837, 0.393316963988231, 0.4125737218590065, 0.4746328052844308, 0.720736681273491, 0.3360272530697443, 0.33715653283679453, 0.3239998066144387, 0.122617218485325, 0.46302801893279427, 0.4612455836336773, 0.4560829457398717, 0.5491727796447355, 0.49465386152309837, 0.437546043256949, 0.21453095911170147, 0.27293415727728876, 0.38482820752221614, 0.2480606104421176, 0.3851842223397765, 0.2553509644889904, 0.5525922325385935, 0.46160303372131933, 0.36014224554971447, 0.35710147504190476, 0.42858320900798924, 0.5201895569064766, 0.49359503909458136, 0.4543630668952119, 0.0019457550103862313, 0.16367532015351416, 0.42436828065861165, 0.2709588246782917, 0.4594961859115307, 0.699852040878692, 0.3848303494773571, 0.6463383762330102, 0.5830657750070503, 0.7443314810872615, 0.35976114300531714, 0.4079779156540101, 0.5037882139644554, 0.3168840996726444, 0.4058840508418089, 0.4042694900887017, 0.4855595637386372], [3.2912124669154525e-6, 2.590421262470454e-12, 8.085059032539956e-12, 1.6520307194434e-11, 0.001049093168320416, 1.3345283814602594e-12, 0.00011608422181519183, 4.853956925927848e-5, -9.526926584364057e-14, 3.684612115229599e-12, 1.4726570235757355e-12, 5.303953549958398e-14, 2.810095978372046e-12, 6.270027627667515e-13, 0.0002441338251589049, 0.000491838496879557, 1.5850534797999712e-12, 1.8130125125169903e-12, 1.1878982761469926e-12, 1.407372466736734e-5, 5.396718159971677e-5, 3.302977626346884e-12, 1.9440721497436503e-5, 7.618182480944652e-12, 0.000203460476197927, 5.853236338231941e-14, 6.593462047188967e-12, 1.7763561663931426e-11, 9.235311948201537e-12, 2.6316254958464705e-12, 0.0016263845774087873, 0.00043838478511034647, 0.00012313706384772002, 6.921360506259991e-5, 2.4027944799723053e-12, 1.1475600859067642e-11, 0.0001778204220871963, 5.044042829973014e-12, 0.0011531664929628437, 3.986219825870148e-12, 3.2021098664901616e-12, 2.2663233894101506e-12, 1.5908967662709233e-12, 1.0250351470971413e-11, 8.022732114700677e-12, 8.1350843871899e-5, 0.00039071832654134347, 0.00047645285762670683, 9.842592843937896e-5, 1.1966049751729087e-5, 4.3571770869001625e-12, 4.771473096381196e-12, 5.487202278640589e-12, 0.00012651481081544692, 1.8539715100272325e-12, 1.81910689209868e-11, 0.00023056309918978644, 3.731819532032857e-5, 7.739239800629544e-12, 0.00010579940104382389, 0.0001111105876742364, 1.8665319622226926e-11, 7.9139948902871e-12, 1.4488722958681188e-14, 2.88291103247136e-12, 6.264728127284089e-5, 1.150606669640565e-6, 1.297974062302611e-5, 0.00028452009035500735, 3.369983403023814e-12, 0.0013945007127847621, 3.5326741522836575e-11, 0.0011077835167751019, 0.00016122673502318066, 4.774012058734543e-12, 0.0006334476275316473, 5.554793552209388e-12, 4.127731254690752e-12, 5.98310494986958e-5, 0.00011452843326519329], [0.0002811475367030457, 2.2128336115878927e-10, 6.906556334321614e-10, 1.4112257169606905e-9, 0.0896174169884899, 1.140003481633302e-10, 0.009916343396699204, 0.004146429459372729, -8.138252903663186e-12, 3.147531890804582e-10, 1.2579980744141766e-10, 4.530833212222653e-12, 2.400487875396503e-10, 5.356089405649568e-11, 0.020854813920186024, 0.04201466275527702, 1.3540112826748128e-10, 1.5487423161825482e-10, 1.0147466246854757e-10, 0.001202229592359181, 0.004610076171650596, 2.8215256011806864e-10, 0.0016606983036427062, 6.507733123286408e-10, 0.017380346080508844, 5.000050877228703e-12, 5.632379044339039e-10, 1.5174291101198818e-9, 7.889144900312413e-10, 2.2480317910790563e-10, 0.13893178342838686, 0.037448449074872235, 0.010518823237831848, 0.0059124820306495586, 2.052555877320828e-10, 9.802882512589557e-10, 0.015190077865792, 4.308807866180225e-10, 0.09850774514379662, 3.4051763478235083e-10, 2.735360631578922e-10, 1.9359772263573206e-10, 1.3590028340075596e-10, 8.756229187187523e-10, 6.853314376845593e-10, 0.006949289841726285, 0.03337660395859726, 0.04070036456881125, 0.0084079066929326, 0.0010221842088844846, 3.7220617546731064e-10, 4.075968722705038e-10, 4.68737105106126e-10, 0.01080736287151664, 1.583731006130673e-10, 1.5539483605335265e-9, 0.019695552336242914, 0.0031878582115200255, 6.611144761311644e-10, 0.009037775982905831, 0.009491477180601551, 1.5944606087623121e-9, 6.760427019681274e-10, 1.2376802806729046e-12, 2.4626891866175543e-10, 0.005351562376496832, 9.828907557181116e-5, 0.0011087774307771516, 0.02430475800330432, 2.87876441285561e-10, 0.11912340642581458, 3.0177408656327402e-9, 0.09463096353467897, 0.013772583769082553, 4.0781375982139905e-10, 0.05411143823170442, 4.745110015827335e-10, 3.5260606420712405e-10, 0.005110989446597901, 0.009783442186929288], [0.0006592884322459575, -0.00036092096121188654, 0.0011488484231458585, 0.00017625660509006983, 0.0014613726064197851, 0.0006602907413226936, 0.0015364034108248468, -8.9601996196323e-5, 0.0010969859774639938, 0.0004296311510651077, 0.0002788508494821445, 0.0007123178496323784, -0.00046046961508265926, 0.0014007654575469337, 0.000937107106395874, 0.000612198265140099, -0.0017597718958071297, 0.0004154340368376389, 0.0010467893927488285, 0.0008011324919126493, 0.0018368791729255133, 0.0011125913241640697, 0.0007889335675512246, -0.0012722138477299803, 0.0010216236107815707, 0.0006787749700010337, 0.00217018968102637, 0.0003977800016499289, -0.0005352509261878758, 0.002454468067069853, 0.0008789834547572552, 0.001782932009048352, 0.0009158686531230689, -0.00039427687223867147, 0.0029878016874930833, 0.0008219056362265771, 0.0013283868720128714, 0.0011968351176148088, 0.0011245096827695788, 0.001818892780138592, 0.0006532983585393495, 0.0024014845127926176, 0.003132554918043048, 0.0006762518170807976, -0.00043062075362411883, 0.00013009074337990586, -0.0014707761366092606, 0.0008929547422564104, 0.000972012339863511, -2.8381959903123017e-5, 0.0004115742970102249, 0.0015885561027204115, -0.00039863311377204345, 6.557976000272261e-5, 0.000315480886962751, 0.0015746219817910309, 0.0011557661554444738, 0.0005001760999611641, 0.001014201640391216, 0.0006471132019116338, 0.0018001581799919743, 0.0007838222291656279, -0.0007872033231191438, -0.0005631132133036529, -9.287787542736684e-5, 0.00032152978206546705, 0.001869368200833802, 0.001770585082703357, 0.0005262767487332815, 0.0008282380163518743, -0.001047608269024623, 0.0012405548235378905, 0.0024016156341640773, 0.0014976519197927802, -8.416462740325422e-5, 0.0007804554506207553, 0.0009753129830269523, 0.0033336567775056843, 0.0009842559718492643, 0.000754978720868367], [2.6854008835536764e-7, -5.884327636338662e-13, 2.0372561618719235e-12, 3.593763953703316e-13, 0.00014613725278697588, 2.9201487076430093e-13, 4.205016155948592e-5, -8.405215049600016e-7, 5.596408981161434e-13, 2.5220323248682846e-13, 1.919676767850774e-13, 3.310254133898547e-13, -3.657475981855449e-13, 3.4920449025612186e-13, 2.8788175070447034e-5, 3.0468670644280205e-5, -4.751855760405339e-13, 2.0781484836758314e-13, 2.7217763611073856e-13, 1.5518699943619549e-6, 1.2576958475527978e-5, 5.210745915012524e-13, 3.8339867351449755e-6, -1.3465020210671126e-12, 1.9024431995952156e-5, 1.6468774354684819e-13, 1.515042779065359e-12, 5.099105686456664e-13, -8.240006241857799e-13, 1.8987842590081246e-12, 7.382217155748777e-5, 9.525241437174257e-5, 1.1151209932864665e-5, -2.3587252929383327e-6, 1.3519037165894019e-12, 1.000000134758397e-12, 2.5720963905415217e-5, 7.861425573543941e-13, 8.587825103865577e-5, 1.3204969804021725e-12, 3.520487633105117e-13, 8.973674198841535e-13, 3.1231272993579567e-12, 1.0804198406249228e-12, -4.548418266190806e-13, 1.0402904947232095e-6, -6.120998458248916e-5, 5.940036304753631e-5, 1.1200834786653236e-5, -6.760890634470579e-8, 3.903701434317831e-13, 8.1237662619188e-13, -7.087793908906097e-13, 9.700502320493337e-7, 1.7034958862804193e-13, 2.153332232423936e-12, 3.230816277912391e-5, 2.4558380387807517e-6, 1.726147422456547e-12, 8.125601875468274e-6, 1.6444779436255776e-5, 1.5673264307047243e-12, -6.754650464304831e-13, -3.156808791635167e-13, -7.514743566564774e-14, 2.7986499159166625e-6, 3.5459322508006987e-7, 2.2593712845032823e-6, 1.2842928769999507e-5, 3.2458512877156685e-13, -0.00010476082244364535, 4.170916747330795e-12, 0.00014748266393449082, 5.4126773794245906e-5, -6.045857609117689e-14, 3.8208186585971734e-5, 7.779605624712271e-13, 1.884553662404788e-12, 6.571590933616576e-6, 8.789346813289006e-6])
afc ┼ AssetFactorContribution{Matrix{Float64}, Matrix{Float64}}: AssetFactorContribution{Matrix{Float64}, Matrix{Float64}}([2.556858782897098e-6 0.0 0.0 0.0 1.961475805348255e-7 7.507596363027986e-8 -2.1653431954789746e-8 2.387599287965749e-8 9.830582539774955e-8; 2.0466939793830624e-12 0.0 0.0 1.266961941642273e-12 0.0 2.196773474469194e-13 1.3151030204523828e-13 -5.746917897746597e-13 5.43115999561349e-13; 6.4395153860597406e-12 0.0 1.9472604549483998e-12 0.0 0.0 4.153378761458164e-13 1.1626142215485717e-13 -2.911091247145822e-13 4.243854540771652e-14; 1.500237488818384e-11 0.0 0.0 0.0 8.262602170922951e-13 2.3959451780360004e-13 -3.2328528124239506e-13 -3.8687869624756464e-13 -1.3942696264456244e-13; 0.0008019159318049736 0.0 0.0001139545588758872 0.0 0.0 -1.027918383679011e-5 1.495359379740435e-5 2.731543354166206e-5 -2.231084159667916e-5; 7.468317290048117e-13 0.0 0.0 4.413556135376114e-13 0.0 1.9621043639236445e-13 6.103320401686983e-15 -2.2452712020508224e-13 1.5613229559075075e-13; 7.477741970192726e-5 0.0 3.1171765413929934e-5 0.0 0.0 2.1305826035177964e-6 -1.0264452462955123e-7 4.897708339684153e-6 1.939337294945517e-6; 4.0369193960320555e-5 0.0 0.0 9.361599082773619e-6 0.0 6.539516929914115e-7 2.3055547797915688e-6 -1.4309747655337559e-6 -2.629025979422763e-7; 6.666597663829038e-14 -5.010573479043623e-13 0.0 0.0 0.0 2.0488265542430452e-13 2.6272420970166253e-14 2.7157709878771893e-13 2.258730914500485e-13; 2.9010752109514897e-12 0.0 0.0 0.0 2.9099274589653907e-13 2.4285692412005333e-13 -4.982113652383705e-14 7.473886547090794e-14 9.21120117757801e-14; 9.056826597750166e-13 0.0 7.653249650795153e-13 0.0 0.0 2.871579140416125e-13 3.689675562758309e-14 -1.205261017598643e-13 -5.49694813531246e-14; -5.5721756023554035e-15 0.0 0.0 3.7271491924341126e-13 0.0 1.3475756797408253e-13 3.5201359320159494e-15 -3.1562664507141024e-13 1.7419171785375589e-13; 1.879554326665462e-12 0.0 0.0 6.024529641467539e-13 0.0 3.0465000393471013e-13 1.6843055332435647e-13 -5.137828002445969e-14 -4.8960389767171206e-14; 3.4997416274076247e-13 -2.6150062091117606e-13 0.0 0.0 0.0 1.4983813033115496e-13 4.315835506992963e-14 1.0764656785612697e-13 1.7170290735518017e-13; 0.00029568868597378863 -3.22608137538615e-5 0.0 0.0 0.0 -8.187570604904539e-7 -3.471606128328945e-6 -7.346995352110928e-6 7.237438341274044e-6; 0.00040266052854034186 0.0 0.0 4.455560812326801e-5 0.0 4.896187207911797e-6 -9.880701406100594e-7 -7.612432815672267e-6 -5.880887873196712e-6; 1.234618551644717e-12 0.0 0.0 0.0 1.2349366034368755e-13 1.637431510246253e-13 4.8897883030232187e-14 8.319495101254772e-16 -1.4504783925848402e-14; 1.271879002672501e-12 0.0 0.0 4.992216287540033e-13 0.0 1.6108780674191374e-13 -1.2652828211712185e-13 -2.637671230892944e-13 2.646103366935333e-13; 9.053517984552846e-13 0.0 0.0 0.0 1.1891343267029323e-13 1.5985844133732541e-13 -1.382658018886067e-14 1.8763334558309652e-13 -1.595779937261281e-14; 1.5094245030579412e-5 0.0 0.0 0.0 8.859083222878742e-7 1.9420144372358006e-7 2.7514993623533927e-7 -1.0772446730039673e-6 3.6642694198656506e-7; 4.2050493895859403e-5 0.0 7.802374011527225e-6 0.0 0.0 9.064606688171639e-7 3.3407914199098487e-7 -2.0292227791395594e-6 -6.495973385707028e-6; 2.5283280364934784e-12 0.0 0.0 4.673939877756154e-13 0.0 2.058524249689569e-13 4.4414612053752875e-14 2.4714433608731008e-14 9.250941498801711e-14; 2.1537864760821596e-5 -5.103411468713217e-6 0.0 0.0 0.0 4.251956196283339e-7 -5.631249036753725e-7 5.0884258148021556e-6 2.013508386442854e-6; 7.520947844339582e-12 0.0 0.0 0.0 4.840438232465e-13 2.3436305923156815e-13 9.448384018776883e-14 -8.326810313983994e-13 1.1177160261749824e-13; 0.0001677278244270997 0.0 2.122034817531402e-5 0.0 0.0 5.769951322779611e-7 -2.3479438218235346e-6 1.9398001123589976e-6 4.049221306053146e-6; -2.2234324896928873e-13 -2.5479205057388673e-13 0.0 0.0 0.0 1.6595086859299948e-13 1.695741513132315e-14 1.2585537420006037e-13 1.6767327504308577e-13; 6.184087506622296e-12 -7.331243017351792e-13 0.0 0.0 0.0 2.8175534175614014e-13 -2.060950197368447e-13 6.488467676777489e-13 1.3440697817136773e-13; 1.6107861446592376e-11 0.0 0.0 0.0 5.862581046941219e-13 4.22328717105356e-13 5.2989092311185946e-14 4.894572162990134e-13 1.0556936680747347e-14; 9.140492433679216e-12 -1.6166668283853794e-12 0.0 0.0 0.0 3.232463380790418e-13 2.1237262748450324e-13 3.9775736336375786e-13 1.309581195549721e-13; 1.219540859515748e-12 0.0 8.815561186925784e-13 0.0 0.0 2.5951055191467663e-13 -2.5445644911111806e-14 -3.383065096289782e-14 2.4996171097758737e-13; 0.0015108106237096306 0.0 0.0 0.0 3.840996463870356e-5 -7.605080076724174e-6 6.819758151152461e-6 -1.4484075830086202e-5 1.0825632090027025e-5; 0.0003483658266803628 0.0 0.0 5.3316312473672706e-5 0.0 -4.6491343245091825e-6 2.722627426766385e-6 2.3504609708446614e-5 2.1040825223393693e-5; 0.00012338850861256956 0.0 0.0 1.2150878854850134e-5 0.0 1.2477446074131302e-6 -1.7194284911878485e-6 -1.1214966959065957e-5 -1.0953337467090402e-6; 6.522097858866929e-5 0.0 0.0 5.970283516109564e-6 0.0 4.6947967123709926e-7 1.0082927157720627e-7 2.1125608844533546e-8 7.953939420511542e-7; 1.5288573377825134e-12 0.0 5.156152116524782e-13 0.0 0.0 2.097511731669785e-13 -6.736713784217187e-14 3.5197731893071145e-13 1.0363170560773191e-13; 1.113607084375066e-11 0.0 0.0 0.0 5.564368601301265e-13 3.006029801517206e-13 -5.02967980985944e-13 6.207841248091724e-13 -2.8065593783674992e-14; 0.00017856706919108567 0.0 2.2064515353180216e-5 0.0 0.0 -5.453889784339157e-7 1.684484690321907e-6 -6.6301277610091264e-6 2.8961942154745013e-6; 4.425307347937263e-12 0.0 0.0 0.0 3.0040335230183395e-13 2.1687172056435433e-13 9.989905659344994e-15 4.730540718605989e-13 -2.882406327144729e-14; 0.00110827233414575 0.0 0.0 0.0 3.492671844759461e-5 -1.072301465845664e-5 2.4504571342975616e-6 -5.094969796259201e-6 4.977318780695273e-7; 2.574417103839813e-12 0.0 0.0 7.24518046226753e-13 0.0 2.2916211594429845e-13 1.3576583075792508e-13 -2.3876708230772483e-13 3.231673121673463e-13; 3.817431314748537e-12 -5.659025751014867e-13 0.0 0.0 0.0 2.0638908733608757e-13 -2.0659652542766068e-14 -3.80359162503394e-13 -6.470330237421478e-14; 1.7561917103111733e-12 -3.9241077301961227e-13 0.0 0.0 0.0 2.0560982844963115e-13 -1.206938688026829e-13 3.8290406517751976e-13 1.9940665029852147e-13; 6.191854903125134e-13 0.0 1.1361161165645226e-12 0.0 0.0 2.5344803381474404e-13 2.97972395981467e-14 -2.9865057909937092e-15 1.9290899362882199e-13; 9.678594671099347e-12 -1.6777780948932424e-12 0.0 0.0 0.0 3.4213387668755194e-13 -2.300669164409573e-13 1.5240771171798844e-12 6.403869752677963e-13; 6.993140312119636e-12 -1.1092153025605696e-12 0.0 0.0 0.0 3.4486487335193567e-13 1.796663674809329e-13 9.163243894956344e-13 1.4008082817317668e-13; 8.144771261739006e-5 -8.39766699668424e-6 0.0 0.0 0.0 1.0397258932219413e-6 2.032574834058476e-7 4.847966469481182e-6 -1.5775610536904672e-6; 0.00034353118407627717 0.0 0.0 0.0 1.9033273431815407e-5 1.9503239801218736e-6 5.770578076928462e-6 1.5873085128481638e-5 9.631989029736259e-6; 0.00032936328580925424 0.0 0.0 6.638631239241913e-5 0.0 -3.102859506649847e-6 2.451928523631463e-6 1.7354172140281203e-5 2.2173554107777822e-5; 9.290185275777298e-5 0.0 0.0 1.149999117140366e-5 0.0 6.962186210408085e-7 -1.4357221288762737e-6 -5.776168279332477e-6 -5.112393289878809e-7; 9.134299496873085e-6 0.0 0.0 2.377280470097303e-6 0.0 1.8243694440774577e-7 6.2003420378352e-7 -1.5561453666604367e-6 5.658997664424592e-7; 3.390857300019809e-12 0.0 0.0 9.465580278569647e-13 0.0 2.294654938746408e-13 2.1270086823515814e-13 -4.5382805906803136e-13 4.632928864745913e-13; 4.320857270011495e-12 0.0 0.0 0.0 2.3387976749679964e-13 1.8492922489226483e-13 -1.3963196794729531e-13 -1.5570210560440354e-13 1.406429124355826e-13; 4.5789093481702974e-12 0.0 0.0 1.774420732254764e-12 0.0 3.9970137416780086e-13 3.0289740672245465e-13 -6.737651178291439e-14 -3.2099620790734524e-13; 0.0001351818161783181 0.0 0.0 0.0 6.76491263540289e-6 -6.179243924442576e-7 -1.5471459842032165e-6 -1.42013410763542e-6 -6.096460593819744e-6; 1.8334257384125504e-12 0.0 0.0 0.0 2.4694817865136155e-13 1.787189038348174e-13 1.47192408800048e-14 8.235727407831633e-14 -5.1193614239943644e-14; 1.6430459896498873e-11 0.0 0.0 0.0 6.254210908926345e-13 3.392428690477418e-13 1.0784278010050525e-13 -4.8461351425150866e-14 2.9767390720684414e-14; 0.00017777373487612078 0.0 0.0 2.789723645587653e-5 0.0 1.0948552710379972e-6 -3.646694113051977e-6 5.889657758663889e-6 7.435563726454957e-6; 3.1831609299081804e-5 0.0 0.0 0.0 2.245507849040449e-6 7.742604079389396e-7 4.267172755509251e-7 7.179832119418029e-7 1.4917244716895488e-6; 6.719466798594014e-12 0.0 1.9394799891847033e-12 0.0 0.0 3.9459946560664304e-13 -2.189088856701118e-13 1.4495931905704426e-13 -1.995977644617104e-13; 8.738686976699377e-5 0.0 1.4308924997284852e-5 0.0 0.0 2.164678274237853e-6 -9.921590362950487e-7 2.7567305358555175e-7 1.297620435132939e-6; 0.00011009594620638243 -9.593294983943045e-6 0.0 0.0 0.0 9.916466541700414e-7 1.0719948014313807e-6 8.046307213017207e-7 9.397188047224155e-7; 1.562239427189192e-11 0.0 0.0 1.9955415528886664e-12 0.0 4.025776324082559e-13 -3.4352308810987445e-13 -1.8380252600371734e-13 3.7060740603122137e-13; 6.9750768071105136e-12 -9.010862769319926e-13 0.0 0.0 0.0 2.1886023438216987e-13 1.2471339364210016e-13 1.545799525518729e-13 3.7207905805036156e-13; 4.3854091648709995e-13 -5.887121153808954e-13 0.0 0.0 0.0 1.9838040773477743e-13 7.753809426415996e-14 -3.819674658058483e-14 -1.2823273556305367e-13; 2.4079749160257813e-12 -8.49673956851183e-13 0.0 0.0 0.0 2.677450979512516e-13 1.6843813396503088e-13 4.4710024137081967e-13 5.475352236888212e-13; 5.782416656366163e-5 -9.140664814401618e-6 0.0 0.0 0.0 1.2093516773937735e-6 -3.5743839328773873e-7 4.705418335953886e-6 5.379147404358124e-6; 1.336470758580894e-6 -1.991984693501133e-7 0.0 0.0 0.0 2.736766228820161e-8 -3.3622212239281206e-8 -4.6437780414221476e-8 -4.781041995971212e-9; 1.0953384035305765e-5 0.0 0.0 1.2734728717228898e-6 0.0 2.405575568064774e-7 2.899860980575437e-7 7.136754377110876e-7 9.560346021439193e-8; 0.0002556843413446567 0.0 0.0 0.0 1.116060357523205e-5 1.0064546902801248e-6 -1.829665805673801e-6 1.6755025815023165e-5 -1.3662049125994124e-6; 2.7626847237209078e-12 0.0 0.0 0.0 1.792302245174663e-13 2.1669597738148562e-13 2.986839702623451e-14 2.7977390707750354e-13 -5.288622615166496e-16; 0.0016029211718753022 -0.00010501477244095521 0.0 0.0 0.0 -1.1534730470506655e-5 5.23557965130314e-6 -2.2152404404008257e-5 -2.3830107382285413e-5; 3.71006791240236e-11 -3.530741918236315e-12 0.0 0.0 0.0 7.504901649097069e-13 3.236157829879302e-13 -2.467628029385893e-12 1.5021836541166613e-12; 0.0010309370733981962 0.0 6.997923637226633e-5 0.0 0.0 -5.1518109419758744e-6 -1.487492591662626e-5 -1.5144431408899104e-5 7.665276459865975e-6; 0.0001214855146234902 0.0 4.1184422635979e-5 0.0 0.0 3.580461399922311e-7 7.633707093997491e-7 1.0676632127660174e-5 4.98495860378787e-6; 3.6202243977818383e-12 0.0 0.0 7.168812199113003e-13 0.0 2.9107906883861463e-13 1.4048191807666657e-13 4.7789631955030884e-14 -1.288340175620528e-14; 0.0006061549415407359 0.0 0.0 4.885704564046799e-5 0.0 -7.780950855375987e-6 -4.85725720091784e-6 4.346757884043073e-6 -2.302972538733804e-5; 4.5186803194959686e-12 0.0 0.0 0.0 3.647970919736816e-13 2.6978598119086154e-13 5.353184425008888e-14 7.565335128891349e-13 -5.170096793043331e-14; 3.0551696890458774e-12 0.0 6.441979698376218e-13 0.0 0.0 2.523564824025204e-13 -3.543947399062934e-14 -2.5528718372130462e-14 8.865173664823694e-14; 5.729875979065012e-5 0.0 0.0 6.663177111241575e-6 0.0 6.462029503136736e-7 1.0921710504268573e-6 -1.1161760273748165e-6 -2.0871244756991324e-6; 0.00011185058633378183 0.0 0.0 0.0 5.324265226811885e-6 6.800641177213679e-7 -2.2828019008742876e-6 1.3455627491659578e-6 -2.0656234531072712e-6], [1.117942483486708e-8 0.0 0.0 0.0 -5.364613915382632e-8 6.920771967481711e-8 4.250723728965391e-8 1.2702074738767787e-8 8.785676933295826e-8; 4.151247651805683e-14 0.0 0.0 3.7219000343551807e-13 0.0 2.0788798174621555e-13 -3.9323890858447724e-13 -1.0382797620463938e-13 3.935761453976772e-13; 1.2293155219079823e-14 0.0 2.254783580453708e-12 0.0 0.0 3.987513309868713e-13 -3.279806740333673e-13 -1.5405324867332533e-13 3.3611204070314946e-14; 3.3269177842866357e-13 0.0 0.0 0.0 -3.0032682011842727e-13 2.2656075916066132e-13 1.0379036371403676e-12 -9.26664860973315e-14 -3.2904606260490325e-13; 2.098118269208708e-5 0.0 0.00012814646443009485 0.0 0.0 -1.0768917939623068e-5 -3.7455201564487126e-5 -3.480597940757576e-7 -2.037425208195869e-5; 1.2630512492640891e-14 0.0 0.0 1.1786671602637087e-13 0.0 2.1928349668847251e-13 -5.624246042426879e-15 -2.0620815275690588e-14 1.5936064803522525e-13; 1.7496963909807417e-6 0.0 3.521920838804665e-5 0.0 0.0 1.6642928750961613e-6 2.0197865223336586e-7 7.346553467172906e-7 1.532758324939066e-6; 1.342259011448283e-6 0.0 0.0 2.500072292720438e-6 0.0 8.752052322721561e-7 -5.113352444526096e-6 -1.9655387327186324e-7 -7.640051500036938e-8; -1.0679360132513914e-14 -1.7335468963993103e-13 0.0 0.0 0.0 2.4533423618478954e-13 -1.2581674797700628e-13 6.727727299871009e-14 1.270527974881275e-13; 2.8961315791101342e-15 0.0 0.0 0.0 -8.989751006932202e-14 2.2962735406931764e-13 1.1879978862856856e-13 2.937124826174833e-14 7.510786620241627e-14; 7.271905112677605e-15 0.0 8.611524880435687e-13 0.0 0.0 2.6611268227828097e-13 -1.1485440501306176e-13 -1.1027191085130971e-14 -6.094977211199621e-14; -1.0600416945906753e-14 0.0 0.0 9.938168053356787e-14 0.0 1.253526809210976e-13 -7.506046840175695e-14 -8.813984270413844e-14 1.438509832286218e-13; 6.09654183896057e-14 0.0 0.0 1.6666208697339875e-13 0.0 2.657643231375169e-13 -4.181732930906242e-13 -1.5304445123749415e-14 -5.332152151051653e-14; 2.311193347415922e-15 -7.297249220418882e-14 0.0 0.0 0.0 1.835651924729168e-13 -8.283841499487368e-14 1.3921872612919914e-14 1.0246002141216696e-13; 1.1732154142119903e-5 -9.166649145774943e-6 0.0 0.0 0.0 -7.786933656612072e-7 8.20522631421646e-6 -4.207190153213111e-7 5.551921838111736e-6; 3.1568328076582823e-6 0.0 0.0 1.2310710592734898e-5 0.0 5.6373061232064775e-6 1.863955570569576e-5 -1.414534164162027e-6 -4.73234676444311e-6; 6.643127021268146e-14 0.0 0.0 0.0 -3.632571026429759e-14 1.8411998433735012e-13 -1.1520692555143686e-13 -5.557201518961886e-15 -9.219969220586043e-15; 2.6272963615913033e-14 0.0 0.0 1.333201893115971e-13 0.0 1.7596511129680896e-13 2.493049711901734e-13 -4.172714084277654e-14 2.6397924054246103e-13; 3.8863340641234784e-14 0.0 0.0 0.0 -3.497843443697818e-14 1.773437756830951e-13 1.4668943800989875e-14 1.475863079610026e-14 -1.4059780739157617e-14; 5.989280215015456e-7 0.0 0.0 0.0 -2.605902922190306e-7 1.938262069728352e-7 -6.114460624732258e-7 -1.4077941389195132e-7 3.5523923172463363e-7; 1.792709965307905e-6 0.0 8.774081999013713e-6 0.0 0.0 1.1035187506729062e-6 -8.987215234067144e-7 -1.0064942662797661e-7 -5.947613476427653e-6; 1.0344936248862787e-13 0.0 0.0 1.2482042312323926e-13 0.0 2.3592535538341656e-13 -1.5044863574678261e-13 -2.7870992716513853e-14 1.1052126071901081e-13; 1.0056523588687262e-6 -1.4500930676188707e-6 0.0 0.0 0.0 4.661255071954798e-7 1.1117772815115522e-6 9.264316542831607e-7 1.7482445726626239e-6; 2.57885291946944e-13 0.0 0.0 0.0 -1.4238168687801785e-13 2.506271907405922e-13 -2.1749400459896389e-13 -1.5369557816090765e-13 1.1050988131184596e-13; 6.766469899178707e-6 0.0 2.3863131229386155e-5 0.0 0.0 7.842431819578476e-7 4.570387455726757e-6 2.2445892478894283e-8 4.1896474825296605e-6; -2.6812996346000074e-14 -7.239709917310453e-14 0.0 0.0 0.0 1.8502419042584988e-13 -5.517911245244963e-14 5.762633696621106e-15 1.5057862659495845e-13; 3.006436046428468e-13 -2.0831133726263308e-13 0.0 0.0 0.0 3.1267969427757115e-13 3.621781356688196e-13 8.715412751343833e-14 1.1051805397524055e-13; 7.788225778573726e-13 0.0 0.0 0.0 -1.724480592116763e-13 4.878939550650325e-13 -1.9409998670146086e-13 -3.038291285295391e-14 3.0859925848678355e-14; 4.572896573804719e-13 -4.593627958206013e-13 0.0 0.0 0.0 3.634943250683633e-13 -5.293685127107558e-13 5.5546546663627473e-14 1.2153514938091164e-13; 6.912986664036124e-14 0.0 9.913451547841068e-13 0.0 0.0 2.9578919567268766e-13 3.2847734548940685e-14 3.093659366511909e-14 2.5173023484716323e-13; 7.329027431470947e-5 0.0 0.0 0.0 -1.1298306672944778e-5 -8.652542475306217e-6 -1.8192480773171624e-5 -5.270139242360272e-6 1.0609674593416265e-5; 1.781303966878775e-5 0.0 0.0 1.4238447340768013e-5 0.0 -4.933754268113736e-6 -4.531141555248424e-6 3.256899139225685e-6 2.122088386925877e-5; 5.606045613293088e-6 0.0 0.0 3.2449665157219224e-6 0.0 1.5110651075822682e-6 3.1951760775675636e-6 -1.6767055939979556e-6 -5.237873207656869e-7; 3.459847987161683e-6 0.0 0.0 1.5944007285867245e-6 0.0 5.402142128032911e-7 -3.2849124904474407e-7 1.483308699822954e-7 9.454502360145513e-7; 6.857357320218603e-14 0.0 5.798299517933675e-13 0.0 0.0 2.3910394590512424e-13 1.1942292109326306e-13 1.8057535704463823e-14 1.0766015804094593e-13; 5.238027723947577e-13 0.0 0.0 0.0 -1.6367612803126076e-13 3.3161115226187484e-13 1.107484987288999e-12 7.147538806225683e-14 -7.436734522057168e-15; 8.605309275444047e-6 0.0 2.4812431023081144e-5 0.0 0.0 -4.768189297547878e-7 -3.8090946067882415e-6 -5.676476126284464e-7 3.058445835080978e-6; 2.0566085478298324e-13 0.0 0.0 0.0 -8.836376788711749e-14 2.3987632930383293e-13 -9.51071600732444e-14 6.500363097257065e-14 -1.6027951645581994e-14; 5.507263153933736e-5 0.0 0.0 0.0 -1.0273708393443619e-5 -1.147022606523501e-5 -6.674525135696189e-6 6.751083145178768e-7 7.127693097596048e-7; 7.392091497459732e-14 0.0 0.0 1.9348697556174264e-13 0.0 2.51789168571937e-13 -2.9933883399560915e-13 -4.949900110195772e-14 3.3024824033670224e-13; 1.4371122347458876e-13 -1.607966369423948e-13 0.0 0.0 0.0 2.3005487550438333e-13 2.6952523555162713e-14 -5.4226083361742825e-14 -6.833600282196401e-14; 7.204006625575845e-14 -1.1150034542642483e-13 0.0 0.0 0.0 2.2602312750081518e-13 2.9031818002825063e-13 4.772777958518084e-14 1.755891303132855e-13; 6.772979590624859e-14 0.0 1.2776080654953053e-12 0.0 0.0 2.728046824133537e-13 -1.1118050041777897e-13 3.6797414777299994e-14 2.0499191655505107e-13; 4.2968056666572096e-13 -4.767270676336295e-13 0.0 0.0 0.0 3.427346495090523e-13 3.292794697990126e-13 2.0943916367328023e-13 5.234023301343806e-13; 3.662388456770138e-13 -3.1517455149377e-13 0.0 0.0 0.0 3.7953070567720166e-13 -4.006580665190756e-13 1.3727124990747798e-14 1.320304421722177e-13; 4.198708941564687e-6 -2.3861291159291974e-6 0.0 0.0 0.0 1.160126729132408e-6 -7.29469454830992e-7 1.0066243012602583e-6 -1.8834888619569875e-6; 1.7691307776602426e-5 0.0 0.0 0.0 -5.598645097579055e-6 2.347565772450476e-6 -1.3725446879535004e-5 2.3364404384408808e-6 9.467920179108867e-6; 1.511357313702735e-5 0.0 0.0 1.7728870758156565e-5 0.0 -2.5359595258036932e-6 -9.514732278403863e-6 7.188428333615982e-6 2.3377721064559244e-5; 4.179171684529932e-6 0.0 0.0 3.0711429788806724e-6 0.0 8.865673648827507e-7 3.5917445459318226e-6 -1.0168934645938865e-6 8.793469360139361e-9; 3.8004998326648727e-7 0.0 0.0 6.348672895266526e-7 0.0 1.8399704068523959e-7 -1.4321642006943779e-6 -2.0762867995060407e-7 5.75900251900973e-7; 1.456483894331741e-13 0.0 0.0 2.5278411070303717e-13 0.0 2.463092848726902e-13 -5.312275241584437e-13 -1.4219489367692305e-14 4.644971448976188e-13; 1.9500019453746167e-13 0.0 0.0 0.0 -6.879582844273746e-14 2.0628394637170943e-13 3.755262098693318e-13 -3.395250406483539e-14 1.3549777915790567e-13; 1.926723411198489e-13 0.0 0.0 4.738699093087539e-13 0.0 4.802247973519518e-13 -6.505078151652094e-13 3.698956180610492e-14 -2.0967692572323736e-13; 6.453487797036987e-6 0.0 0.0 0.0 -1.9899017947401227e-6 -8.044484888772306e-7 4.436602092833066e-6 1.5966637079457565e-7 -5.792082209519946e-6; 9.110846072189817e-14 0.0 0.0 0.0 -7.263990688283042e-14 1.9450179056570934e-13 -6.418692815411238e-14 -2.2233189295333345e-15 -4.5061468989895184e-14; 8.140362771607924e-13 0.0 0.0 0.0 -1.8396786748177433e-13 3.5861926073026154e-13 -1.8731095422409459e-13 -9.407074642376138e-14 3.364885585444246e-14; 5.689538031475591e-6 0.0 0.0 7.450127621374659e-6 0.0 1.7396362502451276e-6 7.403650854322234e-6 6.647912759327213e-7 7.915994948039267e-6; 1.3791392474441504e-6 0.0 0.0 0.0 -6.60517044303634e-7 8.826512920367249e-7 -1.2197024690234193e-6 -3.1013699257551646e-8 1.4279961269677627e-6; 2.8618034132580837e-13 0.0 2.181022908593163e-12 0.0 0.0 4.68785315895896e-13 3.8215793815901877e-13 8.029792466729416e-14 -1.0686086673482369e-13; 3.6388724370534896e-6 0.0 1.6090959118138948e-5 0.0 0.0 2.796113935040076e-6 1.6187196058198764e-6 8.214399253650797e-7 1.5064968476741635e-6; 5.50634450686104e-6 -2.7258571324538466e-6 0.0 0.0 0.0 1.0353910795728177e-6 -2.5481334839102384e-6 4.744997506656776e-7 5.597263917816185e-7; 6.705253832934126e-13 0.0 0.0 5.329215768841866e-13 0.0 4.4071458293385247e-13 8.225068357815367e-13 -9.031161812136305e-14 4.2099841139680154e-13; 2.894581381342994e-13 -2.560363732213509e-13 0.0 0.0 0.0 2.342776290745515e-13 -2.5156971934060514e-13 7.471104880038073e-14 3.273148141045997e-13; 1.1987501504118841e-14 -1.672777832182769e-13 0.0 0.0 0.0 2.1947825900681157e-13 -1.7843579112753993e-13 -3.423874906546135e-16 -1.2951411157454256e-13; 1.2316005168830144e-13 -2.414279785433138e-13 0.0 0.0 0.0 2.822665595591604e-13 -3.8078133335760297e-13 8.347856155339903e-14 4.890044009213103e-13; 2.358731567844733e-6 -2.597245932853149e-6 0.0 0.0 0.0 1.272164806761346e-6 1.880731063683847e-7 6.674493095870049e-7 4.851417256727816e-6; 5.040737940837843e-8 -5.660063297967276e-8 0.0 0.0 0.0 2.9245260608302235e-8 7.089358704139181e-8 -1.2405627375441164e-8 -3.968896755239723e-9; 6.354138067100022e-7 0.0 0.0 3.400887192428508e-7 0.0 2.6970205066715154e-7 -6.311270886308612e-7 4.171805256612933e-8 1.4838655156987382e-7; 1.2177720742745167e-5 0.0 0.0 0.0 -3.282896067055364e-6 9.573567554211957e-7 4.5598110495605254e-6 1.8792832605455028e-6 -1.083276122310526e-6; 1.344635067529565e-13 0.0 0.0 0.0 -5.272064321607324e-14 2.484795744310188e-13 -8.268195222141163e-14 7.066909309016832e-14 3.0474643253595774e-15; 7.781033240909849e-5 -2.983909771880471e-5 0.0 0.0 0.0 -1.301889604382835e-5 -5.940535039261432e-6 -5.69952337866685e-6 -2.021942244423407e-5; 1.7537814367924106e-12 -1.0032317422519678e-12 0.0 0.0 0.0 8.285296592661103e-13 -7.99644196220658e-13 -3.894037175399245e-13 1.3493495621628171e-12; 5.210046695522143e-5 0.0 7.869445341270478e-5 0.0 0.0 -5.9924350483396954e-6 3.3596175642023354e-5 -1.5341265041115723e-6 8.826559169852377e-6; 6.9170351131656794e-6 0.0 4.6313532362874394e-5 0.0 0.0 5.7588221330681444e-8 -3.419974236865031e-6 2.9688023540959647e-6 5.458468397682994e-6; 1.8198844977290798e-13 0.0 0.0 1.9144751438563708e-13 0.0 3.286056743844782e-13 -3.310445469307781e-13 9.738336632154614e-15 -1.25181023902333e-15; 3.203947520744042e-5 0.0 0.0 1.3047572859072164e-5 0.0 -8.929137589933069e-6 1.1788445535085451e-5 -9.287700136129622e-7 -2.035538356381806e-5; 1.8125927749721953e-13 0.0 0.0 0.0 -1.0730521252196098e-13 2.977033690082398e-13 -1.1572976896500162e-13 1.2638563707970146e-13 -3.553178168157875e-14; 1.6456078132141277e-13 0.0 7.244264120898112e-13 0.0 0.0 2.876254932734065e-13 1.0115539341724682e-14 4.051330897249852e-15 9.756694715613246e-14; 2.8753181236626695e-6 0.0 0.0 1.7794422010612934e-6 0.0 7.360130349846673e-7 -2.538907596057629e-6 2.688371912947059e-7 -1.793840839422498e-6; 4.900715451915413e-6 0.0 0.0 0.0 -1.5661347753494563e-6 6.863146407434917e-7 4.9339666160931725e-6 3.070863370587812e-7 -1.6790007929087978e-6])
realised ┼ Bool: true
ppy ┴ Int64: 1
Both decompositions are exact: the systematic, idiosyncratic and unattributed parts sum to the portfolio's own volatility and return, and the per-factor contributions sum to the systematic part.
function attribution_residuals(a) return (a.sys.vol_contrib + a.idio.vol_contrib + a.unattr.vol_contrib - a.total.vol_contrib, a.sys.mu_contrib + a.idio.mu_contrib + a.unattr.mu_contrib - a.total.mu_contrib, a.sys.pct_var + a.idio.pct_var + a.unattr.pct_var - 1, sum(a.fbd.vol_contrib) - a.sys.vol_contrib, sum(a.fmbd.vol_contrib) - a.sys.vol_contrib)endresiduals = [attribution_residuals(predicted), attribution_residuals(realised)]pretty_table(DataFrame("Decomposition" => ["Predicted", "Realised"], "sigma parts - sigma" => [r[1] for r in residuals], "mu parts - mu" => [r[2] for r in residuals], "variance shares - 1" => [r[3] for r in residuals], "factors - systematic" => [r[4] for r in residuals], "families - systematic" => [r[5] for r in residuals]); formatters = [numfmt], title = "The decomposition closes")pretty_table(DataFrame("Component" => ["Systematic", "Idiosyncratic", "Unattributed", "Total"], "Predicted sigma contribution" => [predicted.sys.vol_contrib, predicted.idio.vol_contrib, predicted.unattr.vol_contrib, predicted.total.vol_contrib], "Predicted % variance" => [predicted.sys.pct_var, predicted.idio.pct_var, predicted.unattr.pct_var, 1.0], "Realised sigma contribution" => [realised.sys.vol_contrib, realised.idio.vol_contrib, realised.unattr.vol_contrib, realised.total.vol_contrib], "Realised mu contribution" => [realised.sys.mu_contrib, realised.idio.mu_contrib, realised.unattr.mu_contrib, realised.total.mu_contrib]); formatters = [numfmt], title = "Where the book's risk and return came from")pretty_table(DataFrame("Family" => rr.fam, "Factor" => rr.nf, "Predicted sigma contribution" => predicted.fbd.vol_contrib, "Predicted % variance" => predicted.fbd.pct_var, "Realised sigma contribution" => realised.fbd.vol_contrib); formatters = [numfmt], title = "By factor") The decomposition closes
┌───────────────┬─────────────────────┬───────────────┬─────────────────────┬──────────────────────┬───────────────────────┐
│ Decomposition │ sigma parts - sigma │ mu parts - mu │ variance shares - 1 │ factors - systematic │ families - systematic │
│ String │ Float64 │ Float64 │ Float64 │ Float64 │ Float64 │
├───────────────┼─────────────────────┼───────────────┼─────────────────────┼──────────────────────┼───────────────────────┤
│ Predicted │ -1.735e-18 │ 0.0 │ 0.0 │ -1.735e-18 │ -1.735e-18 │
│ Realised │ 0.0 │ -1.084e-19 │ -2.22e-16 │ -3.469e-18 │ -3.469e-18 │
└───────────────┴─────────────────────┴───────────────┴─────────────────────┴──────────────────────┴───────────────────────┘
Where the book's risk and return came from
┌───────────────┬──────────────────────────────┬──────────────────────┬─────────────────────────────┬──────────────────────────┐
│ Component │ Predicted sigma contribution │ Predicted % variance │ Realised sigma contribution │ Realised mu contribution │
│ String │ Float64 │ Float64 │ Float64 │ Float64 │
├───────────────┼──────────────────────────────┼──────────────────────┼─────────────────────────────┼──────────────────────────┤
│ Systematic │ 0.01128 │ 0.9509 │ 0.01105 │ 0.0008088 │
│ Idiosyncratic │ 0.0005832 │ 0.04914 │ 0.0002894 │ 3.906e-6 │
│ Unattributed │ -9.513e-14 │ -8.017e-12 │ 0.0003715 │ 6.797e-5 │
│ Total │ 0.01187 │ 1.0 │ 0.01171 │ 0.0008806 │
└───────────────┴──────────────────────────────┴──────────────────────┴─────────────────────────────┴──────────────────────────┘
By factor
┌──────────┬──────────────────────┬──────────────────────────────┬──────────────────────┬─────────────────────────────┐
│ Family │ Factor │ Predicted sigma contribution │ Predicted % variance │ Realised sigma contribution │
│ String │ String │ Float64 │ Float64 │ Float64 │
├──────────┼──────────────────────┼──────────────────────────────┼──────────────────────┼─────────────────────────────┤
│ market │ market │ 0.01061 │ 0.8939 │ 0.01045 │
│ industry │ industry=Energy │ -0.0001961 │ -0.01652 │ -0.0001697 │
│ industry │ industry=Financials │ 0.0003571 │ 0.0301 │ 0.0003217 │
│ industry │ industry=Health Care │ 0.0003372 │ 0.02841 │ 0.0002903 │
│ industry │ industry=Technology │ 0.0001283 │ 0.01081 │ 0.0001189 │
│ style │ size │ -4.09e-5 │ -0.003447 │ -3.817e-5 │
│ style │ value │ 7.374e-7 │ 6.214e-5 │ 8.5e-6 │
│ style │ earnings_yield │ 7.047e-5 │ 0.005939 │ 4.296e-5 │
│ style │ liquidity │ 1.924e-5 │ 0.001621 │ 1.681e-5 │
└──────────┴──────────────────────┴──────────────────────────────┴──────────────────────┴─────────────────────────────┘Where to go next
- Cross-sectional factor model through a Pipeline reaches the very same weights with the panel entering as a Pipeline Data Slot.
- Reading a Return Forecast before an optimiser sees it scores the
rfeof §2 out of sample, against what actually happened next, and compares it with another. - Factor priors is the time-series counterpart of §2.
- Uncertainty sets covers the box, ellipsoidal and norm-ball shapes the orthogonal sets of §4 specialise.
- Factor exposure constraints is the full grammar behind the one-line mandate of §5.
This page was generated using Literate.jl.