SQX Fund Liquidity: Technical Methodology

Download as Word (.docx)

Fund liquidity takes several forms. An ETF investor sells on an exchange. An open-end mutual fund investor redeems at NAV. An interval fund investor waits for a repurchase window. A unit investment trust may depend on a sponsor bid or, ultimately, on termination.

A blended turnover score conceals the underlying exit mechanisms. We assign exit_channel first, then measure the facts that govern the assigned channel: daily market capacity for an exchange-traded fund, settlement terms for a NAV redemption, window timing and observed capacity for an interval fund, bid evidence for a sponsor-supported market, and remaining term where termination provides the exit.

This document describes the exit-channel method — what the feed measures, where the inputs come from, how the estimates are calculated, and which evidence supports the published outputs.

________________

What the feed measures

The feed responds to the holder's question:

> I own this share class. Through what channel can I exit, how long should that exit take, and what would an exchange exit cost at my position size under stressed conditions?

The scope is the holder's exit through the fund share class. Portfolio-liquidation analysis covers the manager's underlying investments instead. A large open-end fund may own assets that would take months to sell while still honoring an ordinary shareholder redemption at NAV on its normal settlement cycle. An exchange-traded fund can own liquid assets while its shares trade thinly on the secondary market.

A daily row represents a fund share class. fund_isin is the share class's ISIN and the row's key. Static facts such as the fund name, ticker, family, vehicle type and domicile live exclusively in the Fund Reference feed, keyed on fund_isin as well. portfolio_id joins the share class to the portfolio its sibling classes share, and joins directly to the Portfolio Holdings feed.

The key column is fund_isin, the share class's ISIN, under a label consistent across share-class files. Delivered rows therefore include a direct join identifier.

________________

How to read a row

The published columns work in five groups:

The Fund Liquidity Data Dictionary owns the datatype, nullability, controlled vocabulary and column-level definition for the fields. The sections below explain how those fields combine in calculation and interpretation.

________________

The exit-channel model

The vehicle sets the normal exit mechanism. The resulting exit_channel governs which measures on a row have meaning.

Exit channelTypical vehiclesWhat governs the exitPrimary delivered measures
exchangeETFs, ETPs and listed closed-end fundsTradable dollar volumeDaily capacity, liquidity tier, stressed cost curve
nav_redemptionOpen-end mutual fundsRedemption at NAV and settlementTypical exit days, tier, at-NAV cost record
periodic_tenderInterval and repurchase-offer fundsUpcoming window and capacity per windowWindow date, observed window capacity, cadence, tier
sponsor_marketUITs with a sponsor-supported secondary marketWhether a current bid existsBid observation, typical exit days under a live bid, tier
terminalMatured trustsCompleted termination dateDays since termination, tier
unclassifiedVehicle evidence pendingReview pendingunrated; status output

exit_days_typical applies where duration stays independent of position size. Exchange exits publish an empty exit_days_typical because a $25,000 position and a $25 million position clear over different day counts; exit_capacity_usd_per_day and the exit_dtl_* curve supply the figure.

Settlement follows a T+1 convention throughout: NAV redemptions, observed sponsor bids, and the final settlement step after a tender window.

________________

Source data

As of analysis_date, the model draws on the newest source data that satisfies its date and coverage rules:

net_assets stays in the currency the fund reports, and currency records that currency. fx_rate gives units of currency per U.S. dollar. Dollar capacity, the six fixed position sizes and the tier thresholds resolve in U.S. dollars. A missing required rate yields fx_unavailable and an empty dollar measure.

Exchange evidence refreshes daily. N-PORT flow evidence refreshes on arrival of a filing, so NAV-redemption measures typically step monthly. Tender evidence follows its observed offer schedule. capacity_cadence records the refresh frequency of a source.

Exchange exits

Daily capacity

exit_capacity_usd_per_day is the 90-session arithmetic mean share volume multiplied by the U.S.-dollar share price selected under the pricing-date rules. It measures the market's observed average daily dollar volume. The position-size calculation applies a size-dependent participation rate to stress_adv_usd.

Exchange-volume averaging

The volume averages draw daily share volume from the combined U.S. market series. That series already merges the exchanges, so a fund contributes a volume observation per pricing date.

The averaging periods follow the combined U.S. market calendar: the 20 or 90 newest distinct dates in the series. The arithmetic mean runs over the fund's reported share-volume observations inside the period. A fund with volume observations on 40 of the newest 90 market dates therefore has a 40-observation mean. Observations receive equal weight.

``text N-session mean share volume = sum(share volume on observed fund dates within the newest N market dates) / count(observed fund dates within the newest N market dates) ``

The exchange-volume history requirement is satisfied once the fund contributes share-volume observations on 90 market dates. liquidity_status also reflects the applicable filing, net_assets and price inputs. liquidity_tier applies its separate observation thresholds: fewer than 45 observations produces impaired, while deep requires at least 90.

Stressed market inputs

The cost calculation uses roughly 90 trading days of consolidated market evidence gathered across the preceding 135 calendar days:

At least 60 dollar-volume observations and 60 valid returns are required. While history accumulates, exit_cost_bps_* and exit_dtl_* remain empty, and exit_cost_status identifies the pending input.

Position-size estimates

The feed calculates cost and exit time at six fixed position sizes: $10,000, $100,000, $1 million, $10 million, $100 million and $1 billion.

For position size (S), let (A) equal the published stress_adv_usd and let (\sigma) equal the published daily_return_vol:

```text participation(S) = 0.20 / (1 + S / (5 × A))

exit_days(S) = S / (participation(S) × A)

cost_bps(S) = 5 + 10,000 × 1.0 × sigma × sqrt(S / A) + 10,000 × 0.5 × sigma × sqrt(exit_days(S)) ```

The participation rule is deliberately nonlinear. A small order may use as much as 20% of a stressed day's volume; larger orders receive progressively smaller participation rates as signaling and market-movement risk rise. An order five stressed-volume days deep receives half the maximum participation rate.

The cost has three components: a five-basis-point minimum for spread and fees; an estimated price effect that grows with the square root of position size relative to stress_adv_usd; and a price-risk allowance that grows with daily_return_vol and the square root of exit time. The impact coefficient of 1.0 and risk coefficient of 0.5 are declared model conventions. These coefficients give funds a consistent basis for comparison; representative data comparing estimated cost with completed executions can support future refinement.

Any fixed position size publishes both exit_dtl_*, in trading days, and exit_cost_bps_*, in basis points of the position value.

Calculation boundaries and interpolation

The model publishes results within two evidence-supported boundaries:

A holder of an open-end fund submits redemptions to the fund at NAV. The fund's historical redemption flow measures aggregate activity, and reading it as daily holder capacity overstates a holder's exit horizon by years.

So we publish:

``text exit_days_typical = 1 modeled cost = 0.00 bps at NAV ``

The fixed position sizes populate at T+1 and 0.00 basis points up to net_assets; larger positions return n/a: exceeds fund size. Zero here means execution at NAV ahead of fund-specific redemption fees, anti-dilution adjustments, taxes and account-level charges. Clients fold in the listed fund- and account-specific terms from their own records.

Historical flows evidence stress on the redemption mechanism. liquidity_tier draws on gross redemptions, three-month net outflows and filing freshness.

________________

Periodic tenders

For an interval fund, the exit runs through the next expected repurchase window and the share of net assets cleared per window.

per_window_capacity_pct is the mean dollar amount repurchased across the four newest positive offer periods divided by current net assets. Observed repurchases already reflect proration, so the cleared amount serves better than the maximum percentage a prospectus advertises.

next_liquidity_window_date starts from the newest observed offer month and advances on a 91-day cadence until it reaches the first expected window falling on or after analysis_date. The result is an expected date derived from observed repurchase activity.

exit_days_typical is the wait until next_liquidity_window_date plus a settlement day. A position larger than per_window_capacity_pct of net assets spans several windows. For a position equal to (q)% of fund net assets and capacity (c)% per window:

```text windows required = ceiling(q / c)

estimated exit days = wait until next window + (windows required - 1) × 91 + settlement day ```

periodic_tender publishes next_liquidity_window_date, per_window_capacity_pct and the quarterly capacity_cadence directly, keeping the repurchase limit visible.

Within a sponsor-supported market, marks and bids arrive as separate observations. A sponsor bid dated within 35 days sets sponsor_bid_observed to 1 and exit_days_typical to T+1. A bid older than 35 days, or a bid still pending, sets sponsor_bid_observed to 0, leaves exit_days_typical empty, and puts the tier at thin.

Within a terminal channel, the scheduled termination date lies in the past. days_to_termination runs negative, exit_days_typical stays empty, and liquidity_tier reads n/a.

sponsor_market publishes a bid observation; terminal publishes a term date. Continuous capacity evidence supports the position-size cost curve along the exchange channel.

Liquidity tiers

liquidity_tier is channel-specific. deep on an exchange row or a NAV-redemption row marks the strongest observed state for the fund's exit_channel.

Rules apply worst-first, so the first matching condition wins.

Exchange: deep, normal, thin, impaired

The tier calculation takes the lower of the 20-session and 90-session average daily dollar volumes. Both averages follow the composite-calendar method above, and the lower value lets recent weakness govern the result.

TierRule
impairedCapacity below $50,000 per day, or fewer than 45 observations in the 90-day history
thinCapacity from $50,000 to below $1 million per day
deepCapacity of at least $10 million per day with at least 90 observations
normalEverything between thin and deep

Populated 20-session and 90-session histories supply the primary tier input. While those histories accumulate, a populated stress_adv_usd serves as a conservative fallback. A row with the measures still pending receives unrated.

Three-month outflow is the mean monthly value of (sales - redemptions) / net assets; negative values mark outflows.

TierRule
impairedLatest monthly redemptions exceed 25% of net assets
thinThree-month mean outflow falls below -5.5% per month, or the newest filing exceeds 365 days of age — the age at which holdings_status reads stale_filing
normalThree-month mean outflow falls below -3.0% per month, or the newest NAV observation exceeds five weekday sessions of age
deepFlow, filing and NAV freshness all clear the strongest thresholds

Complete filing, net-asset and flow evidence supports a tier. An input gap produces unrated.

Periodic tender: active, stressed, dormant

TierRule
dormantThe newest material repurchase window exceeds 12 months of age
stressedA material window exists, with observed capacity pending or below 1.30% of net assets per window
activeA material window exists and observed capacity reaches 1.30% per window or better

A repurchase month counts as material when its redemptions exceed half the mean redemption amount across the observed series. Complete filing evidence supports a tender tier; an input gap produces unrated.

A sponsor market reads normal when sponsor_bid_observed is 1 and, where a termination date exists, at least 252 calendar days remain. sponsor_bid_observed of 0, or a remaining term under 252 days, produces thin. A terminal row reads n/a; an unclassified channel reads unrated.

Statuses, flags and data gaps

An empty measure records a gap in data or methodology. A measured zero appears explicitly as 0 or 0.00.

liquidity_status describes the state of the channel inputs. Its controlled values separate a completed observation from the no_filing, net_assets_unknown, awaiting_adv_history, no_flow_data, negative_flow, fx_unavailable, no_current_mark, sponsor_priced and matured conditions.

exit_cost_status describes the cost-curve evidence separately:

The columns that bear the evidence supply a row's qualifying conditions directly: next_liquidity_window_date for an approaching repurchase window, sponsor_bid_observed for an active bid, days_to_termination for a known term date, mark_asof and staleness_days for ageing evidence, liquidity_status and exit_cost_status for a short volume history, and outflow_pct for the size of an outflow — at whatever threshold your own mandate sets.

data_source, data_source_date and staleness_days identify the holdings source, its date and its age. holdings_status gives the linked portfolio's state: published, stale_filing, no_filing or not_required. Liquidity and holdings are evaluated independently, so valid exchange or contractual exit evidence survives a holdings gap.

________________

Reproducibility and controls

Identical dated inputs and configuration produce an identical row. Curve values are closed-form calculations, and tier predicates are fixed thresholds. exit_dtl_* reads n/a: exceeds fund size when the grid position exceeds net_assets; it reads >250d when calculated exit time runs past 250 trading days. Either token produces an empty exit_cost_bps_*. Daily reruns replace the row keyed to that analysis_date.

Enforcement happens where the delivery is built:

These controls are mechanical and run as part of file construction.

Methodological limitations

The exchange cost curve is a model estimate built for risk analysis. Executable quotes come from the venue. The estimate assumes historical stressed volume and volatility remain informative, with declared portfolio-wide impact and horizon coefficients.

The NAV model covers the ordinary redemption mechanism. Clients may layer in fund-specific fees, anti-dilution provisions, gates, taxes and account restrictions from their own records. next_liquidity_window_date is projected from observed cadence until a formal future window becomes available. sponsor_bid_observed draws on a 35-day evidence window and refreshes with the analysis_date.

The tier vocabularies support comparison within an exit_channel. Clients may define a cross-channel aggregation method while preserving exit_channel.

The methodology measures fund-share liquidity. Portfolio holdings ship separately for look-through; the holder-exit curve and tier derive from share-class exit evidence. The feed is descriptive. Investment, trading and credit decisions remain with the client.

________________

For field order, datatypes and controlled values, see the Fund Liquidity Data Dictionary. Questions about a particular fund or an observed result are welcome; the useful test of a methodology is whether it explains the row on your screen.

Send your fund list. We return the underlying data: holdings, exposure, cost, liquidity, management.

Talk about coverage