From d1e85026bfe0f9e52fe08775bcdfd7e790f10003 Mon Sep 17 00:00:00 2001 From: Greg Pomerantz Date: Thu, 27 Aug 2026 22:24:12 -0400 Subject: [PATCH] CEF pass: universe (SEC report, 973 -> 295 listed) + stage 1 screen + stage 2a character fundlab/cef_universe.py: SEC 'Closed-End Fund Information' report (973 active CEFs) + company_tickers CIK join -> 295 listed common classes (preferreds and 6(c)-converted companies flagged). Supersedes the N-2 full-index approach (N-2/A annual updates + 404ing index paths). Prices via goget. fundlab/cef_screen.py: 290 screened - t5/t12, vol5, maxdd5, the 5 crash episodes, 12m payout proxy. Energy/midstream CEFs (EMO +305%, SRV +234%, NML +232%) top return AND crash resilience; Voya Dividend-Premium series (IGD maxDD -16%); EM CEFs volatile + 14-24% dist; long-dur munis -26..-42%. fundlab/cef_character.py: 50-fund shortlist, 35-sleeve character + crude tax_arb = character x (upside + 0.4 x vol). Tests: 6 new cef checks (105 total). RESEARCH.md: CEF form facts (N-2ASR, N-PX, N-23C-3A, BDC caveats) + remaining stage 2b work. --- adx-split.csv | 2 + aef-split.csv | 2 + asa-split.csv | 2 + brw-split.csv | 2 + bto-split.csv | 3 + clm-split.csv | 3 + crf-split.csv | 3 + evg-split.csv | 2 + fundlab/RESEARCH.md | 58 + fundlab/cef_character.json | 1270 +++++++ fundlab/cef_character.py | 116 + fundlab/cef_screen.json | 6977 ++++++++++++++++++++++++++++++++++++ fundlab/cef_screen.py | 137 + fundlab/cef_universe.json | 2657 ++++++++++++++ fundlab/cef_universe.py | 159 + fundlab/goget_cef.log | 137 + fxby-split.csv | 2 + grf-split.csv | 2 + herz-split.csv | 3 + iaf-split.csv | 2 + kf-split.csv | 3 + mci-split.csv | 3 + mxf-split.csv | 2 + nro-split.csv | 2 + peo-split.csv | 2 + rvt-split.csv | 2 + saba-split.csv | 2 + swz-split.csv | 2 + tests/test_fundlab.py | 35 + tyg-split.csv | 2 + utf-split.csv | 2 + vlt-split.csv | 2 + ztr-split.csv | 2 + 33 files changed, 11600 insertions(+) create mode 100644 adx-split.csv create mode 100644 aef-split.csv create mode 100644 asa-split.csv create mode 100644 brw-split.csv create mode 100644 bto-split.csv create mode 100644 clm-split.csv create mode 100644 crf-split.csv create mode 100644 evg-split.csv create mode 100644 fundlab/cef_character.json create mode 100644 fundlab/cef_character.py create mode 100644 fundlab/cef_screen.json create mode 100644 fundlab/cef_screen.py create mode 100644 fundlab/cef_universe.json create mode 100644 fundlab/cef_universe.py create mode 100644 fundlab/goget_cef.log create mode 100644 fxby-split.csv create mode 100644 grf-split.csv create mode 100644 herz-split.csv create mode 100644 iaf-split.csv create mode 100644 kf-split.csv create mode 100644 mci-split.csv create mode 100644 mxf-split.csv create mode 100644 nro-split.csv create mode 100644 peo-split.csv create mode 100644 rvt-split.csv create mode 100644 saba-split.csv create mode 100644 swz-split.csv create mode 100644 tyg-split.csv create mode 100644 utf-split.csv create mode 100644 vlt-split.csv create mode 100644 ztr-split.csv diff --git a/adx-split.csv b/adx-split.csv new file mode 100644 index 0000000..c5726cf --- /dev/null +++ b/adx-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2000-10-20,3:2 diff --git a/aef-split.csv b/aef-split.csv new file mode 100644 index 0000000..f695356 --- /dev/null +++ b/aef-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +1995-07-17,2:1 diff --git a/asa-split.csv b/asa-split.csv new file mode 100644 index 0000000..1252da1 --- /dev/null +++ b/asa-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2010-05-04,3:1 diff --git a/brw-split.csv b/brw-split.csv new file mode 100644 index 0000000..d10c51e --- /dev/null +++ b/brw-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2022-05-20,1:2 diff --git a/bto-split.csv b/bto-split.csv new file mode 100644 index 0000000..07b9c70 --- /dev/null +++ b/bto-split.csv @@ -0,0 +1,3 @@ +Date,Stock Splits +1997-12-02,4:1 +2008-12-30,1:4 diff --git a/clm-split.csv b/clm-split.csv new file mode 100644 index 0000000..1ef8881 --- /dev/null +++ b/clm-split.csv @@ -0,0 +1,3 @@ +Date,Stock Splits +2008-12-23,1:4 +2014-12-29,1:4 diff --git a/crf-split.csv b/crf-split.csv new file mode 100644 index 0000000..de87dcd --- /dev/null +++ b/crf-split.csv @@ -0,0 +1,3 @@ +Date,Stock Splits +2008-12-23,1:2 +2014-12-29,1:4 diff --git a/evg-split.csv b/evg-split.csv new file mode 100644 index 0000000..118b4f1 --- /dev/null +++ b/evg-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2019-12-27,999649:1000000 diff --git a/fundlab/RESEARCH.md b/fundlab/RESEARCH.md index 7ee4720..75c873a 100644 --- a/fundlab/RESEARCH.md +++ b/fundlab/RESEARCH.md @@ -732,3 +732,61 @@ swing, so volatility is the right selection variable. Refinements: identical (different holdings/NAV) - the standard harvest-and-swap is safe; the 250-candidate universe makes a like-for-like substitute usually available. + +### CEF pass (2026-08-27) +**Universe** (fundlab/cef_universe.py): the SEC's official +"Closed-End Fund Information" report (ALL active 1940-Act CEFs; 2026 +file = 973; sec.gov/files/investment/data/other/closed-end-fund- +information/closed-end-investment-company-.csv - hyphenated +filenames 2024+, underscored before). CIK join with +company_tickers.json -> 295 listed common-class tickers (hyphenated +preferred series dropped; 668 small/dark/OTC funds have no listed +ticker; several 6(c)-converted "CEFs" are now operating companies - +Powerlaw, RoboStrategy, C1 Fund, Foxby - excluded). The N-2 +full-index approach was abandoned: annual updates file as N-2/A, and +full-index paths 404 for newer filings; the SEC report is the whole +active population and is one download. + +CEF form facts learned: +- CEFs file NPORT-P (same format as open-end - xcheck.py reuses) +- shareholder reports: N-CSR/N-CSRS AND/OR N-2ASR (rocdetect must try both) +- N-PX proxy = CEF signal (open-end funds have no boards) +- N-23C-3A/-2 = Rule 23c-3 repurchase-offer (tender) notifications - common +- BDCs also file N-2; their names don't contain "Business Development" + (Ares Capital Corp etc) - detect via form history (10-K vs N-2ASR) +- Yahoo instrumentType for CEFs is usually EQUITY - do NOT apply the + open-end MUTUALFUND filter +- CEF price = MARKET price (premium/discount on top of NAV); Adj Close + includes reinvested distributions, so the payout proxy works + +**Stage 1** (fundlab/cef_screen.py): 290/295 screened (goget prices; +phd/unid/uniu 404). Stats: t5/t12, vol5, maxdd5, the 5 crash +episodes via drawdown.fund_windows, 12m payout proxy, n_pos_scen. +Findings: +- Energy/midstream infra CEFs dominate 5y return AND crash + resilience: EMO +305%, SRV +234%, NML +232%, KYN +206%, PEO +192%, + TYG +170% - all positive in 2022 (+10..25%) and 2026 Q1 (+10..17%), + dist 10-13%/yr. +- Voya "Dividend & Premium" series (IGD/IHD/IAE/EOD): +77..86%, + maxDD only -16..-30%, 11-13% dist - premium management keeps the + market price near NAV. +- EM/China CEFs (TWN +348%, KF +139%, EMF +98%, AEF, MXF): high vol, + -34..-47% in 2022 (harvestable), 14-24% dist. +- Long-duration muni CEFs (PCQ/PML/PNI/TDF) -26..-42% over 5y: the + 2022-23 rate spike, duration not alpha. +- LTCFX (+1101%, 2023 +799%) and DXYZ (maxDD -90%) are + derivatives/meme vehicles - flag, don't rank. + +**Stage 2a** (fundlab/cef_character.py): 50-fund shortlist (top 40 +return + >=3 positive scenarios + top 15 payout) -> 35-sleeve +factor_screen -> taxplan.sleeve_score character -> crude +tax_arb = character x (upside + 0.4 x vol). Top: KF (char 0.63), +LENDX (0.69, maxDD -12%, all scenarios ~flat/positive), EMF/AEF/HQL/ +HQH/IGD equity-character 0.55-0.75; EMO/NML/SRV/KYN/TYG char +0.29-0.39 (income-heavy -> IRA-tilted, ROC share pending the 1099). + +**Remaining (stage 2b+):** per-fund N-2ASR/N-CSR distribution +character (the income/gains/ROC split is decisive for the EMO +family), NPORT NAV-per-share -> quarterly discount series, leverage +from NPORT financials, BDC flag via form history, tender-offer +status; app CEF tab. diff --git a/fundlab/cef_character.json b/fundlab/cef_character.json new file mode 100644 index 0000000..b5b1954 --- /dev/null +++ b/fundlab/cef_character.json @@ -0,0 +1,1270 @@ +{ + "ltcfx": { + "name": "Alternative Strategies Income Fund", + "bdc": false, + "days": 2918, + "last": "2026-08-27", + "sym": "ltcfx", + "t5": 11.010853648207505, + "t12": -0.005010789335000654, + "vol5": 1.5213343678619755, + "maxdd5": -0.27906950730769564, + "2022": -0.21728036793114036, + "2023": 7.9862268519700645, + "2025t": -0.17600261426409325, + "2026": -0.1688843101422115, + "n_pos_scen": 1, + "payout_12m": 0.19102746203111964, + "character": 0.34, + "sleeves": { + "iwm": 0.5, + "vnq": -0.35, + "tlt": -0.6, + "vblix": -0.18, + "agg": 0.34, + "vweax": 0.4, + "vmbix": -0.24, + "djp": -0.17, + "fxe": 0.35, + "fxy": 0.33, + "shy": 0.2, + "lqd": 0.23, + "pff": 0.22, + "emb": 0.34, + "vtv": 0.17, + "xlp": -0.18, + "xly": -0.16, + "xlb": -0.15, + "dbmf": 0.32 + }, + "tax_arb": 0.954 + }, + "twn": { + "name": "TAIWAN FUND INC", + "bdc": false, + "days": 10000, + "last": "2026-08-27", + "sym": "twn", + "t5": 3.4811698196438376, + "t12": 1.2779489029293778, + "vol5": 0.2510920823644, + "maxdd5": -0.5170454986848969, + "2022": -0.46624808362197945, + "2023": -0.14102951737885872, + "2025t": -0.28545589494494983, + "2026": 0.1168496416755258, + "n_pos_scen": 1, + "payout_12m": 0.2365312414681604, + "character": 0.62, + "sleeves": { + "efa": 0.19, + "vwo": 0.46, + "vblix": 0.18, + "vweax": 0.24, + "xlk": 0.15 + }, + "tax_arb": 0.493 + }, + "emo": { + "name": "ClearBridge Energy Midstream Opportunity Fund Inc.", + "bdc": false, + "days": 3824, + "last": "2026-08-27", + "sym": "emo", + "t5": 3.046789367310306, + "t12": 0.25618854048253925, + "vol5": 0.2590543870024383, + "maxdd5": -0.28585058427959, + "2022": 0.19480321683632607, + "2023": -0.01436328855525415, + "2025t": -0.1749154803168721, + "2026": 0.1188753555607509, + "n_pos_scen": 2, + "payout_12m": 0.10724785875647735, + "character": 0.31, + "sleeves": { + "agg": 0.18, + "vweax": 0.25, + "vmbix": -0.22, + "fxy": -0.19, + "lqd": 0.41, + "hyg": -0.27, + "pff": 0.8, + "emb": 0.63, + "tip": 0.52, + "xle": 0.71, + "dbmf": 0.27 + }, + "tax_arb": 0.2226 + }, + "dxyz": { + "name": "Destiny Tech100 Inc.", + "bdc": false, + "days": 608, + "last": "2026-08-27", + "sym": "dxyz", + "t5": 2.9333335555555555, + "t12": 0.24911792519407205, + "vol5": 1.5945189313655337, + "maxdd5": -0.9034973453903463, + "2022": null, + "2023": null, + "2025t": -0.47511314282458617, + "2026": -0.17905407926738082, + "n_pos_scen": 0, + "payout_12m": 0.0, + "character": 0.74, + "sleeves": { + "qqq": 0.22, + "iwm": 0.81, + "efa": -0.18, + "vwo": -0.57, + "vnq": 0.49, + "ief": -0.17, + "vblix": 0.2, + "vmbix": -0.25, + "gld": 0.29, + "fxy": 0.2, + "hyg": -0.21, + "xlk": 0.39, + "xlf": 0.23, + "xle": 0.17, + "xlp": -0.54, + "xlu": 0.56, + "xly": 0.91, + "xlb": -0.53, + "dbmf": 0.83 + }, + "tax_arb": 0.909 + }, + "srv": { + "name": "NXG Cushing Midstream Energy Fund", + "bdc": false, + "days": 4776, + "last": "2026-08-27", + "sym": "srv", + "t5": 2.3393088794011394, + "t12": 0.25815414766137423, + "vol5": 0.26410728147117785, + "maxdd5": -0.2626082486287503, + "2022": 0.09979641793473282, + "2023": -0.05730949391013285, + "2025t": -0.21010327926969719, + "2026": 0.13504596327329454, + "n_pos_scen": 2, + "payout_12m": 0.20388155980288492, + "character": 0.3, + "sleeves": { + "vblix": -0.16, + "agg": 0.41, + "vmbix": -0.28, + "lqd": -0.29, + "hyg": -0.38, + "pff": 1.16, + "emb": 0.49, + "tip": 0.38, + "xle": 0.51, + "dbmf": 0.19 + }, + "tax_arb": 0.1741 + }, + "nml": { + "name": "Neuberger Energy Infrastructure & Income Fund Inc.", + "bdc": false, + "days": 3377, + "last": "2026-08-27", + "sym": "nml", + "t5": 2.3187391461494515, + "t12": 0.3070232720250947, + "vol5": 0.2372885629809002, + "maxdd5": -0.21391829703337517, + "2022": 0.1991349843486132, + "2023": -0.07553448449779454, + "2025t": -0.1446577051203326, + "2026": 0.15174690894936527, + "n_pos_scen": 2, + "payout_12m": 0.10008685584012378, + "character": 0.39, + "sleeves": { + "vweax": 0.17, + "pff": 0.61, + "emb": 0.39, + "tip": 0.24, + "xle": 0.58, + "dbmf": 0.19 + }, + "tax_arb": 0.2178 + }, + "asa": { + "name": "ASA Gold & Precious Metals Ltd", + "bdc": false, + "days": 12264, + "last": "2026-08-27", + "sym": "asa", + "t5": 2.2956107805489214, + "t12": 0.7696737766767681, + "vol5": 0.36252681298387046, + "maxdd5": -0.4842937775455348, + "2022": -0.3843835353651588, + "2023": -0.08770769294272474, + "2025t": -0.060007617134789304, + "2026": -0.19797307539669085, + "n_pos_scen": 0, + "payout_12m": 0.002212954601488626, + "character": 0.55, + "sleeves": { + "gld": 1.27, + "lqd": -0.16, + "pff": 0.18, + "emb": 0.2, + "xlf": -0.18, + "xlb": 0.33 + }, + "tax_arb": 0.331 + }, + "pdx": { + "name": "PIMCO Dynamic Income Strategy Fund", + "bdc": false, + "days": 1905, + "last": "2026-08-27", + "sym": "pdx", + "t5": 2.114847710060338, + "t12": 0.10891137928492944, + "vol5": 0.2512852573594036, + "maxdd5": -0.3724016679538088, + "2022": 0.1222922221569982, + "2023": 0.13621907456281912, + "2025t": -0.21429967841424868, + "2026": 0.10626286541436603, + "n_pos_scen": 3, + "payout_12m": 0.22262241730992793, + "character": 0.36, + "sleeves": { + "agg": 0.45, + "vmbix": -0.21, + "lqd": -0.22, + "hyg": -0.16, + "pff": 0.65, + "emb": 0.3, + "tip": 0.22, + "xle": 0.47 + }, + "tax_arb": 0.1881 + }, + "kyn": { + "name": "Kayne Anderson Energy Infrastructure Fund, Inc.", + "bdc": false, + "days": 5514, + "last": "2026-08-27", + "sym": "kyn", + "t5": 2.0635235495418187, + "t12": 0.29069194536618004, + "vol5": 0.22787570471897786, + "maxdd5": -0.21646970730893322, + "2022": 0.09595458788479538, + "2023": -0.056966367103370774, + "2025t": -0.1877860550479632, + "2026": 0.10339427448691585, + "n_pos_scen": 2, + "payout_12m": 0.0948990651072803, + "character": 0.33, + "sleeves": { + "vblix": -0.27, + "agg": 0.59, + "vmbix": -0.31, + "lqd": -0.54, + "hyg": -0.27, + "pff": 1.09, + "emb": 0.62, + "tip": 0.3, + "vtv": -0.31, + "xle": 0.63 + }, + "tax_arb": 0.1679 + }, + "peo": { + "name": "ADAMS NATURAL RESOURCES FUND, INC.", + "bdc": false, + "days": 11707, + "last": "2026-08-27", + "sym": "peo", + "t5": 1.9185787540436507, + "t12": 0.41593776901319357, + "vol5": 0.23136984314564105, + "maxdd5": -0.24295637509997625, + "2022": 0.2500539354111846, + "2023": -0.05100339750078753, + "2025t": -0.1703899451621429, + "2026": 0.16707826391955738, + "n_pos_scen": 2, + "payout_12m": 0.11216934070437024, + "character": 0.56, + "sleeves": { + "pff": 0.28, + "xle": 0.71 + }, + "tax_arb": 0.2669 + }, + "tyg": { + "name": "TORTOISE ENERGY INFRASTRUCTURE CORP", + "bdc": false, + "days": 5663, + "last": "2026-08-27", + "sym": "tyg", + "t5": 1.704274585350793, + "t12": 0.14100033162868408, + "vol5": 0.23484044856499153, + "maxdd5": -0.25078004664278253, + "2022": 0.1000871257758511, + "2023": -0.08098927298469638, + "2025t": -0.2105723795817347, + "2026": 0.15121962004759348, + "n_pos_scen": 2, + "payout_12m": 0.13052544777219244, + "character": 0.29, + "sleeves": { + "iwm": 0.21, + "efa": 0.17, + "vnq": 0.19, + "vblix": -0.74, + "agg": 1.07, + "vweax": -0.32, + "vmbix": -0.51, + "gsg": 0.18, + "fxe": -0.25, + "fxy": -0.24, + "lqd": -1.0, + "hyg": -0.69, + "pff": 1.55, + "emb": 0.85, + "tip": 0.38, + "vtv": -0.41, + "xle": 0.56, + "xlu": -0.16 + }, + "tax_arb": 0.1265 + }, + "kf": { + "name": "KOREA FUND INC", + "bdc": false, + "days": 10585, + "last": "2026-08-27", + "sym": "kf", + "t5": 1.392442897624028, + "t12": 1.4442465577364958, + "vol5": 0.31221586182546757, + "maxdd5": -0.46054484050013245, + "2022": -0.42257600229608283, + "2023": -0.24016567173400338, + "2025t": -0.14498833298644276, + "2026": -0.07901554404145084, + "n_pos_scen": 0, + "payout_12m": 0.09388413020026398, + "character": 0.63, + "sleeves": { + "efa": 0.31, + "vwo": 0.49, + "vweax": 0.27, + "pff": 0.25, + "vtv": 0.3, + "xlk": 0.23, + "xlf": -0.2, + "xlv": -0.17, + "xlp": -0.17 + }, + "tax_arb": 0.2547 + }, + "nxg": { + "name": "NXG NextGen Infrastructure Income Fund", + "bdc": false, + "days": 3499, + "last": "2026-08-27", + "sym": "nxg", + "t5": 1.282594444323382, + "t12": 0.35511376571540487, + "vol5": 0.2809317032338413, + "maxdd5": -0.29572049025315017, + "2022": -0.15257322629678494, + "2023": -0.12686957264416088, + "2025t": -0.20951943201448409, + "2026": 0.11100205706600597, + "n_pos_scen": 1, + "payout_12m": 0.1570307241410287, + "character": 0.39, + "sleeves": { + "vwo": 0.17, + "vweax": 0.29, + "pff": 0.58, + "emb": 0.39, + "tip": 0.27, + "xle": 0.28, + "xlp": -0.22, + "xlu": 0.16 + }, + "tax_arb": 0.1443 + }, + "emf": { + "name": "TEMPLETON EMERGING MARKETS FUND", + "bdc": false, + "days": 9951, + "last": "2026-08-27", + "sym": "emf", + "t5": 0.9824742975749015, + "t12": 0.6157167114783952, + "vol5": 0.21325320820170296, + "maxdd5": -0.4032817484130762, + "2022": -0.343016123607901, + "2023": -0.14820697461212484, + "2025t": -0.1366284770168349, + "2026": -0.1524260177787926, + "n_pos_scen": 0, + "payout_12m": 0.14459406384698692, + "character": 0.68, + "sleeves": { + "vwo": 0.75, + "vweax": 0.19 + }, + "tax_arb": 0.1911 + }, + "asgi": { + "name": "abrdn Global Infrastructure Income Fund", + "bdc": false, + "days": 1528, + "last": "2026-08-27", + "sym": "asgi", + "t5": 0.9468445019110494, + "t12": 0.3542092122215452, + "vol5": 0.16972922373359892, + "maxdd5": -0.21592684638050774, + "2022": -0.20039005191398152, + "2023": -0.15086784998815606, + "2025t": -0.056398631951257605, + "2026": -0.034181256288313144, + "n_pos_scen": 0, + "payout_12m": 0.14732930878744144, + "character": 0.51, + "sleeves": { + "xlu": 0.15 + }, + "tax_arb": 0.1307 + }, + "adx": { + "name": "ADAMS DIVERSIFIED EQUITY FUND, INC.", + "bdc": false, + "days": 11707, + "last": "2026-08-27", + "sym": "adx", + "t5": 0.9346036388080285, + "t12": 0.2953392858581887, + "vol5": 0.18397609108695406, + "maxdd5": -0.3380277063897129, + "2022": -0.24827841459027133, + "2023": -0.10089320199857432, + "2025t": -0.17723356391501022, + "2026": -0.09660789143252124, + "n_pos_scen": 0, + "payout_12m": 0.09864806343171817, + "character": 0.71, + "sleeves": { + "ivv": 0.21, + "pff": 0.15 + }, + "tax_arb": 0.1861 + }, + "fund": { + "name": "SPROTT FOCUS TRUST INC.", + "bdc": false, + "days": 9627, + "last": "2026-08-27", + "sym": "fund", + "t5": 0.8901558035997397, + "t12": 0.3907260408772075, + "vol5": 0.18620277335001462, + "maxdd5": -0.2467630183666869, + "2022": -0.16000069262762828, + "2023": -0.165068763220234, + "2025t": -0.14772148170042732, + "2026": 0.00017580176545495263, + "n_pos_scen": 1, + "payout_12m": 0.08743736852641604, + "character": 0.58, + "sleeves": { + "iwm": 0.27, + "vweax": 0.16, + "pff": 0.16 + }, + "tax_arb": 0.1464 + }, + "rmt": { + "name": "ROYCE MICRO-CAP TRUST, INC.", + "bdc": false, + "days": 8230, + "last": "2026-08-27", + "sym": "rmt", + "t5": 0.8820479190756769, + "t12": 0.4836550146434644, + "vol5": 0.21845459347910165, + "maxdd5": -0.30732803825928146, + "2022": -0.25967940629037, + "2023": -0.14993843457349265, + "2025t": -0.23327462755712547, + "2026": -0.024974961071679624, + "n_pos_scen": 0, + "payout_12m": 0.10265599407539394, + "character": 0.63, + "sleeves": { + "iwm": 0.63, + "vweax": 0.2, + "pff": 0.24 + }, + "tax_arb": 0.166 + }, + "mxf": { + "name": "MEXICO FUND INC", + "bdc": false, + "days": 11400, + "last": "2026-08-27", + "sym": "mxf", + "t5": 0.8754587993399683, + "t12": 0.2948168557740507, + "vol5": 0.20801826716533733, + "maxdd5": -0.3073492991280533, + "2022": -0.11623436313628188, + "2023": -0.13817395947729538, + "2025t": -0.09097125786936933, + "2026": -0.08629222145770654, + "n_pos_scen": 0, + "payout_12m": 0.07812254952750552, + "character": 0.53, + "sleeves": { + "efa": 0.18, + "vwo": 0.37, + "vweax": 0.25, + "emb": 0.26 + }, + "tax_arb": 0.1359 + }, + "iae": { + "name": "Voya Asia Pacific High Dividend Equity Income Fund", + "bdc": false, + "days": 4886, + "last": "2026-08-27", + "sym": "iae", + "t5": 0.8594133893553464, + "t12": 0.37792047936236917, + "vol5": 0.18329242411477545, + "maxdd5": -0.2901588817915668, + "2022": -0.25152510174168674, + "2023": -0.12363664923152928, + "2025t": -0.1342756963745131, + "2026": -0.11725515821463672, + "n_pos_scen": 0, + "payout_12m": 0.1296638545367068, + "character": 0.59, + "sleeves": { + "vwo": 0.54, + "vweax": 0.2 + }, + "tax_arb": 0.1454 + }, + "lendx": { + "name": "Stone Ridge Trust V", + "bdc": false, + "days": 2573, + "last": "2026-08-27", + "sym": "lendx", + "t5": 0.8589135754300956, + "t12": 1.0514783633081075, + "vol5": 0.44818136463844876, + "maxdd5": -0.11888647877765723, + "2022": -0.013069314987782632, + "2023": -0.016673606670531527, + "2025t": -0.005428833566561986, + "2026": 0.027511317253084755, + "n_pos_scen": 2, + "payout_12m": 0.05666880426007803, + "character": 0.69, + "sleeves": { + "xlv": -0.15 + }, + "tax_arb": 0.2435 + }, + "eod": { + "name": "ALLSPRING GLOBAL DIVIDEND OPPORTUNITY FUND", + "bdc": false, + "days": 4886, + "last": "2026-08-27", + "sym": "eod", + "t5": 0.8524101914824733, + "t12": 0.2792073677734628, + "vol5": 0.17562926322193367, + "maxdd5": -0.2560542377055254, + "2022": -0.21517786511435866, + "2023": -0.15006829380677444, + "2025t": -0.13316833265957806, + "2026": -0.06351633625207798, + "n_pos_scen": 0, + "payout_12m": 0.10873285107750497, + "character": 0.44, + "sleeves": { + "efa": 0.15, + "vweax": 0.19, + "pff": 0.26 + }, + "tax_arb": 0.105 + }, + "ihd": { + "name": "Voya Emerging Markets High Dividend Equity Fund", + "bdc": false, + "days": 3856, + "last": "2026-08-27", + "sym": "ihd", + "t5": 0.8490941487862638, + "t12": 0.4216748887173323, + "vol5": 0.18121683070905253, + "maxdd5": -0.30036067167965075, + "2022": -0.2644261103460689, + "2023": -0.13368459093089435, + "2025t": -0.1405694381947853, + "2026": -0.06689428934657626, + "n_pos_scen": 0, + "payout_12m": 0.13259925846523157, + "character": 0.59, + "sleeves": { + "vwo": 0.62, + "vweax": 0.16 + }, + "tax_arb": 0.1431 + }, + "bxsy": { + "name": "BEXIL INVESTMENT TRUST", + "bdc": false, + "days": 7087, + "last": "2026-08-26", + "sym": "bxsy", + "t5": 0.8350650412328806, + "t12": 0.3692247142045, + "vol5": 0.18436419576123228, + "maxdd5": -0.2708685573680789, + "2022": -0.23193771980135058, + "2023": -0.14401686881922549, + "2025t": -0.11949342016467035, + "2026": -0.09747785444461388, + "n_pos_scen": 0, + "payout_12m": 0.08764390968791558, + "character": 0.47, + "sleeves": { + "vweax": 0.32 + }, + "tax_arb": 0.1125 + }, + "aio": { + "name": "Virtus Artificial Intelligence & Technology Opportunities Fund", + "bdc": false, + "days": 1716, + "last": "2026-08-27", + "sym": "aio", + "t5": 0.834617820615795, + "t12": 0.22915030515518664, + "vol5": 0.22446544589778142, + "maxdd5": -0.37389426170544593, + "2022": -0.33455096614329427, + "2023": -0.1645092452037904, + "2025t": -0.2785522881274829, + "2026": -0.06482502290314485, + "n_pos_scen": 0, + "payout_12m": 0.1502781727942495, + "character": 0.49, + "sleeves": { + "qqq": 0.19, + "pff": 0.52, + "emb": 0.15 + }, + "tax_arb": 0.1251 + }, + "mci": { + "name": "BARINGS CORPORATE INVESTORS", + "bdc": false, + "days": 11707, + "last": "2026-08-27", + "sym": "mci", + "t5": 0.7795838905609074, + "t12": -0.07692471225471942, + "vol5": 0.22068219346788892, + "maxdd5": -0.2793106477702202, + "2022": -0.10515556360483991, + "2023": 0.067192106815811, + "2025t": -0.1600000760482061, + "2026": -0.1564164927829056, + "n_pos_scen": 1, + "payout_12m": 0.07194256231149765, + "character": 0.37, + "sleeves": { + "vblix": 0.16, + "lqd": 0.2, + "pff": 0.41 + }, + "tax_arb": 0.0907 + }, + "cet": { + "name": "CENTRAL SECURITIES CORP", + "bdc": false, + "days": 11707, + "last": "2026-08-27", + "sym": "cet", + "t5": 0.7713599105461624, + "t12": 0.15737764219043715, + "vol5": 0.1462502913417677, + "maxdd5": -0.2489227786316789, + "2022": -0.21542457427526085, + "2023": -0.0657504661237801, + "2025t": -0.14858929243497487, + "2026": -0.06934866149206342, + "n_pos_scen": 0, + "payout_12m": 0.062072666267483756, + "character": 0.54, + "sleeves": { + "pff": 0.18 + }, + "tax_arb": 0.116 + }, + "igd": { + "name": "Voya GLOBAL EQUITY DIVIDEND & PREMIUM OPPORTUNITY FUND", + "bdc": false, + "days": 5389, + "last": "2026-08-27", + "sym": "igd", + "t5": 0.7666291001075525, + "t12": 0.23093659331666805, + "vol5": 0.1458613673851675, + "maxdd5": -0.1580732871360312, + "2022": -0.1312886414488793, + "2023": -0.07687317453019482, + "2025t": -0.05447565743865668, + "2026": -0.01619181153508742, + "n_pos_scen": 0, + "payout_12m": 0.11776091764099239, + "character": 0.55, + "sleeves": { + "pff": 0.2 + }, + "tax_arb": 0.1158 + }, + "hql": { + "name": "abrdn Life Sciences Investors", + "bdc": false, + "days": 8641, + "last": "2026-08-27", + "sym": "hql", + "t5": 0.756658735481174, + "t12": 0.7585396074547721, + "vol5": 0.21037861975385988, + "maxdd5": -0.3886057452825825, + "2022": -0.2279846740078073, + "2023": -0.12776985197356272, + "2025t": -0.2123187931628142, + "2026": -0.036451703543255665, + "n_pos_scen": 0, + "payout_12m": 0.20370562477078935, + "character": 0.75, + "sleeves": { + "qqq": 0.39, + "iwm": 0.36, + "pff": 0.17, + "xlk": -0.22, + "xlv": 0.79 + }, + "tax_arb": 0.1761 + }, + "jce": { + "name": "Nuveen Core Equity Alpha Fund", + "bdc": false, + "days": 4886, + "last": "2026-08-27", + "sym": "jce", + "t5": 0.7546163378196569, + "t12": 0.1806800758883682, + "vol5": 0.23041044587541998, + "maxdd5": -0.3024404355750725, + "2022": -0.09246521995808998, + "2023": -0.09115017334591535, + "2025t": -0.18659615601845314, + "2026": -0.1002646068595594, + "n_pos_scen": 0, + "payout_12m": 0.09724058544250824, + "character": 0.49, + "sleeves": { + "vweax": 0.17, + "pff": 0.39 + }, + "tax_arb": 0.1186 + }, + "scd": { + "name": "LMP CAPITAL & INCOME FUND INC.", + "bdc": false, + "days": 5663, + "last": "2026-08-27", + "sym": "scd", + "t5": 0.7433837359485724, + "t12": 0.10923138289694445, + "vol5": 0.19556729021158106, + "maxdd5": -0.23500039713587806, + "2022": -0.22196163494475396, + "2023": -0.08045904304095519, + "2025t": -0.20842087039633073, + "2026": -0.041742445497565894, + "n_pos_scen": 0, + "payout_12m": 0.1001874552483657, + "character": 0.35, + "sleeves": { + "vweax": 0.21, + "pff": 0.52, + "emb": 0.16 + }, + "tax_arb": 0.0786 + }, + "aod": { + "name": "abrdn Total Dynamic Dividend Fund", + "bdc": false, + "days": 4869, + "last": "2026-08-27", + "sym": "aod", + "t5": 0.7287773051584956, + "t12": 0.3177550367836055, + "vol5": 0.16819816922624903, + "maxdd5": -0.28879977038377935, + "2022": -0.2816273018559108, + "2023": -0.13659165882152402, + "2025t": -0.13995446213334872, + "2026": -0.09536499649357455, + "n_pos_scen": 0, + "payout_12m": 0.15200311581763404, + "character": 0.53, + "sleeves": { + "efa": 0.18, + "pff": 0.32 + }, + "tax_arb": 0.1135 + }, + "aef": { + "name": "abrdn Emerging Markets ex-China Fund, Inc.", + "bdc": false, + "days": 9298, + "last": "2026-08-27", + "sym": "aef", + "t5": 0.725742700730595, + "t12": 0.6938603400474028, + "vol5": 0.238106612682594, + "maxdd5": -0.4660793734139044, + "2022": -0.39666857941050226, + "2023": -0.16332906521365664, + "2025t": -0.17838153741662588, + "2026": -0.10943857474682883, + "n_pos_scen": 0, + "payout_12m": 0.1654972930457821, + "character": 0.55, + "sleeves": { + "vwo": 0.54, + "vweax": 0.26, + "pff": 0.16 + }, + "tax_arb": 0.1328 + }, + "mpv": { + "name": "BARINGS PARTICIPATION INVESTORS", + "bdc": false, + "days": 9531, + "last": "2026-08-27", + "sym": "mpv", + "t5": 0.7219339671867755, + "t12": -0.13898598000807438, + "vol5": 0.21304201639263748, + "maxdd5": -0.2262846681283439, + "2022": -0.18524435760572477, + "2023": 0.0591172262559001, + "2025t": -0.08224620164228191, + "2026": -0.146114046356145, + "n_pos_scen": 1, + "payout_12m": 0.06680973679960156, + "character": 0.3, + "sleeves": { + "lqd": -0.35, + "pff": 0.61, + "emb": 0.15 + }, + "tax_arb": 0.0691 + }, + "iga": { + "name": "Voya Global Advantage & Premium Opportunity Fund", + "bdc": false, + "days": 5240, + "last": "2026-08-27", + "sym": "iga", + "t5": 0.7097116804393442, + "t12": 0.17828566799592016, + "vol5": 0.13848297653371958, + "maxdd5": -0.1697881962483041, + "2022": -0.1568752915720476, + "2023": -0.05569342096862251, + "2025t": -0.07732832631405506, + "2026": -0.04039432599800974, + "n_pos_scen": 0, + "payout_12m": 0.11591142252308306, + "character": 0.55, + "sleeves": { + "pff": 0.26 + }, + "tax_arb": 0.1076 + }, + "csq": { + "name": "CALAMOS STRATEGIC TOTAL RETURN FUND", + "bdc": false, + "days": 5637, + "last": "2026-08-27", + "sym": "csq", + "t5": 0.6699233491608418, + "t12": 0.21370470036540778, + "vol5": 0.2018533652812731, + "maxdd5": -0.3306993888872295, + "2022": -0.3225339245477026, + "2023": -0.16174360136789678, + "2025t": -0.23464189049768935, + "2026": -0.1371444023878401, + "n_pos_scen": 0, + "payout_12m": 0.08567893382425651, + "character": 0.46, + "sleeves": { + "ivv": 0.18, + "agg": 0.15, + "pff": 0.45 + }, + "tax_arb": 0.0982 + }, + "ide": { + "name": "Voya Infrastructure, Industrials & Materials Fund", + "bdc": false, + "days": 4168, + "last": "2026-08-27", + "sym": "ide", + "t5": 0.6689820320575848, + "t12": 0.16997331628936507, + "vol5": 0.1705204316359011, + "maxdd5": -0.2930903648562231, + "2022": -0.24669720117128946, + "2023": -0.123983534327885, + "2025t": -0.1257005091586889, + "2026": -0.08386276237954282, + "n_pos_scen": 0, + "payout_12m": 0.10384428403130053, + "character": 0.56, + "sleeves": { + "efa": 0.24, + "pff": 0.24 + }, + "tax_arb": 0.1122 + }, + "agd": { + "name": "abrdn Global Dynamic Dividend Fund", + "bdc": false, + "days": 5053, + "last": "2026-08-27", + "sym": "agd", + "t5": 0.6682157874310566, + "t12": 0.19689516246613015, + "vol5": 0.19092360687371457, + "maxdd5": -0.28159921854608405, + "2022": -0.2644703216952713, + "2023": -0.12455399086410845, + "2025t": -0.12179817035817664, + "2026": -0.1444948767938451, + "n_pos_scen": 0, + "payout_12m": 0.1315855780725761, + "character": 0.52, + "sleeves": { + "efa": 0.15, + "pff": 0.27 + }, + "tax_arb": 0.11 + }, + "etg": { + "name": "Eaton Vance Tax-Advantaged Global Dividend Income Fund", + "bdc": false, + "days": 5681, + "last": "2026-08-27", + "sym": "etg", + "t5": 0.6572569703414584, + "t12": 0.25178562778650115, + "vol5": 0.19850475794538885, + "maxdd5": -0.3163884441531496, + "2022": -0.3037958603953185, + "2023": -0.1626668313186953, + "2025t": -0.1673825328723395, + "2026": -0.16184007637626807, + "n_pos_scen": 0, + "payout_12m": 0.08359285670216399, + "character": 0.5, + "sleeves": { + "efa": 0.21, + "vweax": 0.23, + "pff": 0.28 + }, + "tax_arb": 0.1047 + }, + "stew": { + "name": "SRH Total Return Fund, Inc.", + "bdc": false, + "days": 11707, + "last": "2026-08-27", + "sym": "stew", + "t5": 0.628348335312034, + "t12": 0.051579406062707056, + "vol5": 0.15209264768750147, + "maxdd5": -0.2654965678687463, + "2022": -0.23897212754367292, + "2023": -0.11040522590189017, + "2025t": -0.06841168084856997, + "2026": -0.05056813458126708, + "n_pos_scen": 0, + "payout_12m": 0.043979026040991576, + "character": 0.61, + "sleeves": { + "pff": 0.16, + "xlf": 0.25 + }, + "tax_arb": 0.1142 + }, + "ascix": { + "name": "Angel Oak Strategic Credit Fund", + "bdc": false, + "days": 2179, + "last": "2026-08-27", + "sym": "ascix", + "t5": 0.42038963479769076, + "t12": 0.05877540407879023, + "vol5": 0.03469110710009817, + "maxdd5": -0.07543651349412239, + "2022": -0.0626131586367139, + "2023": 0.010453235606022071, + "2025t": 0.011744450325854139, + "2026": 0.0023148417206182437, + "n_pos_scen": 4, + "payout_12m": 0.08515317138919998, + "character": 0.12, + "sleeves": { + "vweax": 0.19 + }, + "tax_arb": 0.0115 + }, + "nichx": { + "name": "Variant Alternative Income Fund", + "bdc": false, + "days": 1986, + "last": "2026-08-27", + "sym": "nichx", + "t5": 0.38653019465500416, + "t12": 0.06551680095870949, + "vol5": 0.021523766680912014, + "maxdd5": -0.04002781785075327, + "2022": 0.034668904422195945, + "2023": 0.021128955187643905, + "2025t": 0.00757743768258301, + "2026": 0.014087921700665307, + "n_pos_scen": 5, + "payout_12m": 0.09985797175597833, + "character": null, + "sleeves": {}, + "tax_arb": 0.0258 + }, + "vcrdx": { + "name": "Harrison Street Infrastructure Income Fund", + "bdc": false, + "days": 605, + "last": "2026-08-27", + "sym": "vcrdx", + "t5": 0.23130303779523342, + "t12": 0.07795935308682211, + "vol5": 0.0189102923316101, + "maxdd5": -0.0234375, + "2022": null, + "2023": null, + "2025t": 0.010988952725008883, + "2026": 0.015937986967450746, + "n_pos_scen": 3, + "payout_12m": 0.07795935308682211, + "character": 0.59, + "sleeves": {}, + "tax_arb": 0.0317 + }, + "herz": { + "name": "Herzfeld Credit Income Fund, Inc", + "bdc": false, + "days": 8122, + "last": "2026-08-27", + "sym": "herz", + "t5": 0.10430182537155197, + "t12": 0.22039176178319164, + "vol5": 0.32430598811017797, + "maxdd5": -0.5035944406238189, + "2022": -0.2143920445283426, + "2023": -0.2673267669476759, + "2025t": 0.0, + "2026": -0.22727262109383783, + "n_pos_scen": 0, + "payout_12m": 0.5833399689545065, + "character": 0.43, + "sleeves": { + "vweax": 0.36, + "fxe": -0.16, + "pff": 0.28, + "emb": 0.25, + "xle": 0.17 + }, + "tax_arb": 0.0644 + }, + "ecat": { + "name": "BlackRock ESG Capital Allocation Term Trust", + "bdc": false, + "days": 1234, + "last": "2026-08-27", + "sym": "ecat", + "t5": 0.5683922778955146, + "t12": 0.14704490881662458, + "vol5": 0.16784025400665092, + "maxdd5": -0.3223326001687352, + "2022": -0.2694596155150689, + "2023": -0.0987090641156575, + "2025t": -0.13890318468563867, + "2026": -0.10732425357739728, + "n_pos_scen": 0, + "payout_12m": 0.2198049252183094, + "character": 0.65, + "sleeves": {}, + "tax_arb": 0.1168 + }, + "hqh": { + "name": "abrdn Healthcare Investors", + "bdc": false, + "days": 9912, + "last": "2026-08-27", + "sym": "hqh", + "t5": 0.5265088334680277, + "t12": 0.597804817457348, + "vol5": 0.1979083287774361, + "maxdd5": -0.3754989232355037, + "2022": -0.20973060654286657, + "2023": -0.13429402773429588, + "2025t": -0.19886677461303848, + "2026": -0.07108398944946759, + "n_pos_scen": 0, + "payout_12m": 0.18180001696894244, + "character": 0.75, + "sleeves": { + "qqq": 0.34, + "iwm": 0.31, + "pff": 0.16, + "xlk": -0.21, + "xlv": 0.8 + }, + "tax_arb": 0.1378 + }, + "crf": { + "name": "CORNERSTONE TOTAL RETURN FUND INC", + "bdc": false, + "days": 9775, + "last": "2026-08-27", + "sym": "crf", + "t5": 0.3455034116920883, + "t12": -0.01691776993325944, + "vol5": 0.2520134740078826, + "maxdd5": -0.4312436927721268, + "2022": -0.3417875728228732, + "2023": -0.24169323120308295, + "2025t": -0.26484840971181733, + "2026": -0.13335977356719886, + "n_pos_scen": 0, + "payout_12m": 0.16779560586291886, + "character": 0.35, + "sleeves": { + "ivv": 0.15, + "vblix": 0.15, + "vweax": 0.36, + "pff": 0.51, + "emb": 0.18 + }, + "tax_arb": 0.059 + }, + "clm": { + "name": "Cornerstone Strategic Investment Fund, Inc.", + "bdc": false, + "days": 6056, + "last": "2026-08-27", + "sym": "clm", + "t5": 0.3591674618988572, + "t12": -0.013861255172223474, + "vol5": 0.24303823937477276, + "maxdd5": -0.43442796884967005, + "2022": -0.34687509846932196, + "2023": -0.24072742530497937, + "2025t": -0.23792589381238505, + "2026": -0.13003850412053208, + "n_pos_scen": 0, + "payout_12m": 0.16717322758639708, + "character": 0.39, + "sleeves": { + "vweax": 0.19, + "pff": 0.44, + "emb": 0.18 + }, + "tax_arb": 0.0666 + }, + "igr": { + "name": "CBRE GLOBAL REAL ESTATE INCOME FUND", + "bdc": false, + "days": 5663, + "last": "2026-08-27", + "sym": "igr", + "t5": -0.018196516255222894, + "t12": 0.07816459979556889, + "vol5": 0.25032588577125114, + "maxdd5": -0.5090928431109247, + "2022": -0.40067464658916807, + "2023": -0.26348556347563146, + "2025t": -0.1554149227640227, + "2026": -0.0887666326193215, + "n_pos_scen": 0, + "payout_12m": 0.15231289638875523, + "character": 0.26, + "sleeves": { + "vnq": 0.59, + "vweax": 0.25, + "pff": 0.33 + }, + "tax_arb": 0.0265 + }, + "edf": { + "name": "Virtus Stone Harbor Emerging Markets Income Fund", + "bdc": false, + "days": 3941, + "last": "2026-08-27", + "sym": "edf", + "t5": 0.2770483893073403, + "t12": 0.15436816025743982, + "vol5": 0.257267322376371, + "maxdd5": -0.5202869217756165, + "2022": -0.4146828781188988, + "2023": -0.24324434356581015, + "2025t": -0.14572805171659287, + "2026": -0.02316227497683898, + "n_pos_scen": 0, + "payout_12m": 0.1504996883038614, + "character": 0.28, + "sleeves": { + "vwo": 0.22, + "vweax": 0.25, + "lqd": -0.31, + "pff": 0.81, + "emb": 0.61 + }, + "tax_arb": 0.0444 + } +} \ No newline at end of file diff --git a/fundlab/cef_character.py b/fundlab/cef_character.py new file mode 100644 index 0000000..385c0d3 --- /dev/null +++ b/fundlab/cef_character.py @@ -0,0 +1,116 @@ +"""CEF stage 2a: tax-character proxy for the shortlist. + +Takes the cef_screen.json shortlist (top 5y return + crash-resilient + +high-payout CEFs), runs the 35-sleeve factor screen on each, and scores +the sleeve mix with taxplan.sleeve_score (same proxy the open-end +candidates use). Then ranks by a crude "tax-arb per dollar" heuristic +for a constrained taxable account: + + tax_arb ~= character x (upside + 0.4 x vol) + + character share of the return mix that is tax-favorable (0..1) + upside max(t5,0)/5 - the LTCG-deferral term + 0.4 x vol5 ~ expected |annual loss| (normal approx) - the + harvest term (0.4 = 1/sqrt(2*pi)) + +Both terms are per dollar of balance; the heuristic is a SCREENER, +the EDGAR deep dive (N-2ASR/N-CSR distribution character + NPORT NAV +for the discount) is what decides. + +Output: fundlab/cef_character.json +""" +from __future__ import annotations + +import json +import re +from pathlib import Path + +import numpy as np + +from fundlab import factors, taxplan + +HERE = Path(__file__).parent +SCREEN = HERE / "cef_screen.json" +OUT = HERE / "cef_character.json" + +# 6(c)-converted / non-fund tickers that show up in the SEC CEF report +# (organized as CEFs, later converted to operating companies) +NON_FUNDS = {"cfnd", "pwrl", "bot", "fxby"} +SPECULATIVE = re.compile(r"corp\.?$|tech100", re.I) + + +def select(res: dict, n_ret: int = 40, n_pay: int = 15) -> list[str]: + rows = [v for v in res.values() + if v.get("t5") is not None and v["sym"] not in NON_FUNDS] + by_ret = sorted(rows, key=lambda x: -x["t5"])[:n_ret] + by_res = [v for v in rows if v.get("n_pos_scen", 0) >= 3] + by_pay = sorted(rows, key=lambda x: -(x.get("payout_12m") or 0))[:n_pay] + out: dict[str, dict] = {} + for v in by_ret + by_res + by_pay: + out.setdefault(v["sym"], v) + return list(out) + + +def _betas(sym: str) -> dict: + fs = factors.factor_screen(sym) + if not fs: + return {} + return (fs.get("full") or fs.get("rec5") or {}).get("betas") or {} + + +def run() -> dict: + res = json.loads(SCREEN.read_text()) + syms = select(res) + print(f"{len(syms)} shortlisted CEFs", flush=True) + out: dict = {} + for i, s in enumerate(syms, 1): + v = res[s.upper()] + comps = _betas(s.lower()) + char = taxplan.sleeve_score(comps) if comps else None + t5 = v.get("t5") or 0.0 + vol = v.get("vol5") or 0.0 + upside = max(t5, 0.0) / 5.0 + harvest = 0.4 * vol + arb = (char if char is not None else 0.3) * (upside + harvest) + out[s] = { + **{k: v.get(k) for k in ("name", "bdc", "days", "last")}, + "sym": s, "t5": t5, "t12": v.get("t12"), "vol5": vol, + "maxdd5": v.get("maxdd5"), + "2022": v.get("2022 bear mkt"), "2023": v.get("2023 rate shock"), + "2025t": v.get("2025 tariff crash"), + "2026": v.get("2026 Q1 drawdown"), + "n_pos_scen": v.get("n_pos_scen"), + "payout_12m": v.get("payout_12m"), + "character": round(char, 2) if char is not None else None, + "sleeves": {k: round(b, 2) for k, b in comps.items() + if abs(b) > 0.15}, + "tax_arb": round(arb, 4), + } + print(f"{i:2}/{len(syms)} {s:7} char={out[s]['character']} " + f"arb={out[s]['tax_arb']}", flush=True) + OUT.write_text(json.dumps(out, indent=1, default=str)) + print(f"wrote {OUT}") + return out + + +def _pc(v: float | None) -> str: + return "" if v is None else f"{v:+.1%}" + + +def _print(out: dict, top: int = 35) -> None: + rows = sorted(out.values(), key=lambda x: -x["tax_arb"]) + print(f"{'fund':7} {'name':40} {'char':>5} {'5yTR':>8} {'vol':>6}" + f" {'maxDD':>8} {'2022':>8} {'2026':>8} {'dist12':>8} {'tax_arb':>8}") + for v in rows[:top]: + c = v["character"] + print(f"{v['sym']:7} {v.get('name','')[:40]:40} " + f"{('' if c is None else f'{c:.2f}'):>5} " + f"{v['t5']:+8.1%} {v['vol5']:6.2f} " + f"{_pc(v.get('maxdd5')):>8} {_pc(v.get('2022')):>8} " + f"{_pc(v.get('2026')):>8} {_pc(v.get('payout_12m')):>8} " + f"{v['tax_arb']:8.3f}") + + +if __name__ == "__main__": + o = run() + _print(o) diff --git a/fundlab/cef_screen.json b/fundlab/cef_screen.json new file mode 100644 index 0000000..e229909 --- /dev/null +++ b/fundlab/cef_screen.json @@ -0,0 +1,6977 @@ +{ + "ABAKF": { + "cik": "790500", + "name": "ABRDN ASIA-PACIFIC INCOME FUND, INC.", + "bdc": false, + "listed": true, + "days": 3937, + "last": "2026-08-27", + "known": false, + "sym": "abakf", + "t5": -0.045310098761380146, + "p5": -0.23553719008264462, + "t12": -0.07463725780505959, + "p12": -0.12322274881516582, + "vol5": 0.16875248862884332, + "maxdd5": -0.298245431842346, + "payout_12m": 0.04858549101010623, + "payout_5y_share": -4.198337600698493, + "2022 bear mkt": -0.25213667244733684, + "2023 rate shock": -0.03193014110739656, + "2024 vol spike": -0.09962678705621042, + "2025 tariff crash": 0.0, + "2026 Q1 drawdown": 0.012679667894641033, + "n_pos_scen": 1 + }, + "ACV": { + "cik": "1636289", + "name": "Virtus Diversified Income & Convertible Fund", + "bdc": false, + "listed": true, + "days": 2834, + "last": "2026-08-27", + "known": false, + "sym": "acv", + "t5": 0.49278694419513336, + "p5": -0.23500712969911786, + "t12": 0.2742119995306542, + "p12": 0.1571180053334198, + "vol5": 0.236331539642001, + "maxdd5": -0.487976835147823, + "payout_12m": 0.11709399419723443, + "payout_5y_share": 1.4768939852555427, + "2022 bear mkt": -0.39023509007598944, + "2023 rate shock": -0.15742973883830802, + "2024 vol spike": -0.05062097584849701, + "2025 tariff crash": -0.19174282676625953, + "2026 Q1 drawdown": -0.13806627370600932, + "n_pos_scen": 0 + }, + "ADX": { + "cik": "2230", + "name": "ADAMS DIVERSIFIED EQUITY FUND, INC.", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false, + "sym": "adx", + "t5": 0.9346036388080285, + "p5": 0.28086576487948856, + "t12": 0.2953392858581887, + "p12": 0.19669122242647052, + "vol5": 0.18397609108695406, + "maxdd5": -0.3380277063897129, + "payout_12m": 0.09864806343171817, + "payout_5y_share": 0.699481413064368, + "2022 bear mkt": -0.24827841459027133, + "2023 rate shock": -0.10089320199857432, + "2024 vol spike": -0.0725607711709767, + "2025 tariff crash": -0.17723356391501022, + "2026 Q1 drawdown": -0.09660789143252124, + "n_pos_scen": 0 + }, + "AEF": { + "cik": "846676", + "name": "abrdn Emerging Markets ex-China Fund, Inc.", + "bdc": false, + "listed": true, + "days": 9298, + "last": "2026-08-27", + "known": false, + "sym": "aef", + "t5": 0.725742700730595, + "p5": 0.12664277180406214, + "t12": 0.6938603400474028, + "p12": 0.5283630470016207, + "vol5": 0.238106612682594, + "maxdd5": -0.4660793734139044, + "payout_12m": 0.1654972930457821, + "payout_5y_share": 0.8254990760822359, + "2022 bear mkt": -0.39666857941050226, + "2023 rate shock": -0.16332906521365664, + "2024 vol spike": -0.08921941830140756, + "2025 tariff crash": -0.17838153741662588, + "2026 Q1 drawdown": -0.10943857474682883, + "n_pos_scen": 0 + }, + "AGD": { + "cik": "1362481", + "name": "abrdn Global Dynamic Dividend Fund", + "bdc": false, + "listed": true, + "days": 5053, + "last": "2026-08-27", + "known": false, + "sym": "agd", + "t5": 0.6682157874310566, + "p5": 0.024469820554649413, + "t12": 0.19689516246613015, + "p12": 0.06530958439355405, + "vol5": 0.19092360687371457, + "maxdd5": -0.28159921854608405, + "payout_12m": 0.1315855780725761, + "payout_5y_share": 0.9633803615315298, + "2022 bear mkt": -0.2644703216952713, + "2023 rate shock": -0.12455399086410845, + "2024 vol spike": -0.05478316477889411, + "2025 tariff crash": -0.12179817035817664, + "2026 Q1 drawdown": -0.1444948767938451, + "n_pos_scen": 0 + }, + "AIO": { + "cik": "1778114", + "name": "Virtus Artificial Intelligence & Technology Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1716, + "last": "2026-08-27", + "known": false, + "sym": "aio", + "t5": 0.834617820615795, + "p5": -0.015292764464482134, + "t12": 0.22915030515518664, + "p12": 0.07887213236093715, + "vol5": 0.22446544589778142, + "maxdd5": -0.37389426170544593, + "payout_12m": 0.1502781727942495, + "payout_5y_share": 1.0183230744500504, + "2022 bear mkt": -0.33455096614329427, + "2023 rate shock": -0.1645092452037904, + "2024 vol spike": -0.06547314697675011, + "2025 tariff crash": -0.2785522881274829, + "2026 Q1 drawdown": -0.06482502290314485, + "n_pos_scen": 0 + }, + "AOD": { + "cik": "1379400", + "name": "abrdn Total Dynamic Dividend Fund", + "bdc": false, + "listed": true, + "days": 4869, + "last": "2026-08-27", + "known": false, + "sym": "aod", + "t5": 0.7287773051584956, + "p5": 0.037109375, + "t12": 0.3177550367836055, + "p12": 0.16575192096597147, + "vol5": 0.16819816922624903, + "maxdd5": -0.28879977038377935, + "payout_12m": 0.15200311581763404, + "payout_5y_share": 0.9490799524939523, + "2022 bear mkt": -0.2816273018559108, + "2023 rate shock": -0.13659165882152402, + "2024 vol spike": -0.07080949356242927, + "2025 tariff crash": -0.13995446213334872, + "2026 Q1 drawdown": -0.09536499649357455, + "n_pos_scen": 0 + }, + "ARDC": { + "cik": "1515324", + "name": "Ares Dynamic Credit Allocation Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3457, + "last": "2026-08-27", + "known": false, + "sym": "ardc", + "t5": 0.2545854177534461, + "p5": -0.23250000000000004, + "t12": -0.061660948758588185, + "p12": -0.15485203028217487, + "vol5": 0.13770226185482648, + "maxdd5": -0.2645922864734557, + "payout_12m": 0.09319108152358668, + "payout_5y_share": 1.9132494785116296, + "2022 bear mkt": -0.24613101424490658, + "2023 rate shock": -0.03795335862886551, + "2024 vol spike": 0.0038446815747832375, + "2025 tariff crash": -0.1525332967331411, + "2026 Q1 drawdown": -0.10302950336400163, + "n_pos_scen": 1 + }, + "ASA": { + "cik": "1230869", + "name": "ASA Gold & Precious Metals Ltd", + "bdc": false, + "listed": true, + "days": 12264, + "last": "2026-08-27", + "known": false, + "sym": "asa", + "t5": 2.2956107805489214, + "p5": 2.2710422981484117, + "t12": 0.7696737766767681, + "p12": 0.7674608220752794, + "vol5": 0.36252681298387046, + "maxdd5": -0.4842937775455348, + "payout_12m": 0.002212954601488626, + "payout_5y_share": 0.010702372810182971, + "2022 bear mkt": -0.3843835353651588, + "2023 rate shock": -0.08770769294272474, + "2024 vol spike": -0.0876472948018846, + "2025 tariff crash": -0.060007617134789304, + "2026 Q1 drawdown": -0.19797307539669085, + "n_pos_scen": 0 + }, + "ASCIX": { + "cik": "1716885", + "name": "Angel Oak Strategic Credit Fund", + "bdc": false, + "listed": true, + "days": 2179, + "last": "2026-08-27", + "known": false, + "sym": "ascix", + "t5": 0.42038963479769076, + "p5": -0.10596889680065313, + "t12": 0.05877540407879023, + "p12": -0.02637776731040975, + "vol5": 0.03469110710009817, + "maxdd5": -0.07543651349412239, + "payout_12m": 0.08515317138919998, + "payout_5y_share": 1.252073048498567, + "2022 bear mkt": -0.0626131586367139, + "2023 rate shock": 0.010453235606022071, + "2024 vol spike": 0.017287392804010038, + "2025 tariff crash": 0.011744450325854139, + "2026 Q1 drawdown": 0.0023148417206182437, + "n_pos_scen": 4 + }, + "ASGI": { + "cik": "1793855", + "name": "abrdn Global Infrastructure Income Fund", + "bdc": false, + "listed": true, + "days": 1528, + "last": "2026-08-27", + "known": false, + "sym": "asgi", + "t5": 0.9468445019110494, + "p5": 0.18168880455407987, + "t12": 0.3542092122215452, + "p12": 0.20687990343410378, + "vol5": 0.16972922373359892, + "maxdd5": -0.21592684638050774, + "payout_12m": 0.14732930878744144, + "payout_5y_share": 0.8081112535507456, + "2022 bear mkt": -0.20039005191398152, + "2023 rate shock": -0.15086784998815606, + "2024 vol spike": -0.018222493861510425, + "2025 tariff crash": -0.056398631951257605, + "2026 Q1 drawdown": -0.034181256288313144, + "n_pos_scen": 0 + }, + "AVK": { + "cik": "1219120", + "name": "ADVENT CONVERTIBLE & INCOME FUND", + "bdc": false, + "listed": true, + "days": 5870, + "last": "2026-08-27", + "known": false, + "sym": "avk", + "t5": 0.2958048190125595, + "p5": -0.3140600019055707, + "t12": 0.126185350398192, + "p12": 0.00801924619085792, + "vol5": 0.19735655793559811, + "maxdd5": -0.385056933140951, + "payout_12m": 0.11816610420733409, + "payout_5y_share": 2.0617136088382524, + "2022 bear mkt": -0.3696420542652562, + "2023 rate shock": -0.199832085784598, + "2024 vol spike": -0.02470100542584397, + "2025 tariff crash": -0.16289791104816476, + "2026 Q1 drawdown": -0.13849105980667265, + "n_pos_scen": 0 + }, + "AWP": { + "cik": "1390195", + "name": "abrdn Global Premier Properties Fund", + "bdc": false, + "listed": true, + "days": 4866, + "last": "2026-08-27", + "known": false, + "sym": "awp", + "t5": 0.05882506255212672, + "p5": -0.40092168966094777, + "t12": 0.10129224879453202, + "p12": -0.025000000000000022, + "vol5": 0.2193161570113422, + "maxdd5": -0.43927318778448243, + "payout_12m": 0.12629224879453205, + "payout_5y_share": 7.815491089460017, + "2022 bear mkt": -0.41820057578936376, + "2023 rate shock": -0.19845151032967334, + "2024 vol spike": 1.0417115903216256e-07, + "2025 tariff crash": -0.15170041844951376, + "2026 Q1 drawdown": -0.06545777775506167, + "n_pos_scen": 1 + }, + "BANX": { + "cik": "1578987", + "name": "ArrowMark Financial Corp.", + "bdc": false, + "listed": true, + "days": 3219, + "last": "2026-08-27", + "known": false, + "sym": "banx", + "t5": 0.5636606773035977, + "p5": -0.07023858938489824, + "t12": 0.13017695615707003, + "p12": -0.0004840271055179812, + "vol5": 0.20486916894038756, + "maxdd5": -0.27865507784624266, + "payout_12m": 0.13066098326258802, + "payout_5y_share": 1.1246114767503401, + "2022 bear mkt": -0.18166934686201197, + "2023 rate shock": 0.0636845844194669, + "2024 vol spike": -0.014011913568674594, + "2025 tariff crash": -0.11225518568349047, + "2026 Q1 drawdown": -0.09997370392067284, + "n_pos_scen": 1 + }, + "BBN": { + "cik": "1493683", + "name": "BlackRock Taxable Municipal Bond Trust", + "bdc": false, + "listed": true, + "days": 4023, + "last": "2026-08-27", + "known": false, + "sym": "bbn", + "t5": -0.14432754861420372, + "p5": -0.3969639468690702, + "t12": 0.043856696409684925, + "p12": -0.029321989656567404, + "vol5": 0.15391023629612288, + "maxdd5": -0.383602251846913, + "payout_12m": 0.07317868606625233, + "payout_5y_share": -1.750437810941963, + "2022 bear mkt": -0.3325489156701129, + "2023 rate shock": -0.08461691985655806, + "2024 vol spike": 0.05907436997026405, + "2025 tariff crash": -0.03760272855600333, + "2026 Q1 drawdown": -0.023241137427064795, + "n_pos_scen": 1 + }, + "BGB": { + "cik": "1546429", + "name": "Blackstone Strategic Credit 2027 Term Fund", + "bdc": false, + "listed": true, + "days": 3499, + "last": "2026-08-27", + "known": false, + "sym": "bgb", + "t5": 0.24180997416879602, + "p5": -0.1987087517934003, + "t12": -0.03149387690833427, + "p12": -0.10640000000000005, + "vol5": 0.10832940408472923, + "maxdd5": -0.2123192342044783, + "payout_12m": 0.07490612309166578, + "payout_5y_share": 1.821755812498831, + "2022 bear mkt": -0.19586781895344496, + "2023 rate shock": -0.031594532493371075, + "2024 vol spike": -0.018478523390183077, + "2025 tariff crash": -0.1015224117278164, + "2026 Q1 drawdown": -0.05840517356232189, + "n_pos_scen": 0 + }, + "BGH": { + "cik": "1521404", + "name": "BARINGS GLOBAL SHORT DURATION HIGH YIELD FUND", + "bdc": false, + "listed": true, + "days": 3477, + "last": "2026-08-27", + "known": false, + "sym": "bgh", + "t5": 0.39345926360598327, + "p5": -0.16014239856806656, + "t12": -0.02773903114881071, + "p12": -0.11995027967681793, + "vol5": 0.13188129377671648, + "maxdd5": -0.2660503547920726, + "payout_12m": 0.09221124852800722, + "payout_5y_share": 1.4070113818147025, + "2022 bear mkt": -0.2515395470699191, + "2023 rate shock": -0.06407269091410783, + "2024 vol spike": -0.018973584579076608, + "2025 tariff crash": -0.15272769081042903, + "2026 Q1 drawdown": -0.10971973464343976, + "n_pos_scen": 0 + }, + "BGX": { + "cik": "1504234", + "name": "Blackstone Long-Short Credit Income Fund", + "bdc": false, + "listed": true, + "days": 3919, + "last": "2026-08-27", + "known": false, + "sym": "bgx", + "t5": 0.14023326917748435, + "p5": -0.28246318607764387, + "t12": -0.06554569342088368, + "p12": -0.14308553157474013, + "vol5": 0.1161601659265577, + "maxdd5": -0.2594326816076541, + "payout_12m": 0.07753983815385646, + "payout_5y_share": 3.0142380458958575, + "2022 bear mkt": -0.2364632468068899, + "2023 rate shock": -0.021799717339882507, + "2024 vol spike": -0.019406892974958567, + "2025 tariff crash": -0.11888887903669154, + "2026 Q1 drawdown": -0.06831945813848206, + "n_pos_scen": 0 + }, + "BOT": { + "cik": "2081119", + "name": "RoboStrategy, Inc.", + "bdc": false, + "listed": false, + "days": 76, + "last": "2026-08-27", + "known": false, + "sym": "bot", + "t5": -0.31179487179487175, + "p5": -0.31179487179487175, + "t12": -0.31179487179487175, + "p12": -0.31179487179487175, + "vol5": 1.8034664659194632, + "maxdd5": -0.46128205128205124, + "payout_12m": 0.0, + "payout_5y_share": -0.0, + "n_pos_scen": 0 + }, + "BPRE": { + "cik": "1551047", + "name": "Bluerock Private Real Estate Fund", + "bdc": false, + "listed": false, + "days": 175, + "last": "2026-08-27", + "known": false, + "sym": "bpre", + "t5": -0.10013472538663126, + "p5": -0.1578231292517006, + "t12": -0.10013472538663126, + "p12": -0.1578231292517006, + "vol5": 0.3552948874685833, + "maxdd5": -0.31507907220420794, + "payout_12m": 0.05768840386506935, + "payout_5y_share": -0.5761078750885673, + "2026 Q1 drawdown": -0.012224893800121373, + "n_pos_scen": 0 + }, + "BRW": { + "cik": "826020", + "name": "Saba Capital Income & Opportunities Fund", + "bdc": false, + "listed": true, + "days": 8679, + "last": "2026-08-27", + "known": false, + "sym": "brw", + "t5": 0.3787847855467552, + "p5": -0.29212253829321666, + "t12": -0.1005193909668235, + "p12": -0.22328931572629052, + "vol5": 0.13032537875239628, + "maxdd5": -0.184039421106027, + "payout_12m": 0.12276992475946702, + "payout_5y_share": 1.7712097989140554, + "2022 bear mkt": -0.0951116559812557, + "2023 rate shock": -0.04193825708619092, + "2024 vol spike": -0.002762555801357869, + "2025 tariff crash": -0.08842190895783231, + "2026 Q1 drawdown": -0.0006823652058578489, + "n_pos_scen": 0 + }, + "BSL": { + "cik": "1486298", + "name": "Blackstone Senior Floating Rate 2027 Term Fund", + "bdc": false, + "listed": true, + "days": 4089, + "last": "2026-08-27", + "known": false, + "sym": "bsl", + "t5": 0.21713089684435594, + "p5": -0.2091463414634145, + "t12": -0.012179664793032119, + "p12": -0.08790436005625879, + "vol5": 0.10393619380923307, + "maxdd5": -0.24477603757505428, + "payout_12m": 0.07572469526322667, + "payout_5y_share": 1.9632269958030664, + "2022 bear mkt": -0.21623544631881098, + "2023 rate shock": -0.013070293928722498, + "2024 vol spike": -0.010392959631633003, + "2025 tariff crash": -0.0320775725635043, + "2026 Q1 drawdown": -0.04171423518402906, + "n_pos_scen": 0 + }, + "BST": { + "cik": "1616678", + "name": "BlackRock Science & Technology Trust", + "bdc": false, + "listed": true, + "days": 2974, + "last": "2026-08-27", + "known": false, + "sym": "bst", + "t5": 0.5139140191809617, + "p5": -0.046992480319690166, + "t12": 0.40701194239521143, + "p12": 0.27322955801104976, + "vol5": 0.24020609831011322, + "maxdd5": -0.4341474786861429, + "payout_12m": 0.13378238438416168, + "payout_5y_share": 1.091440354934437, + "2022 bear mkt": -0.3905550582588727, + "2023 rate shock": -0.13390085854827283, + "2024 vol spike": -0.08877853637586264, + "2025 tariff crash": -0.2275179248522221, + "2026 Q1 drawdown": -0.13694533850707524, + "n_pos_scen": 0 + }, + "BTA": { + "cik": "1343793", + "name": "BlackRock Long-Term Municipal Advantage Trust", + "bdc": false, + "listed": false, + "days": 2, + "last": "2026-08-27", + "known": false, + "sym": "bta", + "error": "no data", + "n_pos_scen": 0 + }, + "BTO": { + "cik": "925683", + "name": "JOHN HANCOCK FINANCIAL OPPORTUNITIES FUND", + "bdc": false, + "listed": true, + "days": 8062, + "last": "2026-08-27", + "known": false, + "sym": "bto", + "t5": 0.4024871053824113, + "p5": -0.036938054097785944, + "t12": 0.1368763521204608, + "p12": 0.058493644724723515, + "vol5": 0.30563669572693614, + "maxdd5": -0.5180268358120159, + "payout_12m": 0.07838270739573727, + "payout_5y_share": 1.0917745030929384, + "2022 bear mkt": -0.30097111329487725, + "2023 rate shock": -0.22095475588712887, + "2024 vol spike": -0.0901589849701735, + "2025 tariff crash": -0.20381355262291945, + "2026 Q1 drawdown": -0.0619060733283483, + "n_pos_scen": 0 + }, + "BWG": { + "cik": "1504545", + "name": "BrandywineGLOBAL-Global Income Opportunities Fund Inc", + "bdc": false, + "listed": true, + "days": 3625, + "last": "2026-08-27", + "known": false, + "sym": "bwg", + "t5": 0.09839619796976184, + "p5": -0.38848920863309344, + "t12": -0.004140951156042516, + "p12": -0.11458333333333337, + "vol5": 0.13930652417085557, + "maxdd5": -0.3409512945469083, + "payout_12m": 0.11044238217729085, + "payout_5y_share": 4.94821361647002, + "2022 bear mkt": -0.27185974026128135, + "2023 rate shock": -0.11922443551656015, + "2024 vol spike": -0.015055336197282831, + "2025 tariff crash": -0.09281321142428389, + "2026 Q1 drawdown": -0.1120654205186179, + "n_pos_scen": 0 + }, + "BXSY": { + "cik": "1059213", + "name": "BEXIL INVESTMENT TRUST", + "bdc": false, + "listed": true, + "days": 7087, + "last": "2026-08-26", + "known": false, + "sym": "bxsy", + "t5": 0.8350650412328806, + "p5": 0.21066666666666678, + "t12": 0.3692247142045, + "p12": 0.2815808045165844, + "vol5": 0.18436419576123228, + "maxdd5": -0.2708685573680789, + "payout_12m": 0.08764390968791558, + "payout_5y_share": 0.7477242415086125, + "2022 bear mkt": -0.23193771980135058, + "2023 rate shock": -0.14401686881922549, + "2024 vol spike": -0.06371821487447882, + "2025 tariff crash": -0.11949342016467035, + "2026 Q1 drawdown": -0.09747785444461388, + "n_pos_scen": 0 + }, + "CAF": { + "cik": "1368493", + "name": "Morgan Stanley China A Share Fund, Inc.", + "bdc": false, + "listed": true, + "days": 5009, + "last": "2026-08-27", + "known": false, + "sym": "caf", + "t5": 0.022308654264479033, + "p5": -0.08895270205643235, + "t12": 0.29682510648091953, + "p12": 0.27680958445040216, + "vol5": 0.21648646389235585, + "maxdd5": -0.45261506816096964, + "payout_12m": 0.020015522030517374, + "payout_5y_share": 4.987362975904259, + "2022 bear mkt": -0.34337049645504647, + "2023 rate shock": -0.11852955937989029, + "2024 vol spike": -0.03341913331570723, + "2025 tariff crash": -0.10339505447190633, + "2026 Q1 drawdown": -0.0900269590311028, + "n_pos_scen": 0 + }, + "CCID": { + "cik": "1517767", + "name": "Carlyle Credit Income Fund", + "bdc": false, + "listed": false, + "days": 211, + "last": "2026-08-27", + "known": false, + "sym": "ccid", + "t5": 0.0644254361033676, + "p5": 0.0010820743430479673, + "t12": 0.0644254361033676, + "p12": 0.0010820743430479673, + "vol5": 0.051446468808750964, + "maxdd5": -0.013784930279846619, + "payout_12m": 0.06334336176031963, + "payout_5y_share": 0.9832042372004773, + "2026 Q1 drawdown": 0.011370929711526312, + "n_pos_scen": 1 + }, + "CEE": { + "cik": "860489", + "name": "CENTRAL & EASTERN EUROPE FUND, INC.", + "bdc": false, + "listed": true, + "days": 9191, + "last": "2026-08-27", + "known": false, + "sym": "cee", + "t5": -0.14683513227193024, + "p5": -0.2691458026509572, + "t12": 0.20780736415665846, + "p12": 0.18225126966937055, + "vol5": 0.3910599738780425, + "maxdd5": -0.7989296145566835, + "payout_12m": 0.025556094487287906, + "payout_5y_share": -0.8329796043123702, + "2022 bear mkt": -0.7671284142077534, + "2023 rate shock": -0.11821089352190939, + "2024 vol spike": -0.05860468644981298, + "2025 tariff crash": -0.2171946042008842, + "2026 Q1 drawdown": -0.09434950262573849, + "n_pos_scen": 0 + }, + "CET": { + "cik": "18748", + "name": "CENTRAL SECURITIES CORP", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false, + "sym": "cet", + "t5": 0.7713599105461624, + "p5": 0.29667464592278603, + "t12": 0.15737764219043715, + "p12": 0.0953049759229534, + "vol5": 0.1462502913417677, + "maxdd5": -0.2489227786316789, + "payout_12m": 0.062072666267483756, + "payout_5y_share": 0.6153875229103816, + "2022 bear mkt": -0.21542457427526085, + "2023 rate shock": -0.0657504661237801, + "2024 vol spike": -0.06108746701979173, + "2025 tariff crash": -0.14858929243497487, + "2026 Q1 drawdown": -0.06934866149206342, + "n_pos_scen": 0 + }, + "CEV": { + "cik": "1074692", + "name": "Eaton Vance California Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 6939, + "last": "2026-08-27", + "known": false, + "sym": "cev", + "t5": -0.033438051774140276, + "p5": -0.25105485232067515, + "t12": 0.19037346654189924, + "p12": 0.12341772151898733, + "vol5": 0.11285763589680746, + "maxdd5": -0.33002849757157293, + "payout_12m": 0.0669557450229119, + "payout_5y_share": -6.50805860390561, + "2022 bear mkt": -0.28254200404690333, + "2023 rate shock": -0.11594674358123147, + "2024 vol spike": -0.003636122756243587, + "2025 tariff crash": -0.04510045341130031, + "2026 Q1 drawdown": -0.02598398213442521, + "n_pos_scen": 0 + }, + "CFND": { + "cik": "2044327", + "name": "C1 Fund Inc.", + "bdc": false, + "listed": false, + "days": 266, + "last": "2026-08-27", + "known": false, + "sym": "cfnd", + "t5": -0.6935483870967742, + "p5": -0.6935483870967742, + "t12": -0.6720368239355581, + "p12": -0.6720368239355581, + "vol5": 0.4841226295078859, + "maxdd5": -0.7745604963805583, + "payout_12m": 0.0, + "payout_5y_share": -0.0, + "2026 Q1 drawdown": -0.2175732217573222, + "n_pos_scen": 0 + }, + "CGO": { + "cik": "1285650", + "name": "CALAMOS GLOBAL TOTAL RETURN FUND", + "bdc": false, + "listed": true, + "days": 5240, + "last": "2026-08-27", + "known": false, + "sym": "cgo", + "t5": 0.27658479727744556, + "p5": -0.18683431490786384, + "t12": 0.22144645942204022, + "p12": 0.12834625322997417, + "vol5": 0.20626224592263873, + "maxdd5": -0.4368727509325222, + "payout_12m": 0.09310020619206605, + "payout_5y_share": 1.6755046435919907, + "2022 bear mkt": -0.37021730126855923, + "2023 rate shock": -0.16790251751533647, + "2024 vol spike": -0.053525891320026386, + "2025 tariff crash": -0.21740807764372716, + "2026 Q1 drawdown": -0.12150071669956442, + "n_pos_scen": 0 + }, + "CHI": { + "cik": "1171471", + "name": "CALAMOS CONVERTIBLE OPPORTUNITIES & INCOME FUND", + "bdc": false, + "listed": true, + "days": 6081, + "last": "2026-08-27", + "known": false, + "sym": "chi", + "t5": 0.39984757693485884, + "p5": -0.14688524590163932, + "t12": 0.38287284872125715, + "p12": 0.25337186897880537, + "vol5": 0.20352344475911596, + "maxdd5": -0.36030006367052037, + "payout_12m": 0.12950097974245178, + "payout_5y_share": 1.3673530974668608, + "2022 bear mkt": -0.2918426218249983, + "2023 rate shock": -0.08793496432058923, + "2024 vol spike": -0.0699066322095434, + "2025 tariff crash": -0.19477919487334838, + "2026 Q1 drawdown": -0.07590771558946319, + "n_pos_scen": 0 + }, + "CHW": { + "cik": "1396277", + "name": "Calamos Global Dynamic Income Fund", + "bdc": false, + "listed": true, + "days": 4803, + "last": "2026-08-27", + "known": false, + "sym": "chw", + "t5": 0.29104925805390014, + "p5": -0.18631178707224327, + "t12": 0.26752527683803384, + "p12": 0.17260273972602747, + "vol5": 0.19125665346208362, + "maxdd5": -0.4457447144560256, + "payout_12m": 0.09492253711200638, + "payout_5y_share": 1.6401383336896866, + "2022 bear mkt": -0.4086748339036752, + "2023 rate shock": -0.1534777506692212, + "2024 vol spike": -0.08948886251679278, + "2025 tariff crash": -0.19274826533979106, + "2026 Q1 drawdown": -0.12142899521037731, + "n_pos_scen": 0 + }, + "CHY": { + "cik": "1222719", + "name": "CALAMOS CONVERTIBLE & HIGH INCOME FUND", + "bdc": false, + "listed": true, + "days": 5850, + "last": "2026-08-27", + "known": false, + "sym": "chy", + "t5": 0.3441292534420448, + "p5": -0.18656716417910435, + "t12": 0.32802246185514394, + "p12": 0.20220588235294112, + "vol5": 0.19524030243572005, + "maxdd5": -0.35986544364016604, + "payout_12m": 0.12581657950220282, + "payout_5y_share": 1.5421427045594784, + "2022 bear mkt": -0.292131920631613, + "2023 rate shock": -0.047770215314502984, + "2024 vol spike": -0.019383000463899402, + "2025 tariff crash": -0.15483796785946724, + "2026 Q1 drawdown": -0.09699022977987204, + "n_pos_scen": 0 + }, + "CIK": { + "cik": "810766", + "name": "CREDIT SUISSE ASSET MANAGEMENT INCOME FUND, INC.", + "bdc": false, + "listed": true, + "days": 9922, + "last": "2026-08-27", + "known": false, + "sym": "cik", + "t5": 0.12638657494925498, + "p5": -0.29885057471264365, + "t12": -0.09256978287128781, + "p12": -0.17567567567567566, + "vol5": 0.1589209895007692, + "maxdd5": -0.2610620161171022, + "payout_12m": 0.08310589280438785, + "payout_5y_share": 3.3645753105710323, + "2022 bear mkt": -0.2268396804789209, + "2023 rate shock": -0.1229989009858643, + "2024 vol spike": -0.04918035406722654, + "2025 tariff crash": -0.0805454758281634, + "2026 Q1 drawdown": -0.12036454331558466, + "n_pos_scen": 0 + }, + "CLM": { + "cik": "814083", + "name": "Cornerstone Strategic Investment Fund, Inc.", + "bdc": false, + "listed": true, + "days": 6056, + "last": "2026-08-27", + "known": false, + "sym": "clm", + "t5": 0.3591674618988572, + "p5": -0.45600642125112134, + "t12": -0.013861255172223474, + "p12": -0.18103448275862055, + "vol5": 0.24303823937477276, + "maxdd5": -0.43442796884967005, + "payout_12m": 0.16717322758639708, + "payout_5y_share": 2.2696206355673008, + "2022 bear mkt": -0.34687509846932196, + "2023 rate shock": -0.24072742530497937, + "2024 vol spike": -0.08667529577591948, + "2025 tariff crash": -0.23792589381238505, + "2026 Q1 drawdown": -0.13003850412053208, + "n_pos_scen": 0 + }, + "CPZ": { + "cik": "1717457", + "name": "Calamos Long/Short Equity & Dynamic Income Trust", + "bdc": false, + "listed": true, + "days": 1696, + "last": "2026-08-27", + "known": false, + "sym": "cpz", + "t5": 0.15538972021162034, + "p5": -0.3301602870821787, + "t12": -0.0917579856346955, + "p12": -0.19214496629274724, + "vol5": 0.15950918713370366, + "maxdd5": -0.25459421440912844, + "payout_12m": 0.10038698065805174, + "payout_5y_share": 3.124724123529818, + "2022 bear mkt": -0.19229662386522917, + "2023 rate shock": -0.11403013184402, + "2024 vol spike": -0.015394580057702223, + "2025 tariff crash": -0.01857039044326203, + "2026 Q1 drawdown": -0.0876401710066298, + "n_pos_scen": 0 + }, + "CRF": { + "cik": "33934", + "name": "CORNERSTONE TOTAL RETURN FUND INC", + "bdc": false, + "listed": true, + "days": 9775, + "last": "2026-08-27", + "known": false, + "sym": "crf", + "t5": 0.3455034116920883, + "p5": -0.45326631517385874, + "t12": -0.01691776993325944, + "p12": -0.1847133757961783, + "vol5": 0.2520134740078826, + "maxdd5": -0.4312436927721268, + "payout_12m": 0.16779560586291886, + "payout_5y_share": 2.3119011269787646, + "2022 bear mkt": -0.3417875728228732, + "2023 rate shock": -0.24169323120308295, + "2024 vol spike": -0.08494209741928627, + "2025 tariff crash": -0.26484840971181733, + "2026 Q1 drawdown": -0.13335977356719886, + "n_pos_scen": 0 + }, + "CSQ": { + "cik": "1275214", + "name": "CALAMOS STRATEGIC TOTAL RETURN FUND", + "bdc": false, + "listed": true, + "days": 5637, + "last": "2026-08-27", + "known": false, + "sym": "csq", + "t5": 0.6699233491608418, + "p5": 0.13290108049702853, + "t12": 0.21370470036540778, + "p12": 0.12802576654115128, + "vol5": 0.2018533652812731, + "maxdd5": -0.3306993888872295, + "payout_12m": 0.08567893382425651, + "payout_5y_share": 0.8016174825619934, + "2022 bear mkt": -0.3225339245477026, + "2023 rate shock": -0.16174360136789678, + "2024 vol spike": -0.08343037197580994, + "2025 tariff crash": -0.23464189049768935, + "2026 Q1 drawdown": -0.1371444023878401, + "n_pos_scen": 0 + }, + "DHF": { + "cik": "1057861", + "name": "BNY MELLON HIGH YIELD STRATEGIES FUND", + "bdc": false, + "listed": true, + "days": 7129, + "last": "2026-08-27", + "known": false, + "sym": "dhf", + "t5": 0.0888885182034358, + "p5": -0.29216867469879515, + "t12": -0.005927632377656034, + "p12": -0.08914728682170536, + "vol5": 0.15031379495757966, + "maxdd5": -0.33840178666036325, + "payout_12m": 0.08321965444404933, + "payout_5y_share": 4.286911297476236, + "2022 bear mkt": -0.29452509107242786, + "2023 rate shock": -0.06545664023714204, + "2024 vol spike": 0.0, + "2025 tariff crash": -0.1086752639796571, + "2026 Q1 drawdown": -0.06506392614324785, + "n_pos_scen": 0 + }, + "DMA": { + "cik": "1523289", + "name": "Destra Multi-Alternative Fund", + "bdc": false, + "listed": false, + "days": 1159, + "last": "2026-08-27", + "known": false, + "sym": "dma", + "t5": 0.19804315414496143, + "p5": -0.14702581369248047, + "t12": -0.03347717143024653, + "p12": -0.12643678160919536, + "vol5": 0.24002874954976458, + "maxdd5": -0.388523266148624, + "payout_12m": 0.09295961017894883, + "payout_5y_share": 1.7423928099269825, + "2022 bear mkt": -0.23057711945656767, + "2023 rate shock": 0.19760447260760494, + "2024 vol spike": -0.04394303894301943, + "2025 tariff crash": -0.14495739552645948, + "2026 Q1 drawdown": -0.07218563608339268, + "n_pos_scen": 1 + }, + "DMB": { + "cik": "1565381", + "name": "BNY Mellon Municipal Bond Infrastructure Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3355, + "last": "2026-08-27", + "known": false, + "sym": "dmb", + "t5": -0.14192426587056717, + "p5": -0.3056467498358504, + "t12": 0.11026489503035974, + "p12": 0.057499999999999885, + "vol5": 0.14575487116126307, + "maxdd5": -0.4038263496247664, + "payout_12m": 0.05276489503035986, + "payout_5y_share": -1.153590493922975, + "2022 bear mkt": -0.18655241995151983, + "2023 rate shock": -0.21600285482357784, + "2024 vol spike": 0.0075048701358635395, + "2025 tariff crash": -0.05528777512535543, + "2026 Q1 drawdown": -0.06570785663134449, + "n_pos_scen": 1 + }, + "DMO": { + "cik": "1478102", + "name": "Western Asset Mortgage Opportunity Fund Inc.", + "bdc": false, + "listed": true, + "days": 4153, + "last": "2026-08-27", + "known": false, + "sym": "dmo", + "t5": 0.16827516310830948, + "p5": -0.36256218905472626, + "t12": -0.012902377104419993, + "p12": -0.13502109704641352, + "vol5": 0.125848319977753, + "maxdd5": -0.29034121716389893, + "payout_12m": 0.12211871994199353, + "payout_5y_share": 3.1545793351652547, + "2022 bear mkt": -0.23894571340919235, + "2023 rate shock": -0.061804660266742584, + "2024 vol spike": 0.008323288537936513, + "2025 tariff crash": -0.034295795878153346, + "2026 Q1 drawdown": -0.021834285957855526, + "n_pos_scen": 1 + }, + "DNP": { + "cik": "806628", + "name": "DNP SELECT INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 9976, + "last": "2026-08-27", + "known": false, + "sym": "dnp", + "t5": 0.4891943404069157, + "p5": 0.012987012987013102, + "t12": 0.1880147587987342, + "p12": 0.10191725529767903, + "vol5": 0.14480883533733152, + "maxdd5": -0.24311328932460718, + "payout_12m": 0.08609750350105516, + "payout_5y_share": 0.9734522419531461, + "2022 bear mkt": -0.0279393680151252, + "2023 rate shock": -0.07800801554413683, + "2024 vol spike": 0.024868572806145073, + "2025 tariff crash": -0.04649607027205571, + "2026 Q1 drawdown": 0.013617516644079508, + "n_pos_scen": 2 + }, + "DPG": { + "cik": "1515671", + "name": "Duff & Phelps Utility & Infrastructure Fund Inc.", + "bdc": false, + "listed": true, + "days": 3791, + "last": "2026-08-27", + "known": false, + "sym": "dpg", + "t5": 0.5594294082874265, + "p5": 0.016632016632016633, + "t12": 0.213145435546501, + "p12": 0.14074650077760498, + "vol5": 0.2086464052157761, + "maxdd5": -0.4111426684887266, + "payout_12m": 0.07239893476889603, + "payout_5y_share": 0.9702696776650838, + "2022 bear mkt": -0.07322989705524818, + "2023 rate shock": -0.15658895825081076, + "2024 vol spike": 0.009619549970584229, + "2025 tariff crash": -0.08198552476550436, + "2026 Q1 drawdown": 0.06811492824966336, + "n_pos_scen": 2 + }, + "DSM": { + "cik": "855887", + "name": "BNY MELLON STRATEGIC MUNICIPAL BOND FUND, INC.", + "bdc": false, + "listed": true, + "days": 9257, + "last": "2026-08-27", + "known": false, + "sym": "dsm", + "t5": -0.13698640107435545, + "p5": -0.3116113744075829, + "t12": 0.08594964333750266, + "p12": 0.03197158081705154, + "vol5": 0.12410703399932255, + "maxdd5": -0.38556306485866776, + "payout_12m": 0.05397806252045112, + "payout_5y_share": -1.2747613775066768, + "2022 bear mkt": -0.2839824797415923, + "2023 rate shock": -0.15567559434124767, + "2024 vol spike": 0.01692051056061583, + "2025 tariff crash": -0.07729424099412963, + "2026 Q1 drawdown": -0.059612781831333894, + "n_pos_scen": 1 + }, + "DTF": { + "cik": "879535", + "name": "DTF TAX-FREE INCOME 2028 TERM FUND INC", + "bdc": false, + "listed": true, + "days": 8751, + "last": "2026-08-27", + "known": false, + "sym": "dtf", + "t5": -0.07716156062804003, + "p5": -0.23215476984656436, + "t12": 0.0563357337821031, + "p12": 0.020390070921985748, + "vol5": 0.0808662941790314, + "maxdd5": -0.25685768825537725, + "payout_12m": 0.035945662860117356, + "payout_5y_share": -2.0086842199275163, + "2022 bear mkt": -0.1713889575291111, + "2023 rate shock": -0.03570696983144328, + "2024 vol spike": 0.008151967178605668, + "2025 tariff crash": -0.01926676177475961, + "2026 Q1 drawdown": -0.003042780064243078, + "n_pos_scen": 1 + }, + "DXR": { + "cik": "27367", + "name": "DAXOR CORP", + "bdc": false, + "listed": true, + "days": 10859, + "last": "2026-08-27", + "known": false, + "sym": "dxr", + "t5": 0.05683060109289606, + "p5": 0.05683060109289606, + "t12": -0.14726631393298062, + "p12": -0.14726631393298062, + "vol5": 0.49248705864480635, + "maxdd5": -0.5045678144764583, + "payout_12m": 0.0, + "payout_5y_share": 0.0, + "2022 bear mkt": 0.020554066130473725, + "2023 rate shock": -0.21450151057401812, + "2024 vol spike": -0.04347826086956508, + "2025 tariff crash": 0.015214384508990264, + "2026 Q1 drawdown": -0.2110754414125201, + "n_pos_scen": 2 + }, + "DXYZ": { + "cik": "1843974", + "name": "Destiny Tech100 Inc.", + "bdc": false, + "listed": false, + "days": 608, + "last": "2026-08-27", + "known": false, + "sym": "dxyz", + "t5": 2.9333335555555555, + "p5": 2.9333335555555555, + "t12": 0.24911792519407205, + "p12": 0.24911792519407205, + "vol5": 1.5945189313655337, + "maxdd5": -0.9034973453903463, + "payout_12m": 0.0, + "payout_5y_share": 0.0, + "2024 vol spike": -0.315308988764045, + "2025 tariff crash": -0.47511314282458617, + "2026 Q1 drawdown": -0.17905407926738082, + "n_pos_scen": 0 + }, + "EAD": { + "cik": "1210123", + "name": "ALLSPRING INCOME OPPORTUNITIES FUND", + "bdc": false, + "listed": true, + "days": 5914, + "last": "2026-08-27", + "known": false, + "sym": "ead", + "t5": 0.14549737837304555, + "p5": -0.282339707536558, + "t12": -0.012600792488461132, + "p12": -0.10267229254571031, + "vol5": 0.13545085806872284, + "maxdd5": -0.2943311380724394, + "payout_12m": 0.09007150005724918, + "payout_5y_share": 2.9405140538866474, + "2022 bear mkt": -0.26361494310187217, + "2023 rate shock": -0.08707086131449615, + "2024 vol spike": 0.01481485351145051, + "2025 tariff crash": -0.11121894511865316, + "2026 Q1 drawdown": -0.07045061934014518, + "n_pos_scen": 1 + }, + "ECAT": { + "cik": "1864843", + "name": "BlackRock ESG Capital Allocation Term Trust", + "bdc": false, + "listed": false, + "days": 1234, + "last": "2026-08-27", + "known": false, + "sym": "ecat", + "t5": 0.5683922778955146, + "p5": -0.22899999999999998, + "t12": 0.14704490881662458, + "p12": -0.07276001640168483, + "vol5": 0.16784025400665092, + "maxdd5": -0.3223326001687352, + "payout_12m": 0.2198049252183094, + "payout_5y_share": 1.4028907655956864, + "2022 bear mkt": -0.2694596155150689, + "2023 rate shock": -0.0987090641156575, + "2024 vol spike": -0.0793918717992389, + "2025 tariff crash": -0.13890318468563867, + "2026 Q1 drawdown": -0.10732425357739728, + "n_pos_scen": 0 + }, + "ECCV": { + "cik": "1604174", + "name": "Eagle Point Credit Co", + "bdc": false, + "listed": false, + "days": 1151, + "last": "2026-08-27", + "known": false, + "sym": "eccv", + "t5": 0.252570137359436, + "p5": -0.012383191732975751, + "t12": 0.09747499550520278, + "p12": 0.03665037289580231, + "vol5": 0.07892030266649686, + "maxdd5": -0.147167536102211, + "payout_12m": 0.06082462260940047, + "payout_5y_share": 1.0490287247037169, + "2022 bear mkt": -0.12986358288803368, + "2023 rate shock": -0.03490864977921593, + "2024 vol spike": 0.013303802842911105, + "2025 tariff crash": 0.005047068875825955, + "2026 Q1 drawdown": -0.0061459728085562215, + "n_pos_scen": 2 + }, + "EDD": { + "cik": "1388141", + "name": "Morgan Stanley Emerging Markets Domestic Debt Fund, Inc.", + "bdc": false, + "listed": true, + "days": 4868, + "last": "2026-08-27", + "known": false, + "sym": "edd", + "t5": 0.5393400183680708, + "p5": -0.02310231023102305, + "t12": 0.2516157894714588, + "p12": 0.11698113207547167, + "vol5": 0.15600021318928922, + "maxdd5": -0.32040058344959954, + "payout_12m": 0.13463465739598712, + "payout_5y_share": 1.042834407691322, + "2022 bear mkt": -0.2318844286557461, + "2023 rate shock": -0.08732347424990616, + "2024 vol spike": -0.042944902319902334, + "2025 tariff crash": -0.05433301720231476, + "2026 Q1 drawdown": -0.13752109120182066, + "n_pos_scen": 0 + }, + "EDF": { + "cik": "1501103", + "name": "Virtus Stone Harbor Emerging Markets Income Fund", + "bdc": false, + "listed": true, + "days": 3941, + "last": "2026-08-27", + "known": false, + "sym": "edf", + "t5": 0.2770483893073403, + "p5": -0.37545126353790614, + "t12": 0.15436816025743982, + "p12": 0.003868471953578423, + "vol5": 0.257267322376371, + "maxdd5": -0.5202869217756165, + "payout_12m": 0.1504996883038614, + "payout_5y_share": 2.355182986180092, + "2022 bear mkt": -0.4146828781188988, + "2023 rate shock": -0.24324434356581015, + "2024 vol spike": -0.039399922554072986, + "2025 tariff crash": -0.14572805171659287, + "2026 Q1 drawdown": -0.02316227497683898, + "n_pos_scen": 0 + }, + "EEA": { + "cik": "791718", + "name": "EUROPEAN EQUITY FUND, INC / MD", + "bdc": false, + "listed": true, + "days": 10105, + "last": "2026-08-27", + "known": false, + "sym": "eea", + "t5": 0.37245266685242573, + "p5": -0.02849740932642486, + "t12": 0.12226459228277009, + "p12": 0.062322946175637384, + "vol5": 0.18333588739265072, + "maxdd5": -0.37515569547360605, + "payout_12m": 0.05994164610713271, + "payout_5y_share": 1.0765128346838129, + "2022 bear mkt": -0.36170587874486304, + "2023 rate shock": -0.15497747873572343, + "2024 vol spike": -0.06126908931406505, + "2025 tariff crash": -0.10177005725142296, + "2026 Q1 drawdown": -0.11839695336595057, + "n_pos_scen": 0 + }, + "EFR": { + "cik": "1258623", + "name": "Eaton Vance Senior Floating-Rate Trust", + "bdc": false, + "listed": true, + "days": 5724, + "last": "2026-08-27", + "known": false, + "sym": "efr", + "t5": 0.17753754868664862, + "p5": -0.2626050420168068, + "t12": -0.022951636198778935, + "p12": -0.09999999999999998, + "vol5": 0.12993637080310774, + "maxdd5": -0.25086956526147486, + "payout_12m": 0.07704836380122104, + "payout_5y_share": 2.4791521228013638, + "2022 bear mkt": -0.20870850068662605, + "2023 rate shock": -0.026221378831829956, + "2024 vol spike": -0.05503772421082098, + "2025 tariff crash": -0.15395303534054872, + "2026 Q1 drawdown": -0.07732550146917305, + "n_pos_scen": 0 + }, + "EFT": { + "cik": "1288992", + "name": "Eaton Vance Floating-Rate Income Trust", + "bdc": false, + "listed": true, + "days": 5559, + "last": "2026-08-27", + "known": false, + "sym": "eft", + "t5": 0.13542263940710608, + "p5": -0.28887399463806973, + "t12": -0.048176872958704986, + "p12": -0.12386457473162671, + "vol5": 0.12444598939876636, + "maxdd5": -0.24956967882600467, + "payout_12m": 0.07568770177292172, + "payout_5y_share": 3.1331292603865135, + "2022 bear mkt": -0.21213593729996227, + "2023 rate shock": -0.005358536834760619, + "2024 vol spike": -0.05086872196729686, + "2025 tariff crash": -0.14977812285751968, + "2026 Q1 drawdown": -0.07688057089325173, + "n_pos_scen": 0 + }, + "EHI": { + "cik": "1228509", + "name": "WESTERN ASSET GLOBAL HIGH INCOME FUND INC.", + "bdc": false, + "listed": true, + "days": 5808, + "last": "2026-08-27", + "known": false, + "sym": "ehi", + "t5": -0.013604143622691689, + "p5": -0.455672068636797, + "t12": -0.006096925218976423, + "p12": -0.1322188449848024, + "vol5": 0.13863984509478092, + "maxdd5": -0.3290242570482086, + "payout_12m": 0.12612191976582598, + "payout_5y_share": -32.49509394157944, + "2022 bear mkt": -0.2764823401075859, + "2023 rate shock": -0.13710495767122022, + "2024 vol spike": 0.0013905657183370668, + "2025 tariff crash": -0.07310530584218977, + "2026 Q1 drawdown": -0.08016516926345474, + "n_pos_scen": 1 + }, + "EICA": { + "cik": "1754836", + "name": "Eagle Point Income Co Inc.", + "bdc": false, + "listed": false, + "days": 1219, + "last": "2026-08-27", + "known": false, + "sym": "eica", + "t5": 0.3006323511188693, + "p5": 0.015040609756097556, + "t12": 0.06961557021071263, + "p12": 0.017107943670384707, + "vol5": 0.091384367139063, + "maxdd5": -0.13457402907872318, + "payout_12m": 0.05250762654032792, + "payout_5y_share": 0.9499700890469019, + "2022 bear mkt": -0.104939860572272, + "2023 rate shock": -0.02845305998854264, + "2024 vol spike": 0.0, + "2025 tariff crash": 0.003129502687531982, + "2026 Q1 drawdown": 0.012885934819897082, + "n_pos_scen": 2 + }, + "EIIA": { + "cik": "1896036", + "name": "Eagle Point Institutional Income Fund", + "bdc": false, + "listed": false, + "days": 471, + "last": "2026-08-27", + "known": false, + "sym": "eiia", + "t5": 0.18362148029493497, + "p5": 0.017373737373737264, + "t12": 0.07545100284951789, + "p12": -0.007880181555562804, + "vol5": 0.04349892205445101, + "maxdd5": -0.018511958980658605, + "payout_12m": 0.0833311844050807, + "payout_5y_share": 0.9053828705343658, + "2025 tariff crash": 0.005310219806372363, + "2026 Q1 drawdown": 0.001079038937757959, + "n_pos_scen": 2 + }, + "EIM": { + "cik": "1176984", + "name": "Eaton Vance Municipal Bond Fund", + "bdc": false, + "listed": true, + "days": 6038, + "last": "2026-08-27", + "known": false, + "sym": "eim", + "t5": -0.08918610536920546, + "p5": -0.3023088023088023, + "t12": 0.04866101604299544, + "p12": -0.014271151885830835, + "vol5": 0.10774027457543363, + "maxdd5": -0.3172150054336793, + "payout_12m": 0.06293216792882628, + "payout_5y_share": -2.3896401357288632, + "2022 bear mkt": -0.2502553852902627, + "2023 rate shock": -0.11142970333038926, + "2024 vol spike": 0.011745154148059767, + "2025 tariff crash": -0.04623082232436393, + "2026 Q1 drawdown": -0.029409984770206177, + "n_pos_scen": 1 + }, + "EMD": { + "cik": "1227862", + "name": "WESTERN ASSET EMERGING MARKETS DEBT FUND INC.", + "bdc": false, + "listed": true, + "days": 5718, + "last": "2026-08-27", + "known": false, + "sym": "emd", + "t5": 0.2938292294611029, + "p5": -0.24212034383954162, + "t12": 0.15044404639225428, + "p12": 0.033203125, + "vol5": 0.16217593870608202, + "maxdd5": -0.4043406428699181, + "payout_12m": 0.11724092139225428, + "payout_5y_share": 1.8240172166792328, + "2022 bear mkt": -0.32630025591517386, + "2023 rate shock": -0.07398111279007324, + "2024 vol spike": -0.03921473420504151, + "2025 tariff crash": -0.10198908573995447, + "2026 Q1 drawdown": -0.09988562348802466, + "n_pos_scen": 0 + }, + "EMF": { + "cik": "809708", + "name": "TEMPLETON EMERGING MARKETS FUND", + "bdc": false, + "listed": true, + "days": 9951, + "last": "2026-08-27", + "known": false, + "sym": "emf", + "t5": 0.9824742975749015, + "p5": 0.3351001177856303, + "t12": 0.6157167114783952, + "p12": 0.4711226476314083, + "vol5": 0.21325320820170296, + "maxdd5": -0.4032817484130762, + "payout_12m": 0.14459406384698692, + "payout_5y_share": 0.6589222551543817, + "2022 bear mkt": -0.343016123607901, + "2023 rate shock": -0.14820697461212484, + "2024 vol spike": -0.07956319619225816, + "2025 tariff crash": -0.1366284770168349, + "2026 Q1 drawdown": -0.1524260177787926, + "n_pos_scen": 0 + }, + "EMO": { + "cik": "1517518", + "name": "ClearBridge Energy Midstream Opportunity Fund Inc.", + "bdc": false, + "listed": true, + "days": 3824, + "last": "2026-08-27", + "known": false, + "sym": "emo", + "t5": 3.046789367310306, + "p5": 1.7087043871762804, + "t12": 0.25618854048253925, + "p12": 0.1489406817260619, + "vol5": 0.2590543870024383, + "maxdd5": -0.28585058427959, + "payout_12m": 0.10724785875647735, + "payout_5y_share": 0.4391786956100881, + "2022 bear mkt": 0.19480321683632607, + "2023 rate shock": -0.01436328855525415, + "2024 vol spike": -0.10699826186074324, + "2025 tariff crash": -0.1749154803168721, + "2026 Q1 drawdown": 0.1188753555607509, + "n_pos_scen": 2 + }, + "EOD": { + "cik": "1386067", + "name": "ALLSPRING GLOBAL DIVIDEND OPPORTUNITY FUND", + "bdc": false, + "listed": true, + "days": 4886, + "last": "2026-08-27", + "known": false, + "sym": "eod", + "t5": 0.8524101914824733, + "p5": 0.14629948364888135, + "t12": 0.2792073677734628, + "p12": 0.1704745166959578, + "vol5": 0.17562926322193367, + "maxdd5": -0.2560542377055254, + "payout_12m": 0.10873285107750497, + "payout_5y_share": 0.8283696216789198, + "2022 bear mkt": -0.21517786511435866, + "2023 rate shock": -0.15006829380677444, + "2024 vol spike": -0.08669345738601197, + "2025 tariff crash": -0.13316833265957806, + "2026 Q1 drawdown": -0.06351633625207798, + "n_pos_scen": 0 + }, + "EOI": { + "cik": "1300391", + "name": "Eaton Vance Enhanced Equity Income Fund", + "bdc": false, + "listed": true, + "days": 5493, + "last": "2026-08-27", + "known": false, + "sym": "eoi", + "t5": 0.5676315133922409, + "p5": 0.0445826311776758, + "t12": 0.021728333337981187, + "p12": -0.05664798423932671, + "vol5": 0.18648656916938874, + "maxdd5": -0.2680538725732766, + "payout_12m": 0.0783763175773079, + "payout_5y_share": 0.92145849882216, + "2022 bear mkt": -0.23575701352892242, + "2023 rate shock": -0.12065514186111259, + "2024 vol spike": -0.08238602685033103, + "2025 tariff crash": -0.20128895065640695, + "2026 Q1 drawdown": -0.12166060107138943, + "n_pos_scen": 0 + }, + "EOS": { + "cik": "1308335", + "name": "Eaton Vance Enhanced Equity Income Fund II", + "bdc": false, + "listed": true, + "days": 5430, + "last": "2026-08-27", + "known": false, + "sym": "eos", + "t5": 0.3550852856801674, + "p5": -0.10153332372703383, + "t12": -0.018823739831158037, + "p12": -0.09515855989810351, + "vol5": 0.19816561622241155, + "maxdd5": -0.3432418152986656, + "payout_12m": 0.07633482006694547, + "payout_5y_share": 1.2859406678385625, + "2022 bear mkt": -0.315482679453872, + "2023 rate shock": -0.11920679207075291, + "2024 vol spike": -0.08258640553313379, + "2025 tariff crash": -0.23079822309300757, + "2026 Q1 drawdown": -0.127155551025251, + "n_pos_scen": 0 + }, + "EOT": { + "cik": "1454741", + "name": "Eaton Vance National Municipal Opportunities Trust", + "bdc": false, + "listed": true, + "days": 4341, + "last": "2026-08-27", + "known": false, + "sym": "eot", + "t5": -0.07115031710577657, + "p5": -0.261046729345634, + "t12": 0.10290306496921842, + "p12": 0.051587365786774475, + "vol5": 0.13324035326295972, + "maxdd5": -0.3320930458564294, + "payout_12m": 0.05131569918244394, + "payout_5y_share": -2.6689468151989453, + "2022 bear mkt": -0.24515832910901303, + "2023 rate shock": -0.11545287965502427, + "2024 vol spike": 0.029001676617346428, + "2025 tariff crash": -0.06793192867469577, + "2026 Q1 drawdown": -0.058886515169137676, + "n_pos_scen": 1 + }, + "ERC": { + "cik": "1227073", + "name": "ALLSPRING MULTI-SECTOR INCOME FUND", + "bdc": false, + "listed": true, + "days": 5831, + "last": "2026-08-27", + "known": false, + "sym": "erc", + "t5": 0.12214813156871096, + "p5": -0.29141104294478526, + "t12": 0.06689316208081597, + "p12": -0.028391167192428957, + "vol5": 0.13347225859013628, + "maxdd5": -0.3365015734747838, + "payout_12m": 0.09528432927324493, + "payout_5y_share": 3.3857183830999515, + "2022 bear mkt": -0.2884542717682277, + "2023 rate shock": -0.08467194041428283, + "2024 vol spike": -0.01965042487906188, + "2025 tariff crash": -0.06332733265045165, + "2026 Q1 drawdown": -0.060605259724588745, + "n_pos_scen": 0 + }, + "ERH": { + "cik": "1279014", + "name": "ALLSPRING UTILITIES & HIGH INCOME FUND", + "bdc": false, + "listed": true, + "days": 5619, + "last": "2026-08-27", + "known": false, + "sym": "erh", + "t5": 0.17227517185462204, + "p5": -0.20976616231086653, + "t12": 0.032192642182290676, + "p12": -0.051197357555738954, + "vol5": 0.16676504425698682, + "maxdd5": -0.378444878121591, + "payout_12m": 0.08338999973802963, + "payout_5y_share": 2.2176227140140776, + "2022 bear mkt": -0.24292891671194827, + "2023 rate shock": -0.18572934072311742, + "2024 vol spike": 0.003009463155784875, + "2025 tariff crash": -0.09773917149147815, + "2026 Q1 drawdown": 0.020898419167379112, + "n_pos_scen": 2 + }, + "ETB": { + "cik": "1308927", + "name": "Eaton Vance Tax-Managed Buy-Write Income Fund", + "bdc": false, + "listed": true, + "days": 5368, + "last": "2026-08-27", + "known": false, + "sym": "etb", + "t5": 0.46721466340498585, + "p5": -0.04730139478471784, + "t12": 0.14245281200833526, + "p12": 0.05083612040133789, + "vol5": 0.16261661999166185, + "maxdd5": -0.23444374204262852, + "payout_12m": 0.09161669160699737, + "payout_5y_share": 1.1012412462399892, + "2022 bear mkt": -0.12755262586782068, + "2023 rate shock": -0.13832899042839453, + "2024 vol spike": -0.04657192172563107, + "2025 tariff crash": -0.17181723313267994, + "2026 Q1 drawdown": -0.08517390477830278, + "n_pos_scen": 0 + }, + "ETG": { + "cik": "1270523", + "name": "Eaton Vance Tax-Advantaged Global Dividend Income Fund", + "bdc": false, + "listed": true, + "days": 5681, + "last": "2026-08-27", + "known": false, + "sym": "etg", + "t5": 0.6572569703414584, + "p5": 0.12014792606968228, + "t12": 0.25178562778650115, + "p12": 0.16819277108433717, + "vol5": 0.19850475794538885, + "maxdd5": -0.3163884441531496, + "payout_12m": 0.08359285670216399, + "payout_5y_share": 0.8171979431313403, + "2022 bear mkt": -0.3037958603953185, + "2023 rate shock": -0.1626668313186953, + "2024 vol spike": -0.09105812644418565, + "2025 tariff crash": -0.1673825328723395, + "2026 Q1 drawdown": -0.16184007637626807, + "n_pos_scen": 0 + }, + "ETJ": { + "cik": "1395325", + "name": "Eaton Vance Risk-Managed Diversified Equity Income Fund", + "bdc": false, + "listed": true, + "days": 4802, + "last": "2026-08-27", + "known": false, + "sym": "etj", + "t5": 0.17212641860855182, + "p5": -0.25636523266022826, + "t12": 0.033590217721447324, + "p12": -0.055741360089186176, + "vol5": 0.1559536639011206, + "maxdd5": -0.28547471861106943, + "payout_12m": 0.0893315778106335, + "payout_5y_share": 2.489400841152987, + "2022 bear mkt": -0.17920316719991958, + "2023 rate shock": -0.10747546892231608, + "2024 vol spike": -0.028439292270723948, + "2025 tariff crash": -0.11950679029582667, + "2026 Q1 drawdown": -0.0935129083378855, + "n_pos_scen": 0 + }, + "ETO": { + "cik": "1281926", + "name": "Eaton Vance Tax-Advantaged Global Dividend Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5599, + "last": "2026-08-27", + "known": false, + "sym": "eto", + "t5": 0.4863790943647197, + "p5": 0.008590550429526056, + "t12": 0.24401141947506488, + "p12": 0.1590493967093236, + "vol5": 0.20142588087651375, + "maxdd5": -0.35447729378232773, + "payout_12m": 0.08496202276574127, + "payout_5y_share": 0.9823377473886978, + "2022 bear mkt": -0.3426577157177241, + "2023 rate shock": -0.1354421664647305, + "2024 vol spike": -0.08429143339812906, + "2025 tariff crash": -0.17545120388957725, + "2026 Q1 drawdown": -0.13846371766213406, + "n_pos_scen": 0 + }, + "ETV": { + "cik": "1322436", + "name": "Eaton Vance Tax-Managed Buy-Write Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5325, + "last": "2026-08-27", + "known": false, + "sym": "etv", + "t5": 0.43446287199168565, + "p5": -0.07891566265060257, + "t12": 0.18462491668305958, + "p12": 0.09136331192005698, + "vol5": 0.1700742523974402, + "maxdd5": -0.2269801862746239, + "payout_12m": 0.0932616047630026, + "payout_5y_share": 1.181639600845139, + "2022 bear mkt": -0.14344028053688218, + "2023 rate shock": -0.1432888867862323, + "2024 vol spike": -0.06564583803641955, + "2025 tariff crash": -0.19273027771209994, + "2026 Q1 drawdown": -0.0867798343714915, + "n_pos_scen": 0 + }, + "ETW": { + "cik": "1322435", + "name": "Eaton Vance Tax-Managed Global Buy-Write Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5223, + "last": "2026-08-27", + "known": false, + "sym": "etw", + "t5": 0.3927472860752115, + "p5": -0.11675579322638152, + "t12": 0.2086004053628685, + "p12": 0.10974244120940657, + "vol5": 0.16719915915737416, + "maxdd5": -0.2791877863290011, + "payout_12m": 0.09885796415346193, + "payout_5y_share": 1.2972796945158844, + "2022 bear mkt": -0.22304242703686772, + "2023 rate shock": -0.1387027344557239, + "2024 vol spike": -0.06907527936966695, + "2025 tariff crash": -0.15158608670954032, + "2026 Q1 drawdown": -0.08281342374460299, + "n_pos_scen": 0 + }, + "ETX": { + "cik": "1563696", + "name": "Eaton Vance Municipal Income 2028 Term Trust", + "bdc": false, + "listed": true, + "days": 3377, + "last": "2026-08-27", + "known": false, + "sym": "etx", + "t5": 0.0005429311582829666, + "p5": -0.20795107942119173, + "t12": 0.02645188740054305, + "p12": -0.02316810469655739, + "vol5": 0.13015350471799217, + "maxdd5": -0.23524062116729338, + "payout_12m": 0.04961999209710044, + "payout_5y_share": 384.0155559294888, + "2022 bear mkt": -0.06858389223499817, + "2023 rate shock": -0.04535443474511636, + "2024 vol spike": -0.004932310643516624, + "2025 tariff crash": -0.01882253936386369, + "2026 Q1 drawdown": -0.01456816824238305, + "n_pos_scen": 0 + }, + "ETY": { + "cik": "1340736", + "name": "Eaton Vance Tax-Managed Diversified Equity Income Fund", + "bdc": false, + "listed": true, + "days": 4967, + "last": "2026-08-27", + "known": false, + "sym": "ety", + "t5": 0.5363608928620418, + "p5": 0.012517385257301727, + "t12": -0.004360368208870979, + "p12": -0.08022741629816799, + "vol5": 0.17945700609403434, + "maxdd5": -0.2405323801756959, + "payout_12m": 0.075867048089297, + "payout_5y_share": 0.9766623826906758, + "2022 bear mkt": -0.206525152366272, + "2023 rate shock": -0.1273864600152812, + "2024 vol spike": -0.05836960665246049, + "2025 tariff crash": -0.2102548171584948, + "2026 Q1 drawdown": -0.1269374861810323, + "n_pos_scen": 0 + }, + "EVF": { + "cik": "1070732", + "name": "Eaton Vance Senior Income Trust", + "bdc": false, + "listed": true, + "days": 7000, + "last": "2026-08-27", + "known": false, + "sym": "evf", + "t5": 0.13997801569669122, + "p5": -0.28260869565217395, + "t12": -0.03033978656897185, + "p12": -0.108108108108108, + "vol5": 0.12362898766213416, + "maxdd5": -0.23758952887276075, + "payout_12m": 0.07776832153913615, + "payout_5y_share": 3.0189505776717067, + "2022 bear mkt": -0.1937858157013529, + "2023 rate shock": 0.033388757855167706, + "2024 vol spike": -0.05205041271682531, + "2025 tariff crash": -0.1495975798443525, + "2026 Q1 drawdown": -0.07417476492111585, + "n_pos_scen": 1 + }, + "EVG": { + "cik": "1287498", + "name": "Eaton Vance Short Duration Diversified Income Fund", + "bdc": false, + "listed": true, + "days": 5411, + "last": "2026-08-27", + "known": false, + "sym": "evg", + "t5": 0.23951793256812337, + "p5": -0.22538293216630212, + "t12": 0.022611165392526944, + "p12": -0.05767524401064772, + "vol5": 0.12257148128757978, + "maxdd5": -0.23332604882922026, + "payout_12m": 0.08028640940317466, + "payout_5y_share": 1.9409856278806974, + "2022 bear mkt": -0.1561693597305588, + "2023 rate shock": -0.010812065603448828, + "2024 vol spike": -0.002897586611195324, + "2025 tariff crash": -0.05350866730681747, + "2026 Q1 drawdown": -0.03941590162361264, + "n_pos_scen": 0 + }, + "EVN": { + "cik": "1074540", + "name": "Eaton Vance Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 6939, + "last": "2026-08-27", + "known": false, + "sym": "evn", + "t5": -0.028343316273342523, + "p5": -0.252271139063592, + "t12": 0.08380255062294828, + "p12": 0.02490421455938696, + "vol5": 0.1201023247497782, + "maxdd5": -0.32805460782998774, + "payout_12m": 0.05889833606356132, + "payout_5y_share": -7.9005512492149075, + "2022 bear mkt": -0.2629798951004364, + "2023 rate shock": -0.1121451348055651, + "2024 vol spike": 0.004757422988404647, + "2025 tariff crash": -0.07593190591761279, + "2026 Q1 drawdown": -0.0526138755888409, + "n_pos_scen": 1 + }, + "EVT": { + "cik": "1253327", + "name": "Eaton Vance Tax-Advantaged Dividend Income Fund", + "bdc": false, + "listed": true, + "days": 5766, + "last": "2026-08-27", + "known": false, + "sym": "evt", + "t5": 0.5502132480555377, + "p5": 0.03690437119312073, + "t12": 0.28768020681193485, + "p12": 0.19241866501854132, + "vol5": 0.17102633570377423, + "maxdd5": -0.2821458481002621, + "payout_12m": 0.09526154179339352, + "payout_5y_share": 0.9329271490216905, + "2022 bear mkt": -0.22386007304869648, + "2023 rate shock": -0.18711612255728272, + "2024 vol spike": -0.04468553249271945, + "2025 tariff crash": -0.15421735697653705, + "2026 Q1 drawdown": -0.062572104594942, + "n_pos_scen": 0 + }, + "EVV": { + "cik": "1222922", + "name": "Eaton Vance Ltd Duration Income Fund", + "bdc": false, + "listed": true, + "days": 5841, + "last": "2026-08-27", + "known": false, + "sym": "evv", + "t5": 0.11813144753297178, + "p5": -0.31475903614457834, + "t12": -0.03471401758602555, + "p12": -0.11736178467507286, + "vol5": 0.12568574827488926, + "maxdd5": -0.2590547449603442, + "payout_12m": 0.08264776708904731, + "payout_5y_share": 3.6644813275205625, + "2022 bear mkt": -0.242672207247139, + "2023 rate shock": -0.07285587746359834, + "2024 vol spike": -0.015243985371733992, + "2025 tariff crash": -0.07159512871632345, + "2026 Q1 drawdown": -0.07174285239132228, + "n_pos_scen": 0 + }, + "EXG": { + "cik": "1379438", + "name": "Eaton Vance Tax-Managed Global Diversified Equity Income Fund", + "bdc": false, + "listed": true, + "days": 4869, + "last": "2026-08-27", + "known": false, + "sym": "exg", + "t5": 0.4744997966283597, + "p5": -0.06203007518796988, + "t12": 0.2199270561852198, + "p12": 0.12134831460674156, + "vol5": 0.1753676045349763, + "maxdd5": -0.2781060962988713, + "payout_12m": 0.09857874157847824, + "payout_5y_share": 1.130727295625278, + "2022 bear mkt": -0.27308586096537935, + "2023 rate shock": -0.133456174928537, + "2024 vol spike": -0.08212996059745115, + "2025 tariff crash": -0.1471771578116895, + "2026 Q1 drawdown": -0.13502270998056465, + "n_pos_scen": 0 + }, + "FCT": { + "cik": "1282850", + "name": "FIRST TRUST SENIOR FLOATING RATE INCOME FUND II", + "bdc": false, + "listed": true, + "days": 5581, + "last": "2026-08-11", + "known": false, + "sym": "fct", + "t5": 0.31890299359706575, + "p5": -0.21457489878542513, + "t12": 0.06344198896541875, + "p12": -0.0536585365853659, + "vol5": 0.11918126692476727, + "maxdd5": -0.23861420027132907, + "payout_12m": 0.11710052555078465, + "payout_5y_share": 1.6728531970337686, + "2022 bear mkt": -0.14795370197037683, + "2023 rate shock": -0.019484493406974335, + "2024 vol spike": -0.042257553034845796, + "2025 tariff crash": -0.08388365505377315, + "2026 Q1 drawdown": -0.03884897476406901, + "n_pos_scen": 0 + }, + "FFA": { + "cik": "1291334", + "name": "FIRST TRUST ENHANCED EQUITY INCOME FUND", + "bdc": false, + "listed": true, + "days": 5535, + "last": "2026-08-27", + "known": false, + "sym": "ffa", + "t5": 0.5674147271800365, + "p5": 0.09933450098220065, + "t12": 0.17267691071563118, + "p12": 0.09103763721520575, + "vol5": 0.1726789621763881, + "maxdd5": -0.29963084818584385, + "payout_12m": 0.08163927350042544, + "payout_5y_share": 0.8249349263881857, + "2022 bear mkt": -0.2782272657982998, + "2023 rate shock": -0.11423491879585868, + "2024 vol spike": -0.07405561797939542, + "2025 tariff crash": -0.19425018327241195, + "2026 Q1 drawdown": -0.08797108040594603, + "n_pos_scen": 0 + }, + "FFC": { + "cik": "1174164", + "name": "Flaherty & Crumrine PREFERRED & INCOME SECURITIES FUND INC", + "bdc": false, + "listed": true, + "days": 5932, + "last": "2026-08-27", + "known": false, + "sym": "ffc", + "t5": 0.0015574406701310828, + "p5": -0.31322702771335753, + "t12": 0.06082147379514735, + "p12": -0.017262578129628836, + "vol5": 0.15314220969513223, + "maxdd5": -0.39342508692665434, + "payout_12m": 0.07808405192477619, + "payout_5y_share": 202.11650717776274, + "2022 bear mkt": -0.2618886768577735, + "2023 rate shock": -0.09017323000197408, + "2024 vol spike": -0.02918831969458069, + "2025 tariff crash": -0.0789341352652686, + "2026 Q1 drawdown": -0.08711818279742445, + "n_pos_scen": 0 + }, + "FINS": { + "cik": "1745059", + "name": "Angel Oak Financial Strategies Income Term Trust", + "bdc": false, + "listed": true, + "days": 1823, + "last": "2026-08-27", + "known": false, + "sym": "fins", + "t5": 0.12396449444103674, + "p5": -0.30932896890343686, + "t12": 0.06205478743006987, + "p12": -0.04524886877828049, + "vol5": 0.10881355556795214, + "maxdd5": -0.26371396923016033, + "payout_12m": 0.10730365620835036, + "payout_5y_share": 3.495302951851008, + "2022 bear mkt": -0.18789911404194382, + "2023 rate shock": 0.0213626839458827, + "2024 vol spike": -0.002393252421530323, + "2025 tariff crash": -0.014803243238983188, + "2026 Q1 drawdown": -0.033238344656103425, + "n_pos_scen": 1 + }, + "FLC": { + "cik": "1245648", + "name": "FLAHERTY & CRUMRINE TOTAL RETURN FUND INC", + "bdc": false, + "listed": true, + "days": 5787, + "last": "2026-08-27", + "known": false, + "sym": "flc", + "t5": -0.011062272913907711, + "p5": -0.31559405940594054, + "t12": 0.037980124463764975, + "p12": -0.03602551051862346, + "vol5": 0.14044153153980662, + "maxdd5": -0.40120665649838294, + "payout_12m": 0.07400563498238844, + "payout_5y_share": -27.528862184295722, + "2022 bear mkt": -0.2938264131769258, + "2023 rate shock": -0.10156878779659195, + "2024 vol spike": -0.017803892714400416, + "2025 tariff crash": -0.07258524862421756, + "2026 Q1 drawdown": -0.06564807649326865, + "n_pos_scen": 0 + }, + "FMN": { + "cik": "1199004", + "name": "Federated Hermes Premier Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 5958, + "last": "2026-08-27", + "known": false, + "sym": "fmn", + "t5": -0.13991981752936644, + "p5": -0.31199502796768175, + "t12": 0.09519121029412458, + "p12": 0.043355325164938785, + "vol5": 0.1109142132665064, + "maxdd5": -0.4061848394491313, + "payout_12m": 0.0518358851291858, + "payout_5y_share": -1.2298129991643254, + "2022 bear mkt": -0.29107799671824375, + "2023 rate shock": -0.13269240667078852, + "2024 vol spike": -0.01658062304406116, + "2025 tariff crash": -0.07470021938831728, + "2026 Q1 drawdown": -0.03789049920522736, + "n_pos_scen": 0 + }, + "FMY": { + "cik": "1319183", + "name": "FIRST TRUST MORTGAGE INCOME FUND", + "bdc": false, + "listed": true, + "days": 5347, + "last": "2026-08-27", + "known": false, + "sym": "fmy", + "t5": 0.17889280553763443, + "p5": -0.15251991310644464, + "t12": 0.023398153708829028, + "p12": -0.04146601146601159, + "vol5": 0.13137606710579, + "maxdd5": -0.1994427743649203, + "payout_12m": 0.06486416517484062, + "payout_5y_share": 1.8525771209639752, + "2022 bear mkt": -0.16151563606517172, + "2023 rate shock": -0.035249465216918296, + "2024 vol spike": 0.02097228814891583, + "2025 tariff crash": 0.009090844908157703, + "2026 Q1 drawdown": -0.026748311340957565, + "n_pos_scen": 2 + }, + "FOF": { + "cik": "1375340", + "name": "Cohen & Steers Closed-End Opportunity Fund, Inc.", + "bdc": false, + "listed": true, + "days": 4967, + "last": "2026-08-27", + "known": false, + "sym": "fof", + "t5": 0.4147005567901969, + "p5": -0.0795377294357581, + "t12": 0.11715166918053299, + "p12": 0.03437738731856377, + "vol5": 0.17928851661944745, + "maxdd5": -0.2995750434262563, + "payout_12m": 0.08277428186196922, + "payout_5y_share": 1.191795569437823, + "2022 bear mkt": -0.28418901905587124, + "2023 rate shock": -0.10612892198093349, + "2024 vol spike": -0.028168711736722973, + "2025 tariff crash": -0.1587275083529227, + "2026 Q1 drawdown": -0.15074440319363747, + "n_pos_scen": 0 + }, + "FPF": { + "cik": "1567569", + "name": "First Trust Intermediate Duration Preferred & Income Fund", + "bdc": false, + "listed": true, + "days": 3335, + "last": "2026-08-27", + "known": false, + "sym": "fpf", + "t5": 0.050935022551166664, + "p5": -0.31010452961672463, + "t12": 0.014418114797861259, + "p12": -0.07235809850901087, + "vol5": 0.14516191782127275, + "maxdd5": -0.37350229373813937, + "payout_12m": 0.08677621330687213, + "payout_5y_share": 7.0882377995456824, + "2022 bear mkt": -0.30666639390910644, + "2023 rate shock": -0.09088136519196544, + "2024 vol spike": -0.04421866338105529, + "2025 tariff crash": -0.10422867637780076, + "2026 Q1 drawdown": -0.07454991203370642, + "n_pos_scen": 0 + }, + "FT": { + "cik": "833040", + "name": "FRANKLIN UNIVERSAL TRUST", + "bdc": false, + "listed": true, + "days": 9551, + "last": "2026-08-27", + "known": false, + "sym": "ft", + "t5": 0.31788040617924374, + "p5": -0.08823529411764708, + "t12": 0.04762460920222655, + "p12": -0.017743979721166037, + "vol5": 0.13343799004122447, + "maxdd5": -0.2312704662586773, + "payout_12m": 0.06536858892339259, + "payout_5y_share": 1.2775738686702625, + "2022 bear mkt": -0.19296962263590756, + "2023 rate shock": -0.12187351845520589, + "2024 vol spike": 0.0004324644127833288, + "2025 tariff crash": -0.07174550619662112, + "2026 Q1 drawdown": -0.015654179276445412, + "n_pos_scen": 1 + }, + "FTF": { + "cik": "1233087", + "name": "FRANKLIN LTD DURATION INCOME TRUST", + "bdc": false, + "listed": true, + "days": 5782, + "last": "2026-08-27", + "known": false, + "sym": "ftf", + "t5": 0.10677113356421808, + "p5": -0.38329764453961457, + "t12": 0.01532470471854519, + "p12": -0.10280373831775702, + "vol5": 0.11089550641742527, + "maxdd5": -0.2854553945805457, + "payout_12m": 0.11812844303630221, + "payout_5y_share": 4.5898995519147325, + "2022 bear mkt": -0.27613322691112185, + "2023 rate shock": -0.044983462978968713, + "2024 vol spike": -0.02722533001290206, + "2025 tariff crash": -0.09702021011631179, + "2026 Q1 drawdown": -0.0534881768203731, + "n_pos_scen": 0 + }, + "FTHY": { + "cik": "1810523", + "name": "FIRST TRUST HIGH YIELD OPPORTUNITIES 2027 TERM FUND", + "bdc": false, + "listed": true, + "days": 1550, + "last": "2026-08-27", + "known": false, + "sym": "fthy", + "t5": 0.12718653235855015, + "p5": -0.33448784435862666, + "t12": 0.023028796549236397, + "p12": -0.08128415300546454, + "vol5": 0.12747792250731238, + "maxdd5": -0.3117744769535583, + "payout_12m": 0.10431294955470094, + "payout_5y_share": 3.629899865621587, + "2022 bear mkt": -0.29474037256309715, + "2023 rate shock": -0.05406939735402505, + "2024 vol spike": -0.0009320799727707829, + "2025 tariff crash": -0.06137029347940026, + "2026 Q1 drawdown": -0.048720455979925914, + "n_pos_scen": 0 + }, + "FUND": { + "cik": "825202", + "name": "SPROTT FOCUS TRUST INC.", + "bdc": false, + "listed": true, + "days": 9627, + "last": "2026-08-27", + "known": false, + "sym": "fund", + "t5": 0.8901558035997397, + "p5": 0.3064713064713065, + "t12": 0.3907260408772075, + "p12": 0.3032886723507915, + "vol5": 0.18620277335001462, + "maxdd5": -0.2467630183666869, + "payout_12m": 0.08743736852641604, + "payout_5y_share": 0.6557104888470604, + "2022 bear mkt": -0.16000069262762828, + "2023 rate shock": -0.165068763220234, + "2024 vol spike": -0.07071976132813718, + "2025 tariff crash": -0.14772148170042732, + "2026 Q1 drawdown": 0.00017580176545495263, + "n_pos_scen": 1 + }, + "FXBY": { + "cik": "1068897", + "name": "FOXBY CORP.", + "bdc": false, + "listed": true, + "days": 6750, + "last": "2026-08-27", + "known": false, + "sym": "fxby", + "t5": 1.1831013389717988, + "p5": 0.669349362843729, + "t12": 0.3900058297595177, + "p12": 0.38277772222222217, + "vol5": 0.27991834721218767, + "maxdd5": -0.3438963801274153, + "payout_12m": 0.007228107537295525, + "payout_5y_share": 0.4342417333197828, + "2022 bear mkt": -0.11330044860892252, + "2023 rate shock": -0.07109733048734934, + "2024 vol spike": -0.02290076768174998, + "2025 tariff crash": -0.1144508737022617, + "2026 Q1 drawdown": -0.12243154441645787, + "n_pos_scen": 0 + }, + "GBAB": { + "cik": "1495825", + "name": "Guggenheim Taxable Municipal Bond & Investment Grade Debt Trust", + "bdc": false, + "listed": true, + "days": 3981, + "last": "2026-08-27", + "known": false, + "sym": "gbab", + "t5": -0.11290853958850744, + "p5": -0.4383116655158955, + "t12": -0.010146994601725079, + "p12": -0.10594315245478036, + "vol5": 0.1466377458198133, + "maxdd5": -0.35795605178513956, + "payout_12m": 0.09579615785305529, + "payout_5y_share": -2.8820063310827706, + "2022 bear mkt": -0.29412812031951663, + "2023 rate shock": -0.08078990366681849, + "2024 vol spike": 0.04192355378693957, + "2025 tariff crash": -0.049583023397634096, + "2026 Q1 drawdown": -0.06603587729412985, + "n_pos_scen": 1 + }, + "GDO": { + "cik": "1472341", + "name": "WESTERN ASSET GLOBAL CORPORATE OPPORTUNITY FUND INC.", + "bdc": false, + "listed": true, + "days": 4214, + "last": "2026-08-27", + "known": false, + "sym": "gdo", + "t5": -0.04173543975477467, + "p5": -0.4429824561403508, + "t12": -0.029774464580656357, + "p12": -0.14907872696817415, + "vol5": 0.12212531488350317, + "maxdd5": -0.3461142345172592, + "payout_12m": 0.11930426238751779, + "payout_5y_share": -9.614059867182116, + "2022 bear mkt": -0.2902394170894883, + "2023 rate shock": -0.0736966517862303, + "2024 vol spike": 0.0025281773630467796, + "2025 tariff crash": -0.06211804552162126, + "2026 Q1 drawdown": -0.07360190040720349, + "n_pos_scen": 1 + }, + "GF": { + "cik": "858706", + "name": "NEW GERMANY FUND INC", + "bdc": false, + "listed": true, + "days": 9214, + "last": "2026-08-27", + "known": false, + "sym": "gf", + "t5": -0.148576213662436, + "p5": -0.4318292366895081, + "t12": 0.028395302859342886, + "p12": 0.003427592116538314, + "vol5": 0.20739316125681764, + "maxdd5": -0.538297009066524, + "payout_12m": 0.024967710742804572, + "payout_5y_share": -1.9064493302448853, + "2022 bear mkt": -0.5110649292085852, + "2023 rate shock": -0.18886463751813254, + "2024 vol spike": -0.060141565739687874, + "2025 tariff crash": 0.0033860310633762047, + "2026 Q1 drawdown": -0.16290721576878553, + "n_pos_scen": 1 + }, + "GHY": { + "cik": "1554697", + "name": "PGIM Global High Yield Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3439, + "last": "2026-08-27", + "known": false, + "sym": "ghy", + "t5": 0.24266985475760428, + "p5": -0.25831202046035806, + "t12": -0.03896667045280666, + "p12": -0.13303437967115106, + "vol5": 0.14215930448919764, + "maxdd5": -0.2949550336068909, + "payout_12m": 0.0940677092183444, + "payout_5y_share": 2.0644586272092935, + "2022 bear mkt": -0.2627294238980564, + "2023 rate shock": -0.05778354520962514, + "2024 vol spike": -0.006498971156435052, + "2025 tariff crash": -0.12234725660184187, + "2026 Q1 drawdown": -0.11351825728365617, + "n_pos_scen": 0 + }, + "GLO": { + "cik": "1350869", + "name": "Clough Global Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5113, + "last": "2026-08-27", + "known": false, + "sym": "glo", + "t5": -0.15710125365091498, + "p5": -0.5399361022364217, + "t12": 0.15854345342494414, + "p12": 0.03971119133573997, + "vol5": 0.1975412982815115, + "maxdd5": -0.5863056529400636, + "payout_12m": 0.11883226208920417, + "payout_5y_share": -2.436866923011197, + "2022 bear mkt": -0.4490189785125561, + "2023 rate shock": -0.16276423185609545, + "2024 vol spike": -0.08030986713917743, + "2025 tariff crash": -0.13498230327789607, + "2026 Q1 drawdown": -0.07420936645060627, + "n_pos_scen": 0 + }, + "GLQ": { + "cik": "1316463", + "name": "Clough Global Equity Fund", + "bdc": false, + "listed": true, + "days": 5368, + "last": "2026-08-27", + "known": false, + "sym": "glq", + "t5": -0.011699738234976498, + "p5": -0.4573539288112828, + "t12": 0.21628845063366664, + "p12": 0.09485094850948506, + "vol5": 0.19979067207972037, + "maxdd5": -0.5747674317630578, + "payout_12m": 0.12143750212418158, + "payout_5y_share": -38.090953970578425, + "2022 bear mkt": -0.4378740613489944, + "2023 rate shock": -0.1636096897476107, + "2024 vol spike": -0.09310980633416432, + "2025 tariff crash": -0.1839469332933149, + "2026 Q1 drawdown": -0.08382355833088173, + "n_pos_scen": 0 + }, + "GLV": { + "cik": "1288795", + "name": "Clough Global Dividend & Income Fund", + "bdc": false, + "listed": true, + "days": 5557, + "last": "2026-08-27", + "known": false, + "sym": "glv", + "t5": -0.05860383707529315, + "p5": -0.48, + "t12": 0.18181772463530965, + "p12": 0.06076388888888906, + "vol5": 0.16962718148586386, + "maxdd5": -0.4688975765906854, + "payout_12m": 0.12105383574642059, + "payout_5y_share": -7.190589967399313, + "2022 bear mkt": -0.333761107715948, + "2023 rate shock": -0.12474772178284133, + "2024 vol spike": -0.04625214020115875, + "2025 tariff crash": -0.0761205589706716, + "2026 Q1 drawdown": -0.04997988256060504, + "n_pos_scen": 0 + }, + "GOF": { + "cik": "1380936", + "name": "GUGGENHEIM STRATEGIC OPPORTUNITIES FUND", + "bdc": false, + "listed": true, + "days": 4802, + "last": "2026-08-27", + "known": false, + "sym": "gof", + "t5": -0.04585803036374847, + "p5": -0.5396298054105364, + "t12": -0.2229616280828397, + "p12": -0.3516042780748664, + "vol5": 0.184595039177863, + "maxdd5": -0.3193149338124939, + "payout_12m": 0.12864264999202668, + "payout_5y_share": -10.767400412319555, + "2022 bear mkt": -0.11079432311726078, + "2023 rate shock": -0.23767700752732623, + "2024 vol spike": -0.007920833227509805, + "2025 tariff crash": -0.09199502481475053, + "2026 Q1 drawdown": -0.14581484708564973, + "n_pos_scen": 0 + }, + "GRF": { + "cik": "850027", + "name": "EAGLE CAPITAL GROWTH FUND, INC.", + "bdc": false, + "listed": true, + "days": 5685, + "last": "2026-08-27", + "known": false, + "sym": "grf", + "t5": 0.575524080268208, + "p5": 0.13509149623250827, + "t12": 0.09722152710137166, + "p12": 0.011025886864812984, + "vol5": 0.30561127574458546, + "maxdd5": -0.24976536095194024, + "payout_12m": 0.08619564023655868, + "payout_5y_share": 0.7652722086458096, + "2022 bear mkt": -0.11154993504316169, + "2023 rate shock": -0.10584354852556244, + "2024 vol spike": 0.0, + "2025 tariff crash": -0.06727843665663846, + "2026 Q1 drawdown": -0.050000000000000044, + "n_pos_scen": 0 + }, + "GUG": { + "cik": "1864208", + "name": "Guggenheim Active Allocation Fund", + "bdc": false, + "listed": false, + "days": 1193, + "last": "2026-08-27", + "known": false, + "sym": "gug", + "t5": 0.1631058793687521, + "p5": -0.248, + "t12": 0.05366156852796955, + "p12": -0.037747920665387125, + "vol5": 0.17310461498369625, + "maxdd5": -0.3276737029062393, + "payout_12m": 0.09140948919335667, + "payout_5y_share": 2.520484736416632, + "2022 bear mkt": -0.2754140081920138, + "2023 rate shock": -0.06305877731479892, + "2024 vol spike": -0.018052729410138024, + "2025 tariff crash": -0.09097703983974548, + "2026 Q1 drawdown": -0.041190252668589444, + "n_pos_scen": 0 + }, + "HEQ": { + "cik": "1496749", + "name": "John Hancock Diversified Income Fund", + "bdc": false, + "listed": true, + "days": 3835, + "last": "2026-08-27", + "known": false, + "sym": "heq", + "t5": 0.4183663881550648, + "p5": -0.11475409836065564, + "t12": 0.20770957878383656, + "p12": 0.10306406685236791, + "vol5": 0.1634898395908654, + "maxdd5": -0.25374910645745974, + "payout_12m": 0.10464551193146865, + "payout_5y_share": 1.2742909124863129, + "2022 bear mkt": -0.04401915584274474, + "2023 rate shock": -0.12609895250792524, + "2024 vol spike": -0.020992162104572443, + "2025 tariff crash": -0.08536848589996626, + "2026 Q1 drawdown": -0.026818955130259003, + "n_pos_scen": 0 + }, + "HERZ": { + "cik": "880406", + "name": "Herzfeld Credit Income Fund, Inc", + "bdc": false, + "listed": true, + "days": 8122, + "last": "2026-08-27", + "known": false, + "sym": "herz", + "t5": 0.10430182537155197, + "p5": -0.7020962197910616, + "t12": 0.22039176178319164, + "p12": -0.3629482071713148, + "vol5": 0.32430598811017797, + "maxdd5": -0.5035944406238189, + "payout_12m": 0.5833399689545065, + "payout_5y_share": 7.731389573384747, + "2022 bear mkt": -0.2143920445283426, + "2023 rate shock": -0.2673267669476759, + "2024 vol spike": -0.09504151056759114, + "2025 tariff crash": 0.0, + "2026 Q1 drawdown": -0.22727262109383783, + "n_pos_scen": 0 + }, + "HIO": { + "cik": "910068", + "name": "WESTERN ASSET HIGH INCOME OPPORTUNITY FUND INC.", + "bdc": false, + "listed": true, + "days": 8250, + "last": "2026-08-27", + "known": false, + "sym": "hio", + "t5": 0.10193537323694324, + "p5": -0.34404536862003776, + "t12": -0.010282226437158593, + "p12": -0.11928934010152281, + "vol5": 0.1280624526690531, + "maxdd5": -0.2618207454152286, + "payout_12m": 0.10900711366436422, + "payout_5y_share": 4.375132279354322, + "2022 bear mkt": -0.2320021076000507, + "2023 rate shock": -0.05967702639524908, + "2024 vol spike": -0.016586542714245978, + "2025 tariff crash": -0.06534326282726499, + "2026 Q1 drawdown": -0.0427924165092427, + "n_pos_scen": 0 + }, + "HIX": { + "cik": "1058239", + "name": "WESTERN ASSET HIGH INCOME FUND II INC.", + "bdc": false, + "listed": true, + "days": 7110, + "last": "2026-08-27", + "known": false, + "sym": "hix", + "t5": -0.04296028579659805, + "p5": -0.4921875, + "t12": 0.04959780219602772, + "p12": -0.09090909090909094, + "vol5": 0.17052505458834075, + "maxdd5": -0.38348590795977877, + "payout_12m": 0.14050689310511866, + "payout_5y_share": -10.456802273856741, + "2022 bear mkt": -0.3467383322087414, + "2023 rate shock": -0.12765271285418056, + "2024 vol spike": -0.03377812529182622, + "2025 tariff crash": -0.10019964226610334, + "2026 Q1 drawdown": -0.08511768153056987, + "n_pos_scen": 0 + }, + "HPF": { + "cik": "1189740", + "name": "JOHN HANCOCK PREFERRED INCOME FUND II", + "bdc": false, + "listed": true, + "days": 5975, + "last": "2026-08-27", + "known": false, + "sym": "hpf", + "t5": 0.09460677215889768, + "p5": -0.29716340824688914, + "t12": 0.05593199392091619, + "p12": -0.037014129365461446, + "vol5": 0.1539139419788038, + "maxdd5": -0.3119238465150401, + "payout_12m": 0.09294612328637764, + "payout_5y_share": 4.141037385228465, + "2022 bear mkt": -0.19185325234993456, + "2023 rate shock": -0.153881528234055, + "2024 vol spike": -0.0533410530535815, + "2025 tariff crash": -0.11021629583272197, + "2026 Q1 drawdown": -0.047944462040461766, + "n_pos_scen": 0 + }, + "HPI": { + "cik": "1176199", + "name": "JOHN HANCOCK PREFERRED INCOME FUND", + "bdc": false, + "listed": true, + "days": 5818, + "last": "2026-08-27", + "known": false, + "sym": "hpi", + "t5": 0.15188233561912323, + "p5": -0.2607276464212851, + "t12": 0.07794552695792145, + "p12": -0.015527950310559091, + "vol5": 0.15716556431123438, + "maxdd5": -0.300469769731025, + "payout_12m": 0.09347347726848054, + "payout_5y_share": 2.716642329461632, + "2022 bear mkt": -0.2012513261176858, + "2023 rate shock": -0.16000115628658562, + "2024 vol spike": -0.03863883631435405, + "2025 tariff crash": -0.12386929295693738, + "2026 Q1 drawdown": -0.041522350638807604, + "n_pos_scen": 0 + }, + "HPS": { + "cik": "1215913", + "name": "JOHN HANCOCK PREFERRED INCOME FUND III", + "bdc": false, + "listed": true, + "days": 5837, + "last": "2026-08-27", + "known": false, + "sym": "hps", + "t5": 0.11657178218120245, + "p5": -0.2754303599374023, + "t12": 0.029496062789031496, + "p12": -0.05894308943089421, + "vol5": 0.1561771556289674, + "maxdd5": -0.2938731951799892, + "payout_12m": 0.08843915221992571, + "payout_5y_share": 3.3627532734231136, + "2022 bear mkt": -0.17283814738582381, + "2023 rate shock": -0.14487717222608598, + "2024 vol spike": -0.04741362398530202, + "2025 tariff crash": -0.10961136540795491, + "2026 Q1 drawdown": -0.040398280911334905, + "n_pos_scen": 0 + }, + "HQH": { + "cik": "805267", + "name": "abrdn Healthcare Investors", + "bdc": false, + "listed": true, + "days": 9912, + "last": "2026-08-27", + "known": false, + "sym": "hqh", + "t5": 0.5265088334680277, + "p5": -0.13604174431606408, + "t12": 0.597804817457348, + "p12": 0.4160048004884056, + "vol5": 0.1979083287774361, + "maxdd5": -0.3754989232355037, + "payout_12m": 0.18180001696894244, + "payout_5y_share": 1.2583845429904363, + "2022 bear mkt": -0.20973060654286657, + "2023 rate shock": -0.13429402773429588, + "2024 vol spike": -0.03531291612321197, + "2025 tariff crash": -0.19886677461303848, + "2026 Q1 drawdown": -0.07108398944946759, + "n_pos_scen": 0 + }, + "HQL": { + "cik": "884121", + "name": "abrdn Life Sciences Investors", + "bdc": false, + "listed": true, + "days": 8641, + "last": "2026-08-27", + "known": false, + "sym": "hql", + "t5": 0.756658735481174, + "p5": -0.013278434065934097, + "t12": 0.7585396074547721, + "p12": 0.5548339826839828, + "vol5": 0.21037861975385988, + "maxdd5": -0.3886057452825825, + "payout_12m": 0.20370562477078935, + "payout_5y_share": 1.0175487752183157, + "2022 bear mkt": -0.2279846740078073, + "2023 rate shock": -0.12776985197356272, + "2024 vol spike": -0.04749487837553723, + "2025 tariff crash": -0.2123187931628142, + "2026 Q1 drawdown": -0.036451703543255665, + "n_pos_scen": 0 + }, + "HTD": { + "cik": "1260041", + "name": "JOHN HANCOCK TAX-ADVANTAGED DIVIDEND INCOME FUND", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false, + "sym": "htd", + "t5": 0.49442113369920393, + "p5": 0.02229424402107827, + "t12": 0.1096351223025187, + "p12": 0.028548083197389884, + "vol5": 0.17677050258693633, + "maxdd5": -0.3157816083025725, + "payout_12m": 0.08108703910512882, + "payout_5y_share": 0.9549083918515473, + "2022 bear mkt": -0.17714464781514294, + "2023 rate shock": -0.1994892186575662, + "2024 vol spike": 0.016160224221285935, + "2025 tariff crash": -0.10589086258012192, + "2026 Q1 drawdown": 0.02099127103802978, + "n_pos_scen": 2 + }, + "HYI": { + "cik": "1497186", + "name": "Western Asset High Yield Opportunity Fund Inc.", + "bdc": false, + "listed": true, + "days": 3982, + "last": "2026-08-27", + "known": false, + "sym": "hyi", + "t5": 0.07293400567777275, + "p5": -0.33694958519463936, + "t12": -0.02928576640504721, + "p12": -0.12542087542087543, + "vol5": 0.11197539012316979, + "maxdd5": -0.2631647640951019, + "payout_12m": 0.09613510901582822, + "payout_5y_share": 5.619924300926304, + "2022 bear mkt": -0.22002762748173188, + "2023 rate shock": -0.04470345774293982, + "2024 vol spike": -0.0038446272968855055, + "2025 tariff crash": -0.054140021175020814, + "2026 Q1 drawdown": -0.04719199376584038, + "n_pos_scen": 0 + }, + "IAE": { + "cik": "1385632", + "name": "Voya Asia Pacific High Dividend Equity Income Fund", + "bdc": false, + "listed": true, + "days": 4886, + "last": "2026-08-27", + "known": false, + "sym": "iae", + "t5": 0.8594133893553464, + "p5": 0.04678362573099393, + "t12": 0.37792047936236917, + "p12": 0.24825662482566235, + "vol5": 0.18329242411477545, + "maxdd5": -0.2901588817915668, + "payout_12m": 0.1296638545367068, + "payout_5y_share": 0.9455633036319265, + "2022 bear mkt": -0.25152510174168674, + "2023 rate shock": -0.12363664923152928, + "2024 vol spike": -0.05441891209291916, + "2025 tariff crash": -0.1342756963745131, + "2026 Q1 drawdown": -0.11725515821463672, + "n_pos_scen": 0 + }, + "IAF": { + "cik": "779336", + "name": "ABRDN AUSTRALIA EQUITY FUND, INC.", + "bdc": false, + "listed": true, + "days": 10253, + "last": "2026-08-27", + "known": false, + "sym": "iaf", + "t5": 0.20852250429979335, + "p5": -0.30052086976453807, + "t12": 0.08955236110377585, + "p12": -0.024691358024691357, + "vol5": 0.2265886254639201, + "maxdd5": -0.33954819349559073, + "payout_12m": 0.1142437191284672, + "payout_5y_share": 2.44119154320379, + "2022 bear mkt": -0.29010562657467, + "2023 rate shock": -0.16418099851877488, + "2024 vol spike": -0.08277405733932885, + "2025 tariff crash": -0.19302334677358202, + "2026 Q1 drawdown": -0.14980032444024172, + "n_pos_scen": 0 + }, + "IDE": { + "cik": "1417802", + "name": "Voya Infrastructure, Industrials & Materials Fund", + "bdc": false, + "listed": true, + "days": 4168, + "last": "2026-08-27", + "known": false, + "sym": "ide", + "t5": 0.6689820320575848, + "p5": 0.022428460943542117, + "t12": 0.16997331628936507, + "p12": 0.06612903225806455, + "vol5": 0.1705204316359011, + "maxdd5": -0.2930903648562231, + "payout_12m": 0.10384428403130053, + "payout_5y_share": 0.9664737468739496, + "2022 bear mkt": -0.24669720117128946, + "2023 rate shock": -0.123983534327885, + "2024 vol spike": -0.06078578276776159, + "2025 tariff crash": -0.1257005091586889, + "2026 Q1 drawdown": -0.08386276237954282, + "n_pos_scen": 0 + }, + "IFN": { + "cik": "917100", + "name": "ABERDEEN INDIA FUND, INC.", + "bdc": false, + "listed": true, + "days": 8187, + "last": "2026-08-27", + "known": false, + "sym": "ifn", + "t5": 0.03851347109377379, + "p5": -0.4884135700350458, + "t12": -0.13997125196587357, + "p12": -0.24124256444150693, + "vol5": 0.17832158483313215, + "maxdd5": -0.33870570323833593, + "payout_12m": 0.10127131247563337, + "payout_5y_share": 13.681629470525817, + "2022 bear mkt": -0.2043790851287831, + "2023 rate shock": -0.0497930934776003, + "2024 vol spike": -0.04137184424978524, + "2025 tariff crash": -0.08447027065148105, + "2026 Q1 drawdown": -0.17815955946485218, + "n_pos_scen": 0 + }, + "IGA": { + "cik": "1332943", + "name": "Voya Global Advantage & Premium Opportunity Fund", + "bdc": false, + "listed": true, + "days": 5240, + "last": "2026-08-27", + "known": false, + "sym": "iga", + "t5": 0.7097116804393442, + "p5": 0.04658077304261643, + "t12": 0.17828566799592016, + "p12": 0.0623742454728371, + "vol5": 0.13848297653371958, + "maxdd5": -0.1697881962483041, + "payout_12m": 0.11591142252308306, + "payout_5y_share": 0.9343666247485447, + "2022 bear mkt": -0.1568752915720476, + "2023 rate shock": -0.05569342096862251, + "2024 vol spike": -0.02173191109915351, + "2025 tariff crash": -0.07732832631405506, + "2026 Q1 drawdown": -0.04039432599800974, + "n_pos_scen": 0 + }, + "IGD": { + "cik": "1285890", + "name": "Voya GLOBAL EQUITY DIVIDEND & PREMIUM OPPORTUNITY FUND", + "bdc": false, + "listed": true, + "days": 5389, + "last": "2026-08-27", + "known": false, + "sym": "igd", + "t5": 0.7666291001075525, + "p5": 0.08925619834710741, + "t12": 0.23093659331666805, + "p12": 0.11317567567567566, + "vol5": 0.1458613673851675, + "maxdd5": -0.1580732871360312, + "payout_12m": 0.11776091764099239, + "payout_5y_share": 0.8835731668226716, + "2022 bear mkt": -0.1312886414488793, + "2023 rate shock": -0.07687317453019482, + "2024 vol spike": -0.0023174474392586575, + "2025 tariff crash": -0.05447565743865668, + "2026 Q1 drawdown": -0.01619181153508742, + "n_pos_scen": 0 + }, + "IGI": { + "cik": "1462586", + "name": "Western Asset Investment Grade Opportunity Trust Inc.", + "bdc": false, + "listed": true, + "days": 4316, + "last": "2026-08-27", + "known": false, + "sym": "igi", + "t5": -0.06881784254111523, + "p5": -0.2730157946945939, + "t12": 0.01509116885936046, + "p12": -0.03665853585688317, + "vol5": 0.11661119949324476, + "maxdd5": -0.31805732394567576, + "payout_12m": 0.05174970471624363, + "payout_5y_share": -2.9672239729323193, + "2022 bear mkt": -0.24984288592994752, + "2023 rate shock": -0.07253375850587718, + "2024 vol spike": 0.014575775916985112, + "2025 tariff crash": -0.0393310113603913, + "2026 Q1 drawdown": -0.030435661496655775, + "n_pos_scen": 1 + }, + "IGR": { + "cik": "1268884", + "name": "CBRE GLOBAL REAL ESTATE INCOME FUND", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false, + "sym": "igr", + "t5": -0.018196516255222894, + "p5": -0.4797297297297297, + "t12": 0.07816459979556889, + "p12": -0.07414829659318634, + "vol5": 0.25032588577125114, + "maxdd5": -0.5090928431109247, + "payout_12m": 0.15231289638875523, + "payout_5y_share": -25.36382277800204, + "2022 bear mkt": -0.40067464658916807, + "2023 rate shock": -0.26348556347563146, + "2024 vol spike": -0.04624621896405734, + "2025 tariff crash": -0.1554149227640227, + "2026 Q1 drawdown": -0.0887666326193215, + "n_pos_scen": 0 + }, + "IHD": { + "cik": "1496292", + "name": "Voya Emerging Markets High Dividend Equity Fund", + "bdc": false, + "listed": true, + "days": 3856, + "last": "2026-08-27", + "known": false, + "sym": "ihd", + "t5": 0.8490941487862638, + "p5": 0.04211956521739135, + "t12": 0.4216748887173323, + "p12": 0.2890756302521007, + "vol5": 0.18121683070905253, + "maxdd5": -0.30036067167965075, + "payout_12m": 0.13259925846523157, + "payout_5y_share": 0.9503947056076183, + "2022 bear mkt": -0.2644261103460689, + "2023 rate shock": -0.13368459093089435, + "2024 vol spike": -0.06192686085887977, + "2025 tariff crash": -0.1405694381947853, + "2026 Q1 drawdown": -0.06689428934657626, + "n_pos_scen": 0 + }, + "IIF": { + "cik": "916618", + "name": "MORGAN STANLEY INDIA INVESTMENT FUND, INC.", + "bdc": false, + "listed": true, + "days": 8184, + "last": "2026-08-27", + "known": false, + "sym": "iif", + "t5": 0.4943053382020519, + "p5": -0.11494252873563215, + "t12": -0.06676734267454776, + "p12": -0.13547900956134018, + "vol5": 0.15792931310573663, + "maxdd5": -0.24052134635481626, + "payout_12m": 0.06871166688679242, + "payout_5y_share": 1.2325334562513834, + "2022 bear mkt": -0.1463323221562709, + "2023 rate shock": -0.05058188088708371, + "2024 vol spike": -0.05435976207439308, + "2025 tariff crash": -0.04440730408229088, + "2026 Q1 drawdown": -0.14002585695932168, + "n_pos_scen": 0 + }, + "IIM": { + "cik": "885601", + "name": "Invesco Value Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 8438, + "last": "2026-08-27", + "known": false, + "sym": "iim", + "t5": 0.011994741793908581, + "p5": -0.2544274348035752, + "t12": 0.16476532330399385, + "p12": 0.08226221079691531, + "vol5": 0.1250211691395215, + "maxdd5": -0.3572771065568544, + "payout_12m": 0.08250311250707854, + "payout_5y_share": 22.211580805581313, + "2022 bear mkt": -0.2862432928759089, + "2023 rate shock": -0.1511388139477592, + "2024 vol spike": 0.020177603968958957, + "2025 tariff crash": -0.07741900687819858, + "2026 Q1 drawdown": -0.031917867845526304, + "n_pos_scen": 1 + }, + "IQI": { + "cik": "885125", + "name": "Invesco Quality Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 8542, + "last": "2026-08-27", + "known": false, + "sym": "iqi", + "t5": 0.010292541901012253, + "p5": -0.25695461200585645, + "t12": 0.16653445942793144, + "p12": 0.08208955223880587, + "vol5": 0.11436762001949323, + "maxdd5": -0.3520399613650783, + "payout_12m": 0.08444490718912556, + "payout_5y_share": 25.965126639959117, + "2022 bear mkt": -0.2838319460188077, + "2023 rate shock": -0.1369849915881769, + "2024 vol spike": 0.02805629530504916, + "2025 tariff crash": -0.08568840692956914, + "2026 Q1 drawdown": -0.054563345597369084, + "n_pos_scen": 1 + }, + "ISD": { + "cik": "1534880", + "name": "PGIM High Yield Bond Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3604, + "last": "2026-08-27", + "known": false, + "sym": "isd", + "t5": 0.22559474865425422, + "p5": -0.23591331269349836, + "t12": -0.07034924884369975, + "p12": -0.15189003436426118, + "vol5": 0.13371577476086824, + "maxdd5": -0.25451373083056406, + "payout_12m": 0.08154078552056143, + "payout_5y_share": 2.0457393804634094, + "2022 bear mkt": -0.23866176870186595, + "2023 rate shock": -0.07860064195626393, + "2024 vol spike": -0.004497672293901744, + "2025 tariff crash": -0.10645444950815164, + "2026 Q1 drawdown": -0.12530802941013908, + "n_pos_scen": 0 + }, + "JCE": { + "cik": "1385763", + "name": "Nuveen Core Equity Alpha Fund", + "bdc": false, + "listed": true, + "days": 4886, + "last": "2026-08-27", + "known": false, + "sym": "jce", + "t5": 0.7546163378196569, + "p5": 0.011296076099881258, + "t12": 0.1806800758883682, + "p12": 0.08343949044585997, + "vol5": 0.23041044587541998, + "maxdd5": -0.3024404355750725, + "payout_12m": 0.09724058544250824, + "payout_5y_share": 0.9850307029761383, + "2022 bear mkt": -0.09246521995808998, + "2023 rate shock": -0.09115017334591535, + "2024 vol spike": -0.07488398081560399, + "2025 tariff crash": -0.18659615601845314, + "2026 Q1 drawdown": -0.1002646068595594, + "n_pos_scen": 0 + }, + "JFR": { + "cik": "1276533", + "name": "NUVEEN FLOATING RATE INCOME FUND", + "bdc": false, + "listed": true, + "days": 5642, + "last": "2026-08-27", + "known": false, + "sym": "jfr", + "t5": 0.33872105521476725, + "p5": -0.22662601626016254, + "t12": 0.02250903832151585, + "p12": -0.09834123222748803, + "vol5": 0.12715280796547077, + "maxdd5": -0.2040103486861108, + "payout_12m": 0.12085027054900388, + "payout_5y_share": 1.6690638588040225, + "2022 bear mkt": -0.1671282679860785, + "2023 rate shock": -0.019019708935642754, + "2024 vol spike": -0.04783563185213102, + "2025 tariff crash": -0.11039170330183878, + "2026 Q1 drawdown": -0.06834721382970343, + "n_pos_scen": 0 + }, + "JGH": { + "cik": "1615905", + "name": "Nuveen Global High Income Fund", + "bdc": false, + "listed": true, + "days": 2956, + "last": "2026-08-27", + "known": false, + "sym": "jgh", + "t5": 0.27293267777300434, + "p5": -0.23172238114760724, + "t12": 0.012774517024984666, + "p12": -0.08148148148148149, + "vol5": 0.13776390656590926, + "maxdd5": -0.2868601169868341, + "payout_12m": 0.09425599850646615, + "payout_5y_share": 1.8490092979644184, + "2022 bear mkt": -0.273315440928689, + "2023 rate shock": -0.0800485129802957, + "2024 vol spike": -0.027408223272265553, + "2025 tariff crash": -0.1321173469564202, + "2026 Q1 drawdown": -0.06084781019984753, + "n_pos_scen": 0 + }, + "JHI": { + "cik": "759828", + "name": "JOHN HANCOCK INVESTORS TRUST", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false, + "sym": "jhi", + "t5": 0.04918488326807058, + "p5": -0.2981432360742706, + "t12": 0.02336869769642269, + "p12": -0.06501766784452301, + "vol5": 0.11819198645400797, + "maxdd5": -0.34711973799786344, + "payout_12m": 0.0883863655409457, + "payout_5y_share": 7.061684327871867, + "2022 bear mkt": -0.31328802376098674, + "2023 rate shock": -0.08288758471127178, + "2024 vol spike": -0.007457001361481863, + "2025 tariff crash": -0.10307526953498825, + "2026 Q1 drawdown": -0.06263762177418819, + "n_pos_scen": 0 + }, + "JHS": { + "cik": "759866", + "name": "JOHN HANCOCK INCOME SECURITIES TRUST", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false, + "sym": "jhs", + "t5": -0.10567026365922683, + "p5": -0.315987460815047, + "t12": -0.0016450437258423989, + "p12": -0.054592720970537134, + "vol5": 0.10230323802715562, + "maxdd5": -0.3261161546613307, + "payout_12m": 0.052947677244694735, + "payout_5y_share": -1.9903158170785533, + "2022 bear mkt": -0.27474036097193677, + "2023 rate shock": -0.0902712478014066, + "2024 vol spike": 0.014298648758657606, + "2025 tariff crash": -0.012605968715750149, + "2026 Q1 drawdown": -0.07075386285373697, + "n_pos_scen": 1 + }, + "JLS": { + "cik": "1472215", + "name": "Nuveen Mortgage & Income Fund/MA/", + "bdc": false, + "listed": true, + "days": 4212, + "last": "2026-08-27", + "known": false, + "sym": "jls", + "t5": 0.23660903497147712, + "p5": -0.20499520287442063, + "t12": -0.00401546462203517, + "p12": -0.09978649946638207, + "vol5": 0.10554491967408008, + "maxdd5": -0.23528566465750567, + "payout_12m": 0.0957710348443469, + "payout_5y_share": 1.8663878913124874, + "2022 bear mkt": -0.21509547309389976, + "2023 rate shock": -0.0010432760340645109, + "2024 vol spike": 0.0022110391454430722, + "2025 tariff crash": -0.06460507062526966, + "2026 Q1 drawdown": -0.031431757168112306, + "n_pos_scen": 1 + }, + "JMM": { + "cik": "838131", + "name": "Nuveen Multi-Market Income Fund", + "bdc": false, + "listed": true, + "days": 9486, + "last": "2026-08-27", + "known": false, + "sym": "jmm", + "t5": 0.030435694860986073, + "p5": -0.22356091030789826, + "t12": -0.029105736076790456, + "p12": -0.0837282780410743, + "vol5": 0.13386561985871956, + "maxdd5": -0.24190077298937818, + "payout_12m": 0.054622541964283844, + "payout_5y_share": 8.345352597632633, + "2022 bear mkt": -0.20899108772945485, + "2023 rate shock": -0.07807933135085121, + "2024 vol spike": 0.008319609365165848, + "2025 tariff crash": -0.018231819343188738, + "2026 Q1 drawdown": -0.05290485195165917, + "n_pos_scen": 1 + }, + "JPC": { + "cik": "1216583", + "name": "Nuveen Preferred & Income Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5891, + "last": "2026-08-27", + "known": false, + "sym": "jpc", + "t5": 0.1636336899836841, + "p5": -0.25150300601202413, + "t12": 0.017671657163175647, + "p12": -0.07549504950495056, + "vol5": 0.14536884044436563, + "maxdd5": -0.322580208095006, + "payout_12m": 0.09316670666812621, + "payout_5y_share": 2.536987927346144, + "2022 bear mkt": -0.26667159855649747, + "2023 rate shock": -0.07196058440453734, + "2024 vol spike": -0.010609980575777112, + "2025 tariff crash": -0.09897029922620715, + "2026 Q1 drawdown": -0.09538465135794838, + "n_pos_scen": 0 + }, + "JQC": { + "cik": "1227476", + "name": "Nuveen Credit Strategies Income Fund", + "bdc": false, + "listed": true, + "days": 5830, + "last": "2026-08-27", + "known": false, + "sym": "jqc", + "t5": 0.279304231231271, + "p5": -0.2639751552795031, + "t12": -0.022950964299988663, + "p12": -0.13818181818181818, + "vol5": 0.13054582410620597, + "maxdd5": -0.19794843324668954, + "payout_12m": 0.11523085388182952, + "payout_5y_share": 1.945116921844714, + "2022 bear mkt": -0.1782290306125236, + "2023 rate shock": -0.013653534312255244, + "2024 vol spike": -0.03202821961553581, + "2025 tariff crash": -0.10839494656810278, + "2026 Q1 drawdown": -0.06810710346619653, + "n_pos_scen": 0 + }, + "JRI": { + "cik": "1539337", + "name": "Nuveen Real Asset Income & Growth Fund", + "bdc": false, + "listed": true, + "days": 3604, + "last": "2026-08-27", + "known": false, + "sym": "jri", + "t5": 0.3450456436900329, + "p5": -0.2061792543270432, + "t12": 0.053131592954108076, + "p12": -0.06675634837112476, + "vol5": 0.17324395381481855, + "maxdd5": -0.2936452935492273, + "payout_12m": 0.11988794132523284, + "payout_5y_share": 1.5975419719028872, + "2022 bear mkt": -0.28064851921945533, + "2023 rate shock": -0.13737258096917193, + "2024 vol spike": -0.03087881264127046, + "2025 tariff crash": -0.09593515908559347, + "2026 Q1 drawdown": -0.05328907462486776, + "n_pos_scen": 0 + }, + "JRS": { + "cik": "1158289", + "name": "NUVEEN REAL ESTATE INCOME FUND", + "bdc": false, + "listed": true, + "days": 6232, + "last": "2026-08-27", + "known": false, + "sym": "jrs", + "t5": 0.1429809593456297, + "p5": -0.25177304964539005, + "t12": 0.1442323908871379, + "p12": 0.04844720496894395, + "vol5": 0.2193360084395811, + "maxdd5": -0.45566770640396426, + "payout_12m": 0.09578518591819396, + "payout_5y_share": 2.7608851611967142, + "2022 bear mkt": -0.39922616290499724, + "2023 rate shock": -0.20573320054352495, + "2024 vol spike": -0.034982061705679746, + "2025 tariff crash": -0.18411145419675246, + "2026 Q1 drawdown": -0.04280554600508579, + "n_pos_scen": 0 + }, + "KF": { + "cik": "748691", + "name": "KOREA FUND INC", + "bdc": false, + "listed": true, + "days": 10585, + "last": "2026-08-27", + "known": false, + "sym": "kf", + "t5": 1.392442897624028, + "p5": 0.5281508002791331, + "t12": 1.4442465577364958, + "p12": 1.3503624275362318, + "vol5": 0.31221586182546757, + "maxdd5": -0.46054484050013245, + "payout_12m": 0.09388413020026398, + "payout_5y_share": 0.6207020042399336, + "2022 bear mkt": -0.42257600229608283, + "2023 rate shock": -0.24016567173400338, + "2024 vol spike": -0.09968596779310968, + "2025 tariff crash": -0.14498833298644276, + "2026 Q1 drawdown": -0.07901554404145084, + "n_pos_scen": 0 + }, + "KIO": { + "cik": "1515940", + "name": "KKR Income Opportunities Fund", + "bdc": false, + "listed": true, + "days": 3292, + "last": "2026-08-27", + "known": false, + "sym": "kio", + "t5": 0.18307151345228534, + "p5": -0.322679778733866, + "t12": 0.0021539945112516445, + "p12": -0.11698717948717952, + "vol5": 0.13255496330341682, + "maxdd5": -0.31872733102803175, + "payout_12m": 0.11914117399843116, + "payout_5y_share": 2.7625886881520065, + "2022 bear mkt": -0.2944063269669287, + "2023 rate shock": -0.03796496788854664, + "2024 vol spike": -0.0035869162800903354, + "2025 tariff crash": -0.11260610358180978, + "2026 Q1 drawdown": -0.05778167807516088, + "n_pos_scen": 0 + }, + "KTF": { + "cik": "839533", + "name": "DWS MUNICIPAL INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9531, + "last": "2026-08-27", + "known": false, + "sym": "ktf", + "t5": -0.03269118627605583, + "p5": -0.2859463850528027, + "t12": 0.09769388127447876, + "p12": 0.00918484500574035, + "vol5": 0.11145180504902254, + "maxdd5": -0.34283253692056004, + "payout_12m": 0.0885090362687384, + "payout_5y_share": -7.746895344762691, + "2022 bear mkt": -0.24279628749271465, + "2023 rate shock": -0.12961059853623813, + "2024 vol spike": 0.017907706055912298, + "2025 tariff crash": -0.057219267260164686, + "2026 Q1 drawdown": -0.018865157790398768, + "n_pos_scen": 1 + }, + "KYN": { + "cik": "1293613", + "name": "Kayne Anderson Energy Infrastructure Fund, Inc.", + "bdc": false, + "listed": true, + "days": 5514, + "last": "2026-08-27", + "known": false, + "sym": "kyn", + "t5": 2.0635235495418187, + "p5": 0.9654255319148937, + "t12": 0.29069194536618004, + "p12": 0.19579288025889974, + "vol5": 0.22787570471897786, + "maxdd5": -0.21646970730893322, + "payout_12m": 0.0948990651072803, + "payout_5y_share": 0.5321470733254994, + "2022 bear mkt": 0.09595458788479538, + "2023 rate shock": -0.056966367103370774, + "2024 vol spike": -0.05358801360352927, + "2025 tariff crash": -0.1877860550479632, + "2026 Q1 drawdown": 0.10339427448691585, + "n_pos_scen": 2 + }, + "LARAX": { + "cik": "1753712", + "name": "Lord Abbett Credit Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1746, + "last": "2026-08-27", + "known": false, + "sym": "larax", + "t5": 0.1263062119165128, + "p5": -0.24421831637372804, + "t12": 0.007366972074357436, + "p12": -0.08202247191011236, + "vol5": 0.04577115067897859, + "maxdd5": -0.15530818976116034, + "payout_12m": 0.0893894439844698, + "payout_5y_share": 2.933541610250761, + "2022 bear mkt": -0.13464974153184095, + "2023 rate shock": -0.018102482937050413, + "2024 vol spike": -0.0011224367359330412, + "2025 tariff crash": -0.06251926955487497, + "2026 Q1 drawdown": -0.015243810788726386, + "n_pos_scen": 0 + }, + "LDP": { + "cik": "1548717", + "name": "Cohen & Steers Ltd Duration Preferred & Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3540, + "last": "2026-08-27", + "known": false, + "sym": "ldp", + "t5": 0.14925083905592262, + "p5": -0.23464100666173204, + "t12": 0.04531649180867148, + "p12": -0.02956353963226377, + "vol5": 0.13379002967875162, + "maxdd5": -0.32119445802989255, + "payout_12m": 0.07488003144093525, + "payout_5y_share": 2.572125209787361, + "2022 bear mkt": -0.2539170850687992, + "2023 rate shock": -0.08121910072332628, + "2024 vol spike": -0.025948292598901967, + "2025 tariff crash": -0.09991139795067505, + "2026 Q1 drawdown": -0.07922099017570894, + "n_pos_scen": 0 + }, + "LENDX": { + "cik": "1658645", + "name": "Stone Ridge Trust V", + "bdc": false, + "listed": true, + "days": 2573, + "last": "2026-08-27", + "known": false, + "sym": "lendx", + "t5": 0.8589135754300956, + "p5": 0.8075641741635151, + "t12": 1.0514783633081075, + "p12": 0.9948095590480295, + "vol5": 0.44818136463844876, + "maxdd5": -0.11888647877765723, + "payout_12m": 0.05666880426007803, + "payout_5y_share": 0.05978413048235686, + "2022 bear mkt": -0.013069314987782632, + "2023 rate shock": -0.016673606670531527, + "2024 vol spike": 0.00021796513275162965, + "2025 tariff crash": -0.005428833566561986, + "2026 Q1 drawdown": 0.027511317253084755, + "n_pos_scen": 2 + }, + "LEO": { + "cik": "818972", + "name": "BNY MELLON STRATEGIC MUNICIPALS, INC.", + "bdc": false, + "listed": true, + "days": 9806, + "last": "2026-08-27", + "known": false, + "sym": "leo", + "t5": -0.17948090531050065, + "p5": -0.3422174840085288, + "t12": 0.10165449936587923, + "p12": 0.04931972789115657, + "vol5": 0.12361883221013985, + "maxdd5": -0.41528977681903867, + "payout_12m": 0.05233477147472265, + "payout_5y_share": -0.9067069191371364, + "2022 bear mkt": -0.22952587657213608, + "2023 rate shock": -0.15952368308912102, + "2024 vol spike": 0.009693202547478519, + "2025 tariff crash": -0.06695399201938335, + "2026 Q1 drawdown": -0.0554706541363591, + "n_pos_scen": 1 + }, + "LGI": { + "cik": "1278211", + "name": "LAZARD GLOBAL TOTAL RETURN & INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 5619, + "last": "2026-08-27", + "known": false, + "sym": "lgi", + "t5": 0.413016132991336, + "p5": -0.13070051716031972, + "t12": 0.15318874462837928, + "p12": 0.04227733934611044, + "vol5": 0.19310689346469512, + "maxdd5": -0.3282996062158142, + "payout_12m": 0.11091140528226884, + "payout_5y_share": 1.3164537816324513, + "2022 bear mkt": -0.294126580022388, + "2023 rate shock": -0.16971245268541846, + "2024 vol spike": -0.0708755927547875, + "2025 tariff crash": -0.1824932814602923, + "2026 Q1 drawdown": -0.13656632858908513, + "n_pos_scen": 0 + }, + "LTCFX": { + "cik": "1496254", + "name": "Alternative Strategies Income Fund", + "bdc": false, + "listed": true, + "days": 2918, + "last": "2026-08-27", + "known": false, + "sym": "ltcfx", + "t5": 11.010853648207505, + "p5": 0.8983870967741934, + "t12": -0.005010789335000654, + "p12": -0.1960382513661203, + "vol5": 1.5213343678619755, + "maxdd5": -0.27906950730769564, + "payout_12m": 0.19102746203111964, + "payout_5y_share": 0.9184089512514367, + "2022 bear mkt": -0.21728036793114036, + "2023 rate shock": 7.9862268519700645, + "2024 vol spike": -0.10041781005495132, + "2025 tariff crash": -0.17600261426409325, + "2026 Q1 drawdown": -0.1688843101422115, + "n_pos_scen": 1 + }, + "MCI": { + "cik": "275694", + "name": "BARINGS CORPORATE INVESTORS", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false, + "sym": "mci", + "t5": 0.7795838905609074, + "p5": 0.21277997364953882, + "t12": -0.07692471225471942, + "p12": -0.14886727456621707, + "vol5": 0.22068219346788892, + "maxdd5": -0.2793106477702202, + "payout_12m": 0.07194256231149765, + "payout_5y_share": 0.7270595554553538, + "2022 bear mkt": -0.10515556360483991, + "2023 rate shock": 0.067192106815811, + "2024 vol spike": -0.07935656439228511, + "2025 tariff crash": -0.1600000760482061, + "2026 Q1 drawdown": -0.1564164927829056, + "n_pos_scen": 1 + }, + "MCN": { + "cik": "1289868", + "name": "XAI Madison Equity Premium Income Fund", + "bdc": false, + "listed": true, + "days": 5554, + "last": "2026-08-27", + "known": false, + "sym": "mcn", + "t5": 0.21720756642075512, + "p5": -0.28841309823677586, + "t12": 0.017936216296852603, + "p12": -0.09888357256778302, + "vol5": 0.18085734775021955, + "maxdd5": -0.24470167598975012, + "payout_12m": 0.11681978886463562, + "payout_5y_share": 2.327822520133059, + "2022 bear mkt": -0.09992579038324689, + "2023 rate shock": -0.05805743579706735, + "2024 vol spike": -0.012569565072183875, + "2025 tariff crash": -0.15507135977866293, + "2026 Q1 drawdown": -0.0340180522097101, + "n_pos_scen": 0 + }, + "MEGI": { + "cik": "1855066", + "name": "NYLI CBRE Global Infrastructure Megatrends Term Fund", + "bdc": false, + "listed": false, + "days": 1213, + "last": "2026-08-27", + "known": false, + "sym": "megi", + "t5": 0.20675651622354918, + "p5": -0.25049999999999994, + "t12": 0.1470835000264772, + "p12": 0.035220994475138045, + "vol5": 0.19548771959918448, + "maxdd5": -0.39488884345413566, + "payout_12m": 0.11186250555133914, + "payout_5y_share": 2.2115700369470073, + "2022 bear mkt": -0.37432380481137717, + "2023 rate shock": -0.2017915582422326, + "2024 vol spike": -0.01631234040109164, + "2025 tariff crash": -0.05092210799128927, + "2026 Q1 drawdown": 0.02756005553420926, + "n_pos_scen": 1 + }, + "MFM": { + "cik": "801961", + "name": "MFS MUNICIPAL INCOME TRUST", + "bdc": false, + "listed": true, + "days": 10019, + "last": "2026-08-27", + "known": false, + "sym": "mfm", + "t5": -0.051405046877133986, + "p5": -0.2544951590594745, + "t12": 0.1116292297853112, + "p12": 0.050682261208576884, + "vol5": 0.14129665385383805, + "maxdd5": -0.33709853213372676, + "payout_12m": 0.06094696857673432, + "payout_5y_share": -3.950781577298379, + "2022 bear mkt": -0.2649360155319863, + "2023 rate shock": -0.15571277930092908, + "2024 vol spike": 0.011152658030086027, + "2025 tariff crash": -0.06711548371391629, + "2026 Q1 drawdown": -0.04947625061148142, + "n_pos_scen": 1 + }, + "MGF": { + "cik": "811922", + "name": "MFS GOVERNMENT MARKETS INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9893, + "last": "2026-08-27", + "known": false, + "sym": "mgf", + "t5": -0.03617030263141707, + "p5": -0.3428344671201814, + "t12": 0.016730213035869967, + "p12": -0.05905844155844164, + "vol5": 0.11509439001965656, + "maxdd5": -0.22857612346354683, + "payout_12m": 0.07578865459431161, + "payout_5y_share": -8.478341130118155, + "2022 bear mkt": -0.19514187708045794, + "2023 rate shock": -0.07518355082849315, + "2024 vol spike": 0.029032159333212126, + "2025 tariff crash": 0.006087584618554853, + "2026 Q1 drawdown": -0.017392254499477122, + "n_pos_scen": 2 + }, + "MHF": { + "cik": "830487", + "name": "WESTERN ASSET MUNICIPAL HIGH INCOME FUND INC.", + "bdc": false, + "listed": true, + "days": 9511, + "last": "2026-08-27", + "known": false, + "sym": "mhf", + "t5": 0.06832927691470259, + "p5": -0.15990159901599021, + "t12": 0.055946781519045086, + "p12": -0.004373177842565634, + "vol5": 0.13634797623764677, + "maxdd5": -0.2667295501204022, + "payout_12m": 0.06031995936161072, + "payout_5y_share": 3.3401623174733723, + "2022 bear mkt": -0.1978105254437691, + "2023 rate shock": -0.07960270609961384, + "2024 vol spike": -0.0022765772250483707, + "2025 tariff crash": -0.07221321446796614, + "2026 Q1 drawdown": -0.022313181444940544, + "n_pos_scen": 0 + }, + "MIN": { + "cik": "826735", + "name": "MFS INTERMEDIATE INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9688, + "last": "2026-08-27", + "known": false, + "sym": "min", + "t5": 0.03405894726890257, + "p5": -0.3413978494623656, + "t12": -0.0023032542017283886, + "p12": -0.08921933085501854, + "vol5": 0.11231096966821479, + "maxdd5": -0.19288702505039457, + "payout_12m": 0.08691607665329015, + "payout_5y_share": 11.023734637684411, + "2022 bear mkt": -0.17135922537528359, + "2023 rate shock": -0.047116142116699455, + "2024 vol spike": 0.022641011824781287, + "2025 tariff crash": -0.01868401947359255, + "2026 Q1 drawdown": -0.047001181760581434, + "n_pos_scen": 1 + }, + "MMD": { + "cik": "1518557", + "name": "NYLI MacKay DefinedTerm Muni Opportunities Fund", + "bdc": false, + "listed": true, + "days": 3536, + "last": "2026-08-27", + "known": false, + "sym": "mmd", + "t5": -0.15146593753576298, + "p5": -0.3399470899470899, + "t12": 0.07884870627879148, + "p12": 0.025342465753424692, + "vol5": 0.13158045020294404, + "maxdd5": -0.2901908052705986, + "payout_12m": 0.05350624052536679, + "payout_5y_share": -1.2443797957334413, + "2022 bear mkt": -0.22518503455598415, + "2023 rate shock": -0.14122255213041957, + "2024 vol spike": 0.009068770752866273, + "2025 tariff crash": -0.08465962551928607, + "2026 Q1 drawdown": -0.05285789335504798, + "n_pos_scen": 1 + }, + "MMU": { + "cik": "886043", + "name": "WESTERN ASSET MANAGED MUNICIPALS FUND INC.", + "bdc": false, + "listed": true, + "days": 8588, + "last": "2026-08-27", + "known": false, + "sym": "mmu", + "t5": -0.019506876809024187, + "p5": -0.2545989698307578, + "t12": 0.09192240430749932, + "p12": 0.02426693629929222, + "vol5": 0.10749150406517835, + "maxdd5": -0.3183546875744748, + "payout_12m": 0.0676554680082071, + "payout_5y_share": -12.051754636240709, + "2022 bear mkt": -0.21794295309867528, + "2023 rate shock": -0.11417511075245546, + "2024 vol spike": 0.002428270625681961, + "2025 tariff crash": -0.04898975192942201, + "2026 Q1 drawdown": -0.04853924247896435, + "n_pos_scen": 1 + }, + "MPA": { + "cik": "891038", + "name": "BLACKROCK MUNIYIELD PENNSYLVANIA QUALITY FUND", + "bdc": false, + "listed": true, + "days": 8511, + "last": "2026-08-27", + "known": false, + "sym": "mpa", + "t5": -0.10237323580801305, + "p5": -0.30764411027568916, + "t12": 0.08561397414096983, + "p12": 0.0269516728624537, + "vol5": 0.11891921897140298, + "maxdd5": -0.3810343983339871, + "payout_12m": 0.05866230127851613, + "payout_5y_share": -2.0051224604508295, + "2022 bear mkt": -0.2971286275305136, + "2023 rate shock": -0.1383729863340858, + "2024 vol spike": -0.012840975136373611, + "2025 tariff crash": -0.09832203641878534, + "2026 Q1 drawdown": -0.04625470251000485, + "n_pos_scen": 0 + }, + "MPV": { + "cik": "831655", + "name": "BARINGS PARTICIPATION INVESTORS", + "bdc": false, + "listed": true, + "days": 9531, + "last": "2026-08-27", + "known": false, + "sym": "mpv", + "t5": 0.7219339671867755, + "p5": 0.16666666666666674, + "t12": -0.13898598000807438, + "p12": -0.20579571680767594, + "vol5": 0.21304201639263748, + "maxdd5": -0.2262846681283439, + "payout_12m": 0.06680973679960156, + "payout_5y_share": 0.7691386272956077, + "2022 bear mkt": -0.18524435760572477, + "2023 rate shock": 0.0591172262559001, + "2024 vol spike": -0.027405626805278804, + "2025 tariff crash": -0.08224620164228191, + "2026 Q1 drawdown": -0.146114046356145, + "n_pos_scen": 1 + }, + "MSD": { + "cik": "904112", + "name": "MORGAN STANLEY EMERGING MARKETS DEBT FUND INC", + "bdc": false, + "listed": true, + "days": 8336, + "last": "2026-08-27", + "known": false, + "sym": "msd", + "t5": 0.21320170094878033, + "p5": -0.2392894461859979, + "t12": 0.05822151628898009, + "p12": -0.0267379679144385, + "vol5": 0.14059412648406597, + "maxdd5": -0.3388715431912278, + "payout_12m": 0.08495948420341859, + "payout_5y_share": 2.1223618063135663, + "2022 bear mkt": -0.27583909727533484, + "2023 rate shock": -0.020700143556582895, + "2024 vol spike": -0.02222220452500223, + "2025 tariff crash": -0.09848550702483705, + "2026 Q1 drawdown": -0.07301168624102428, + "n_pos_scen": 0 + }, + "MXE": { + "cik": "863900", + "name": "MEXICO EQUITY & INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 9074, + "last": "2026-08-27", + "known": false, + "sym": "mxe", + "t5": 0.1759803386185248, + "p5": 0.08455941794664512, + "t12": 0.23193397656644144, + "p12": 0.20864864864864874, + "vol5": 0.20602734741878256, + "maxdd5": -0.42101169357387147, + "payout_12m": 0.023285327917792698, + "payout_5y_share": 0.5194950833118589, + "2022 bear mkt": -0.15924282045179772, + "2023 rate shock": -0.16745497618760874, + "2024 vol spike": -0.0890890625363282, + "2025 tariff crash": -0.08416379586695155, + "2026 Q1 drawdown": -0.07894736842105265, + "n_pos_scen": 0 + }, + "MXF": { + "cik": "65433", + "name": "MEXICO FUND INC", + "bdc": false, + "listed": true, + "days": 11400, + "last": "2026-08-27", + "known": false, + "sym": "mxf", + "t5": 0.8754587993399683, + "p5": 0.4329427083333335, + "t12": 0.2948168557740507, + "p12": 0.21669430624654518, + "vol5": 0.20801826716533733, + "maxdd5": -0.3073492991280533, + "payout_12m": 0.07812254952750552, + "payout_5y_share": 0.505467637472214, + "2022 bear mkt": -0.11623436313628188, + "2023 rate shock": -0.13817395947729538, + "2024 vol spike": -0.1177883610279642, + "2025 tariff crash": -0.09097125786936933, + "2026 Q1 drawdown": -0.08629222145770654, + "n_pos_scen": 0 + }, + "NAC": { + "cik": "1074952", + "name": "Nuveen California Quality Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 6856, + "last": "2026-08-27", + "known": false, + "sym": "nac", + "t5": -0.017984364770670447, + "p5": -0.27142857142857146, + "t12": 0.1275706303321691, + "p12": 0.047321428571428736, + "vol5": 0.10736975660103674, + "maxdd5": -0.3627392145151387, + "payout_12m": 0.08024920176074035, + "payout_5y_share": -14.09247476292446, + "2022 bear mkt": -0.27268413713945994, + "2023 rate shock": -0.12428837289027228, + "2024 vol spike": 0.00518579047826262, + "2025 tariff crash": -0.05950659866144137, + "2026 Q1 drawdown": -0.029985197712510847, + "n_pos_scen": 1 + }, + "NAD": { + "cik": "1083839", + "name": "Nuveen Quality Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 6856, + "last": "2026-08-27", + "known": false, + "sym": "nad", + "t5": -0.019095497523111793, + "p5": -0.2737948084054388, + "t12": 0.12069439941796367, + "p12": 0.043516873889875685, + "vol5": 0.11662029730333207, + "maxdd5": -0.35539978079796763, + "payout_12m": 0.07717752552808799, + "payout_5y_share": -13.338186688985589, + "2022 bear mkt": -0.27153623265679483, + "2023 rate shock": -0.12339272350437536, + "2024 vol spike": 0.005927352644774064, + "2025 tariff crash": -0.07940633526314889, + "2026 Q1 drawdown": -0.05851010992582584, + "n_pos_scen": 1 + }, + "NAN": { + "cik": "1074769", + "name": "NUVEEN NEW YORK QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 6856, + "last": "2026-08-27", + "known": false, + "sym": "nan", + "t5": -0.030085904150914056, + "p5": -0.28159790438768817, + "t12": 0.08193844312707244, + "p12": 0.0045787545787545625, + "vol5": 0.10333579949200755, + "maxdd5": -0.3436382429813293, + "payout_12m": 0.07735968854831787, + "payout_5y_share": -8.359795303979016, + "2022 bear mkt": -0.2713035106839784, + "2023 rate shock": -0.1383974630074608, + "2024 vol spike": -0.007030096154547416, + "2025 tariff crash": -0.050282289312468476, + "2026 Q1 drawdown": -0.023912231242145254, + "n_pos_scen": 0 + }, + "NAZ": { + "cik": "892992", + "name": "NUVEEN ARIZONA QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 8500, + "last": "2026-08-27", + "known": false, + "sym": "naz", + "t5": -0.0001941205249156308, + "p5": -0.23351990049751237, + "t12": 0.10924571831152718, + "p12": 0.04096283783783772, + "vol5": 0.13701805690248106, + "maxdd5": -0.38255280813177983, + "payout_12m": 0.06828288047368947, + "payout_5y_share": -1201.963471271291, + "2022 bear mkt": -0.13939970247588118, + "2023 rate shock": -0.1278113119057982, + "2024 vol spike": 0.0271932198408551, + "2025 tariff crash": -0.031033210531687172, + "2026 Q1 drawdown": -0.0068327712099146565, + "n_pos_scen": 1 + }, + "NBB": { + "cik": "1478888", + "name": "Nuveen Taxable Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 4109, + "last": "2026-08-27", + "known": false, + "sym": "nbb", + "t5": -0.053023082377890995, + "p5": -0.3410355438153383, + "t12": 0.05257891402836168, + "p12": -0.021601016518424387, + "vol5": 0.13767638390293666, + "maxdd5": -0.33481861817949965, + "payout_12m": 0.07417993054678607, + "payout_5y_share": -5.431831732919769, + "2022 bear mkt": -0.2751935219865934, + "2023 rate shock": -0.09039043504775968, + "2024 vol spike": 0.04580178807515134, + "2025 tariff crash": -0.0338460747044812, + "2026 Q1 drawdown": -0.018501275402111772, + "n_pos_scen": 1 + }, + "NBH": { + "cik": "1178839", + "name": "NEUBERGER MUNICIPAL FUND INC.", + "bdc": false, + "listed": true, + "days": 6000, + "last": "2026-08-27", + "known": false, + "sym": "nbh", + "t5": -0.18702948136860276, + "p5": -0.3808368708308064, + "t12": 0.101879616684033, + "p12": 0.03444782168186444, + "vol5": 0.13923770276376515, + "maxdd5": -0.43523174720078717, + "payout_12m": 0.06743179500216856, + "payout_5y_share": -1.03623978446608, + "2022 bear mkt": -0.30266910520170753, + "2023 rate shock": -0.13142585639724802, + "2024 vol spike": -0.004224098954594413, + "2025 tariff crash": -0.06926250563855674, + "2026 Q1 drawdown": -0.050293382427323174, + "n_pos_scen": 0 + }, + "NBXG": { + "cik": "1843181", + "name": "Neuberger Next Generation Connectivity Fund Inc.", + "bdc": false, + "listed": true, + "days": 1320, + "last": "2026-08-27", + "known": false, + "sym": "nbxg", + "t5": 0.273837379704013, + "p5": -0.22777773877665353, + "t12": 0.13790543090484175, + "p12": 0.033108108108107936, + "vol5": 0.2684267508243586, + "maxdd5": -0.5175756756167467, + "payout_12m": 0.10479732279673382, + "payout_5y_share": 1.831799292787768, + "2022 bear mkt": -0.41792878927829424, + "2023 rate shock": -0.1413884334511869, + "2024 vol spike": -0.11137449937087662, + "2025 tariff crash": -0.19545180369413928, + "2026 Q1 drawdown": -0.1318858565779989, + "n_pos_scen": 0 + }, + "NCA": { + "cik": "818851", + "name": "NUVEEN CALIFORNIA MUNICIPAL VALUE FUND", + "bdc": false, + "listed": true, + "days": 9796, + "last": "2026-08-27", + "known": false, + "sym": "nca", + "t5": 0.019594976001900744, + "p5": -0.15691736304549675, + "t12": 0.11549501196822942, + "p12": 0.07328605200945626, + "vol5": 0.12279237945726706, + "maxdd5": -0.22920332588874814, + "payout_12m": 0.04220895995877316, + "payout_5y_share": 9.008040582967569, + "2022 bear mkt": -0.16678387774608527, + "2023 rate shock": -0.08665829393512514, + "2024 vol spike": 0.022909972593126993, + "2025 tariff crash": -0.021150155223303435, + "2026 Q1 drawdown": -0.023235945324107332, + "n_pos_scen": 1 + }, + "NDMO": { + "cik": "1793129", + "name": "Nuveen Dynamic Municipal Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1507, + "last": "2026-08-27", + "known": false, + "sym": "ndmo", + "t5": -0.21367601311544016, + "p5": -0.43443560807094594, + "t12": 0.04746206909659545, + "p12": 0.005065856129685908, + "vol5": 0.1578959383441654, + "maxdd5": -0.4199682170721243, + "payout_12m": 0.04239621296690954, + "payout_5y_share": -1.0331510389808642, + "2022 bear mkt": -0.33594770819186204, + "2023 rate shock": -0.15176717562136566, + "2024 vol spike": -0.012891187376337987, + "2025 tariff crash": -0.0849296228193952, + "2026 Q1 drawdown": -0.029783174903199705, + "n_pos_scen": 0 + }, + "NEA": { + "cik": "1195737", + "name": "Nuveen AMT-Free Quality Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 5941, + "last": "2026-08-27", + "known": false, + "sym": "nea", + "t5": -0.0402056002131288, + "p5": -0.28652751423149914, + "t12": 0.10361356149304424, + "p12": 0.028258887876025485, + "vol5": 0.11547077518571124, + "maxdd5": -0.36536299738898226, + "payout_12m": 0.07535467361701875, + "payout_5y_share": -6.126557313225633, + "2022 bear mkt": -0.27280192428340766, + "2023 rate shock": -0.1309208574101467, + "2024 vol spike": 0.010516993609428038, + "2025 tariff crash": -0.10021792222503889, + "2026 Q1 drawdown": -0.04644913074812318, + "n_pos_scen": 1 + }, + "NFJ": { + "cik": "1260563", + "name": "Virtus Dividend, Interest & Premium Strategy Fund", + "bdc": false, + "listed": true, + "days": 5408, + "last": "2026-08-27", + "known": false, + "sym": "nfj", + "t5": 0.5386766272049908, + "p5": 0.005825242718446644, + "t12": 0.30950572226192596, + "p12": 0.19538461538461527, + "vol5": 0.17179587882306566, + "maxdd5": -0.3057403698296649, + "payout_12m": 0.1141211068773107, + "payout_5y_share": 0.9891860117475825, + "2022 bear mkt": -0.2837828241178303, + "2023 rate shock": -0.16308989603925195, + "2024 vol spike": -0.0498811856581628, + "2025 tariff crash": -0.15356795687462643, + "2026 Q1 drawdown": -0.057483484434330934, + "n_pos_scen": 0 + }, + "NHS": { + "cik": "1487610", + "name": "Neuberger High Yield Strategies Fund Inc.", + "bdc": false, + "listed": true, + "days": 5808, + "last": "2026-08-27", + "known": false, + "sym": "nhs", + "t5": -0.08358561682234922, + "p5": -0.5307570977917981, + "t12": -0.07063966388082443, + "p12": -0.20666666666666667, + "vol5": 0.1618707317216277, + "maxdd5": -0.3742338541253909, + "payout_12m": 0.13602700278584223, + "payout_5y_share": -5.349861590659264, + "2022 bear mkt": -0.3250303821591001, + "2023 rate shock": -0.05791778040500595, + "2024 vol spike": -0.014962514641124192, + "2025 tariff crash": -0.09070545290400434, + "2026 Q1 drawdown": -0.15017150463689666, + "n_pos_scen": 0 + }, + "NICHX": { + "cik": "1736510", + "name": "Variant Alternative Income Fund", + "bdc": false, + "listed": true, + "days": 1986, + "last": "2026-08-27", + "known": false, + "sym": "nichx", + "t5": 0.38653019465500416, + "p5": -0.07375578231292523, + "t12": 0.06551680095870949, + "p12": -0.03434117079726884, + "vol5": 0.021523766680912014, + "maxdd5": -0.04002781785075327, + "payout_12m": 0.09985797175597833, + "payout_5y_share": 1.1908150600724883, + "2022 bear mkt": 0.034668904422195945, + "2023 rate shock": 0.021128955187643905, + "2024 vol spike": 0.0054944635808387154, + "2025 tariff crash": 0.00757743768258301, + "2026 Q1 drawdown": 0.014087921700665307, + "n_pos_scen": 5 + }, + "NIE": { + "cik": "1383441", + "name": "Virtus Equity & Convertible Income Fund", + "bdc": false, + "listed": true, + "days": 4909, + "last": "2026-08-27", + "known": false, + "sym": "nie", + "t5": 0.5829981266032491, + "p5": -0.13831893243940874, + "t12": 0.16780050344577369, + "p12": 0.053398141318695025, + "vol5": 0.1766330760972735, + "maxdd5": -0.3104251812885881, + "payout_12m": 0.11440236212707866, + "payout_5y_share": 1.2372545058511648, + "2022 bear mkt": -0.2773836300344249, + "2023 rate shock": -0.11883778771979736, + "2024 vol spike": -0.09356222646104773, + "2025 tariff crash": -0.19830402127516455, + "2026 Q1 drawdown": -0.08230848667301105, + "n_pos_scen": 0 + }, + "NIM": { + "cik": "890119", + "name": "NUVEEN SELECT MATURITIES MUNICIPAL FUND", + "bdc": false, + "listed": true, + "days": 8543, + "last": "2026-08-27", + "known": false, + "sym": "nim", + "t5": 0.012998951158151861, + "p5": -0.1471941122355106, + "t12": 0.054651302357833886, + "p12": 0.016447368421052655, + "vol5": 0.10607976754635355, + "maxdd5": -0.19915558393178134, + "payout_12m": 0.03820393393678123, + "payout_5y_share": 12.323537602739794, + "2022 bear mkt": -0.15047187304820264, + "2023 rate shock": -0.04817509117927876, + "2024 vol spike": 0.004415119865035955, + "2025 tariff crash": -0.03191223573894075, + "2026 Q1 drawdown": -0.011107966819976056, + "n_pos_scen": 1 + }, + "NKX": { + "cik": "1195738", + "name": "NUVEEN CALIFORNIA AMT-FREE QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 5941, + "last": "2026-08-27", + "known": false, + "sym": "nkx", + "t5": -0.023540119729501097, + "p5": -0.2696493791022141, + "t12": 0.09931541224737472, + "p12": 0.023728813559321882, + "vol5": 0.12304917336907986, + "maxdd5": -0.3559278947457618, + "payout_12m": 0.07558659868805284, + "payout_5y_share": -10.454885625083818, + "2022 bear mkt": -0.23196688002690657, + "2023 rate shock": -0.1332453255099455, + "2024 vol spike": 0.0030719526617715154, + "2025 tariff crash": -0.032761026847343167, + "2026 Q1 drawdown": -0.07271775955765802, + "n_pos_scen": 1 + }, + "NMAI": { + "cik": "1861115", + "name": "Nuveen Multi-Asset Income Fund", + "bdc": false, + "listed": false, + "days": 1195, + "last": "2026-08-27", + "known": false, + "sym": "nmai", + "t5": 0.36412601444395554, + "p5": -0.25839793281653756, + "t12": 0.25525633121552205, + "p12": 0.12992125984251968, + "vol5": 0.1653172046021798, + "maxdd5": -0.35614600229206894, + "payout_12m": 0.12533507137300237, + "payout_5y_share": 1.7096387584697244, + "2022 bear mkt": -0.3335443826715996, + "2023 rate shock": -0.09255015884698159, + "2024 vol spike": -0.039785958254563214, + "2025 tariff crash": -0.11676340843098731, + "2026 Q1 drawdown": -0.0882077662402152, + "n_pos_scen": 0 + }, + "NMI": { + "cik": "830271", + "name": "NUVEEN MUNICIPAL INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 9651, + "last": "2026-08-27", + "known": false, + "sym": "nmi", + "t5": 0.07861589766731525, + "p5": -0.12278481012658227, + "t12": 0.11433124313592868, + "p12": 0.06615384615384601, + "vol5": 0.14862870205459106, + "maxdd5": -0.2882512836061314, + "payout_12m": 0.048177396982082676, + "payout_5y_share": 2.5618318148090085, + "2022 bear mkt": -0.21226671195407443, + "2023 rate shock": -0.1364518386319551, + "2024 vol spike": 0.001000878463328192, + "2025 tariff crash": -0.043539052099818454, + "2026 Q1 drawdown": -0.0024841294860826757, + "n_pos_scen": 1 + }, + "NML": { + "cik": "1562051", + "name": "Neuberger Energy Infrastructure & Income Fund Inc.", + "bdc": false, + "listed": true, + "days": 3377, + "last": "2026-08-27", + "known": false, + "sym": "nml", + "t5": 2.3187391461494515, + "p5": 1.2646420824295008, + "t12": 0.3070232720250947, + "p12": 0.20693641618497094, + "vol5": 0.2372885629809002, + "maxdd5": -0.21391829703337517, + "payout_12m": 0.10008685584012378, + "payout_5y_share": 0.4545992443653729, + "2022 bear mkt": 0.1991349843486132, + "2023 rate shock": -0.07553448449779454, + "2024 vol spike": -0.07080745870407701, + "2025 tariff crash": -0.1446577051203326, + "2026 Q1 drawdown": 0.15174690894936527, + "n_pos_scen": 2 + }, + "NMS": { + "cik": "1607997", + "name": "Nuveen Minnesota Quality Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 2989, + "last": "2026-08-27", + "known": false, + "sym": "nms", + "t5": -0.09485192701651646, + "p5": -0.3122257053291535, + "t12": 0.041258713778767, + "p12": -0.025322079075966286, + "vol5": 0.13439868009260025, + "maxdd5": -0.38732298949264, + "payout_12m": 0.06658079285473328, + "payout_5y_share": -2.291717049404658, + "2022 bear mkt": -0.17742130880881757, + "2023 rate shock": -0.152667277187989, + "2024 vol spike": 0.02115049864902674, + "2025 tariff crash": -0.03814728062121431, + "2026 Q1 drawdown": 0.018399284464557963, + "n_pos_scen": 2 + }, + "NMT": { + "cik": "897419", + "name": "NUVEEN MASSACHUSETTS QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 8419, + "last": "2026-08-27", + "known": false, + "sym": "nmt", + "t5": 0.06926919484709071, + "p5": -0.1711652402896643, + "t12": 0.19789797924411, + "p12": 0.1251117068811438, + "vol5": 0.12388770348835627, + "maxdd5": -0.38872208127390595, + "payout_12m": 0.0727862723629662, + "payout_5y_share": 3.471015300055176, + "2022 bear mkt": -0.31045797940593656, + "2023 rate shock": -0.1183143402310235, + "2024 vol spike": -0.0026859906073923856, + "2025 tariff crash": -0.021053217224063836, + "2026 Q1 drawdown": 0.040098434103223335, + "n_pos_scen": 1 + }, + "NMZ": { + "cik": "1266585", + "name": "NUVEEN MUNICIPAL HIGH INCOME OPPORTUNITY FUND", + "bdc": false, + "listed": true, + "days": 5727, + "last": "2026-08-27", + "known": false, + "sym": "nmz", + "t5": -0.10587318941553947, + "p5": -0.35084306095979245, + "t12": 0.07328798503958778, + "p12": -0.004970178926441471, + "vol5": 0.1289274349815979, + "maxdd5": -0.396085257357901, + "payout_12m": 0.07825816396602925, + "payout_5y_share": -2.3138045892126273, + "2022 bear mkt": -0.28497264959368496, + "2023 rate shock": -0.2025683253646381, + "2024 vol spike": -0.004642481048360181, + "2025 tariff crash": -0.11299621447448638, + "2026 Q1 drawdown": -0.022476100484735362, + "n_pos_scen": 0 + }, + "NNY": { + "cik": "818850", + "name": "NUVEEN NEW YORK MUNICIPAL VALUE FUND", + "bdc": false, + "listed": true, + "days": 9796, + "last": "2026-08-27", + "known": false, + "sym": "nny", + "t5": -0.031144609553056535, + "p5": -0.20292682926829264, + "t12": 0.06004169583835672, + "p12": 0.016169154228855787, + "vol5": 0.10997701452963057, + "maxdd5": -0.19531911214898412, + "payout_12m": 0.04387254160950094, + "payout_5y_share": -5.515632469965493, + "2022 bear mkt": -0.1323523780702459, + "2023 rate shock": -0.08419592896609995, + "2024 vol spike": 0.004790643735549827, + "2025 tariff crash": -0.014536850443215399, + "2026 Q1 drawdown": -0.03193652631314636, + "n_pos_scen": 1 + }, + "NPCT": { + "cik": "1835068", + "name": "Nuveen Core Plus Impact Fund", + "bdc": false, + "listed": true, + "days": 1340, + "last": "2026-08-27", + "known": false, + "sym": "npct", + "t5": -0.1506522261132589, + "p5": -0.5061349440764287, + "t12": -0.00291641786885255, + "p12": -0.1109065807639209, + "vol5": 0.1305487849249927, + "maxdd5": -0.46104936916515105, + "payout_12m": 0.10799016289506835, + "payout_5y_share": -2.359624727323453, + "2022 bear mkt": -0.3908881097508179, + "2023 rate shock": -0.09347845550946188, + "2024 vol spike": 0.008833703837610951, + "2025 tariff crash": -0.07222247569166529, + "2026 Q1 drawdown": -0.02040849878076767, + "n_pos_scen": 1 + }, + "NPFD": { + "cik": "1865389", + "name": "Nuveen Variable Rate Preferred & Income Fund", + "bdc": false, + "listed": false, + "days": 1178, + "last": "2026-08-27", + "known": false, + "sym": "npfd", + "t5": 0.13229842829273153, + "p5": -0.24839995999999998, + "t12": 0.06151696698349096, + "p12": -0.03936595293281975, + "vol5": 0.14902619003283507, + "maxdd5": -0.3916649836338987, + "payout_12m": 0.10088291991631071, + "payout_5y_share": 2.877573023395071, + "2022 bear mkt": -0.27160380015815755, + "2023 rate shock": -0.07493269101986266, + "2024 vol spike": -0.003251894241515174, + "2025 tariff crash": -0.06714374859144401, + "2026 Q1 drawdown": -0.06646766747538979, + "n_pos_scen": 0 + }, + "NPV": { + "cik": "897421", + "name": "NUVEEN VIRGINIA QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 8419, + "last": "2026-08-27", + "known": false, + "sym": "npv", + "t5": -0.19196740542035917, + "p5": -0.3844807108798547, + "t12": 0.0034220019153472503, + "p12": -0.06222222222222218, + "vol5": 0.13299962212622696, + "maxdd5": -0.44225820946497796, + "payout_12m": 0.06564422413756943, + "payout_5y_share": -1.0028437121288427, + "2022 bear mkt": -0.23237160587823313, + "2023 rate shock": -0.1636233622475669, + "2024 vol spike": 0.014579826993275313, + "2025 tariff crash": -0.08674685963841322, + "2026 Q1 drawdown": 0.011395928189338322, + "n_pos_scen": 2 + }, + "NRK": { + "cik": "1195739", + "name": "NUVEEN NEW YORK AMT-FREE QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 5941, + "last": "2026-08-27", + "known": false, + "sym": "nrk", + "t5": -0.023973438378905643, + "p5": -0.28, + "t12": 0.17398490639873265, + "p12": 0.08456659619450302, + "vol5": 0.1007391915414178, + "maxdd5": -0.30586261138580284, + "payout_12m": 0.08941831020422963, + "payout_5y_share": -10.679592871683084, + "2022 bear mkt": -0.2518016385066245, + "2023 rate shock": -0.11750183587279295, + "2024 vol spike": 0.0027300031403409974, + "2025 tariff crash": -0.05810637707929511, + "2026 Q1 drawdown": -0.0014761773911301512, + "n_pos_scen": 1 + }, + "NRO": { + "cik": "1261166", + "name": "NEUBERGER REAL ESTATE SECURITIES INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 5743, + "last": "2026-08-27", + "known": false, + "sym": "nro", + "t5": 0.038994451274871, + "p5": -0.39467187715545193, + "t12": 0.02523543799522532, + "p12": -0.09259259259259267, + "vol5": 0.21570656527458812, + "maxdd5": -0.4242470062597522, + "payout_12m": 0.11782803058781799, + "payout_5y_share": 11.121231720211135, + "2022 bear mkt": -0.33776218646402867, + "2023 rate shock": -0.17982132351545743, + "2024 vol spike": -0.016759899073301887, + "2025 tariff crash": -0.1477307762352782, + "2026 Q1 drawdown": -0.04794509640989919, + "n_pos_scen": 0 + }, + "NRSAX": { + "cik": "1663712", + "name": "NEXPOINT REAL ESTATE STRATEGIES FUND", + "bdc": false, + "listed": true, + "days": 2540, + "last": "2026-08-27", + "known": false, + "sym": "nrsax", + "t5": -0.010565046226608144, + "p5": -0.3347616497054098, + "t12": -0.01934759295629429, + "p12": -0.11852377572746631, + "vol5": 0.08053383783878722, + "maxdd5": -0.2518928738679339, + "payout_12m": 0.09917618277117202, + "payout_5y_share": -30.685772359642897, + "2022 bear mkt": -0.00012986476109266842, + "2023 rate shock": -0.03508964366094236, + "2024 vol spike": -0.016701141133486863, + "2025 tariff crash": -0.006679988610598042, + "2026 Q1 drawdown": -0.07390982742729957, + "n_pos_scen": 0 + }, + "NUV": { + "cik": "812801", + "name": "NUVEEN MUNICIPAL VALUE FUND INC", + "bdc": false, + "listed": true, + "days": 9874, + "last": "2026-08-27", + "known": false, + "sym": "nuv", + "t5": -0.05708875099513433, + "p5": -0.22891566265060226, + "t12": 0.08067582764571402, + "p12": 0.03464203233256358, + "vol5": 0.0943710784858631, + "maxdd5": -0.2761109464383358, + "payout_12m": 0.04603379531315044, + "payout_5y_share": -3.009820825649395, + "2022 bear mkt": -0.14405765676829463, + "2023 rate shock": -0.08469031788375503, + "2024 vol spike": -0.0045816671308749335, + "2025 tariff crash": -0.03467808244266557, + "2026 Q1 drawdown": -0.021545437025165648, + "n_pos_scen": 0 + }, + "NUW": { + "cik": "1450445", + "name": "Nuveen AMT-Free Municipal Value Fund", + "bdc": false, + "listed": true, + "days": 4404, + "last": "2026-08-27", + "known": false, + "sym": "nuw", + "t5": -0.022234541068010594, + "p5": -0.19769452449567726, + "t12": 0.05873845988389026, + "p12": 0.016058394160584077, + "vol5": 0.10628338884958871, + "maxdd5": -0.22563988431077764, + "payout_12m": 0.04268006572330618, + "payout_5y_share": -7.891324713695371, + "2022 bear mkt": -0.18082818008288026, + "2023 rate shock": -0.08351993743110131, + "2024 vol spike": 0.0029050398760073204, + "2025 tariff crash": -0.029762776023296578, + "2026 Q1 drawdown": -0.03279964154881587, + "n_pos_scen": 1 + }, + "NVG": { + "cik": "1090116", + "name": "Nuveen AMT-Free Municipal Credit Income Fund", + "bdc": false, + "listed": true, + "days": 6028, + "last": "2026-08-27", + "known": false, + "sym": "nvg", + "t5": -0.0637792745280491, + "p5": -0.3147321428571429, + "t12": 0.12433651098787157, + "p12": 0.0433305012744265, + "vol5": 0.1308994440968031, + "maxdd5": -0.40538359562651116, + "payout_12m": 0.08100600971344507, + "payout_5y_share": -3.9347087307919875, + "2022 bear mkt": -0.3102252565293788, + "2023 rate shock": -0.1511791628956517, + "2024 vol spike": 0.03634879946993541, + "2025 tariff crash": -0.10417824426974054, + "2026 Q1 drawdown": -0.05037752520723049, + "n_pos_scen": 1 + }, + "NXG": { + "cik": "1506488", + "name": "NXG NextGen Infrastructure Income Fund", + "bdc": false, + "listed": true, + "days": 3499, + "last": "2026-08-27", + "known": false, + "sym": "nxg", + "t5": 1.282594444323382, + "p5": 0.303592060088433, + "t12": 0.35511376571540487, + "p12": 0.19808304157437617, + "vol5": 0.2809317032338413, + "maxdd5": -0.29572049025315017, + "payout_12m": 0.1570307241410287, + "payout_5y_share": 0.7632984756544853, + "2022 bear mkt": -0.15257322629678494, + "2023 rate shock": -0.12686957264416088, + "2024 vol spike": -0.10562676816371686, + "2025 tariff crash": -0.20951943201448409, + "2026 Q1 drawdown": 0.11100205706600597, + "n_pos_scen": 1 + }, + "NXP": { + "cik": "883618", + "name": "NUVEEN SELECT TAX FREE INCOME PORTFOLIO", + "bdc": false, + "listed": true, + "days": 8671, + "last": "2026-08-27", + "known": false, + "sym": "nxp", + "t5": 0.0019868976806260985, + "p5": -0.18577986320069595, + "t12": 0.06266179867782418, + "p12": 0.01573676680972813, + "vol5": 0.10505694171003715, + "maxdd5": -0.22952218244032685, + "payout_12m": 0.046925031868096045, + "payout_5y_share": 94.50248128638118, + "2022 bear mkt": -0.14617062219172738, + "2023 rate shock": -0.07878441446683526, + "2024 vol spike": 0.010266509652343991, + "2025 tariff crash": -0.06069150842148874, + "2026 Q1 drawdown": 0.015384379969723971, + "n_pos_scen": 2 + }, + "NZF": { + "cik": "1137887", + "name": "Nuveen Municipal Credit Income Fund", + "bdc": false, + "listed": true, + "days": 6265, + "last": "2026-08-27", + "known": false, + "sym": "nzf", + "t5": -0.03504862637516415, + "p5": -0.2937103289094056, + "t12": 0.10816576023113589, + "p12": 0.02684563758389258, + "vol5": 0.12413190235903361, + "maxdd5": -0.37391871251669895, + "payout_12m": 0.08132012264724331, + "payout_5y_share": -7.380081027013717, + "2022 bear mkt": -0.2975577988088919, + "2023 rate shock": -0.14171055910634878, + "2024 vol spike": 0.0315536143617936, + "2025 tariff crash": -0.09701758543514871, + "2026 Q1 drawdown": -0.02673086347140352, + "n_pos_scen": 1 + }, + "OCCIM": { + "cik": "1716951", + "name": "OFS Credit Company, Inc.", + "bdc": false, + "listed": false, + "days": 476, + "last": "2026-08-27", + "known": false, + "sym": "occim", + "t5": 0.1848314826772013, + "p5": 0.01900121310149605, + "t12": 0.09020792554023371, + "p12": 0.007995999999999892, + "vol5": 0.07993681216378744, + "maxdd5": -0.034657449836237975, + "payout_12m": 0.08221192554023382, + "payout_5y_share": 0.8971970963697743, + "2025 tariff crash": -0.009433831299721751, + "2026 Q1 drawdown": 0.007963358821746924, + "n_pos_scen": 1 + }, + "OIA": { + "cik": "835333", + "name": "Invesco Municipal Income Opportunities Trust", + "bdc": false, + "listed": true, + "days": 9556, + "last": "2026-08-27", + "known": false, + "sym": "oia", + "t5": -0.040207074133929654, + "p5": -0.2693236714975845, + "t12": 0.11761999036075843, + "p12": 0.055846422338568846, + "vol5": 0.17231963014102894, + "maxdd5": -0.34758404938024523, + "payout_12m": 0.061773568022189584, + "payout_5y_share": -5.698415074931046, + "2022 bear mkt": -0.2332056151687677, + "2023 rate shock": -0.20924554292495712, + "2024 vol spike": 0.010886738759248615, + "2025 tariff crash": -0.0739478162648185, + "2026 Q1 drawdown": -0.00532135615638063, + "n_pos_scen": 1 + }, + "OWSCX": { + "cik": "1748680", + "name": "1WS Credit Income Fund", + "bdc": false, + "listed": true, + "days": 1883, + "last": "2026-08-27", + "known": false, + "sym": "owscx", + "t5": 0.28869720919610065, + "p5": -0.10727620768301271, + "t12": 0.06541266735649454, + "p12": -0.029411766197351308, + "vol5": 0.03662730405917809, + "maxdd5": -0.12014251053864533, + "payout_12m": 0.09482443355384584, + "payout_5y_share": 1.3715872695192706, + "2022 bear mkt": -0.06170121452575672, + "2023 rate shock": 0.021378602226606036, + "2024 vol spike": 0.003107128449636898, + "2025 tariff crash": -0.006337522814778618, + "2026 Q1 drawdown": -4.926543343908296e-05, + "n_pos_scen": 2 + }, + "OXLCG": { + "cik": "1495222", + "name": "Oxford Lane Capital Corp.", + "bdc": false, + "listed": false, + "days": 376, + "last": "2026-08-27", + "known": false, + "sym": "oxlcg", + "t5": 0.13847500233527543, + "p5": 0.02291196875657997, + "t12": 0.0892469609231139, + "p12": 0.005992768438163543, + "vol5": 0.05890945733892344, + "maxdd5": -0.028225751258906362, + "payout_12m": 0.08325419248495036, + "payout_5y_share": 0.8345407591970604, + "2025 tariff crash": -0.018930786597608162, + "2026 Q1 drawdown": -0.008689673958016453, + "n_pos_scen": 0 + }, + "PAI": { + "cik": "75398", + "name": "Western Asset Investment Grade Income Fund Inc.", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false, + "sym": "pai", + "t5": -0.05117688749820293, + "p5": -0.2567145534041225, + "t12": -0.006269188816703686, + "p12": -0.056304520222045906, + "vol5": 0.1188521755690521, + "maxdd5": -0.33680781483012845, + "payout_12m": 0.05003533140534222, + "payout_5y_share": -4.016220523632607, + "2022 bear mkt": -0.2479128065413101, + "2023 rate shock": -0.08286089394883234, + "2024 vol spike": 0.01745521464631916, + "2025 tariff crash": -0.055516720465613734, + "2026 Q1 drawdown": -0.05113799069432712, + "n_pos_scen": 1 + }, + "PAXS": { + "cik": "1886878", + "name": "PIMCO Access Income Fund", + "bdc": false, + "listed": false, + "days": 1150, + "last": "2026-08-27", + "known": false, + "sym": "paxs", + "t5": 0.20549364325737152, + "p5": -0.2925, + "t12": -0.0030994799631449688, + "p12": -0.11379720673889904, + "vol5": 0.171891238185221, + "maxdd5": -0.22559271046513152, + "payout_12m": 0.11069772677575407, + "payout_5y_share": 2.423401694395271, + "2022 bear mkt": -0.20006381022889053, + "2023 rate shock": -0.08813232224091738, + "2024 vol spike": -0.019646229451550035, + "2025 tariff crash": -0.1045826360818789, + "2026 Q1 drawdown": -0.10833704003623101, + "n_pos_scen": 0 + }, + "PCF": { + "cik": "810943", + "name": "HIGH INCOME SECURITIES FUND", + "bdc": false, + "listed": true, + "days": 9859, + "last": "2026-08-27", + "known": false, + "sym": "pcf", + "t5": -0.015264490510202067, + "p5": -0.4469387755102041, + "t12": -0.03877462563641276, + "p12": -0.15576323987538943, + "vol5": 0.16087174247459474, + "maxdd5": -0.2900483220168574, + "payout_12m": 0.11698861423897666, + "payout_5y_share": -28.279639252387184, + "2022 bear mkt": -0.18967605832260015, + "2023 rate shock": -0.09487179033999094, + "2024 vol spike": -0.024353228739625976, + "2025 tariff crash": -0.10552523007387149, + "2026 Q1 drawdown": -0.08530818617636293, + "n_pos_scen": 0 + }, + "PCM": { + "cik": "908187", + "name": "PCM FUND, INC.", + "bdc": false, + "listed": true, + "days": 8306, + "last": "2026-08-27", + "known": false, + "sym": "pcm", + "t5": -0.21600260635577972, + "p5": -0.5469798657718121, + "t12": -0.02930509929399905, + "p12": -0.14556962025316456, + "vol5": 0.20278899768614198, + "maxdd5": -0.2961623994851441, + "payout_12m": 0.11626452095916551, + "payout_5y_share": -1.5322836376838758, + "2022 bear mkt": -0.21782834631424297, + "2023 rate shock": -0.25101611790029366, + "2024 vol spike": -0.003968072687317026, + "2025 tariff crash": -0.05449588041612086, + "2026 Q1 drawdown": -0.047987924961335304, + "n_pos_scen": 0 + }, + "PCN": { + "cik": "1160990", + "name": "PIMCO CORPORATE & INCOME STRATEGY FUND", + "bdc": false, + "listed": true, + "days": 6211, + "last": "2026-08-27", + "known": false, + "sym": "pcn", + "t5": 0.06304257584781703, + "p5": -0.36632598171059716, + "t12": 0.010896225581235264, + "p12": -0.09384615384615391, + "vol5": 0.16103055019565063, + "maxdd5": -0.3191797779937894, + "payout_12m": 0.10474237942738918, + "payout_5y_share": 6.810771161935032, + "2022 bear mkt": -0.25306494667294754, + "2023 rate shock": -0.15332105167042942, + "2024 vol spike": -0.024608233703348303, + "2025 tariff crash": -0.0956335151355101, + "2026 Q1 drawdown": -0.08450490907525798, + "n_pos_scen": 0 + }, + "PCQ": { + "cik": "1140411", + "name": "PIMCO CALIFORNIA MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 6329, + "last": "2026-08-27", + "known": false, + "sym": "pcq", + "t5": -0.42094599515504916, + "p5": -0.5426925091671031, + "t12": 0.11251956626264681, + "p12": 0.059466019417475646, + "vol5": 0.16505851348791825, + "maxdd5": -0.5486036431749725, + "payout_12m": 0.05305354684517116, + "payout_5y_share": -0.2892212193804349, + "2022 bear mkt": -0.22202339150232653, + "2023 rate shock": -0.1906592382808432, + "2024 vol spike": -0.001058355107394382, + "2025 tariff crash": -0.08264264338230765, + "2026 Q1 drawdown": -0.04826448979028819, + "n_pos_scen": 0 + }, + "PDI": { + "cik": "1510599", + "name": "PIMCO Dynamic Income Fund", + "bdc": false, + "listed": true, + "days": 3584, + "last": "2026-08-27", + "known": false, + "sym": "pdi", + "t5": 0.12156057474038384, + "p5": -0.44694533762057875, + "t12": -0.07575721933320068, + "p12": -0.20370374466544516, + "vol5": 0.15649368365793567, + "maxdd5": -0.2689292996723416, + "payout_12m": 0.1279465253322445, + "payout_5y_share": 4.676729388414929, + "2022 bear mkt": -0.20293788544550806, + "2023 rate shock": -0.14453672893075253, + "2024 vol spike": -0.013705878239830827, + "2025 tariff crash": -0.08014699167611938, + "2026 Q1 drawdown": -0.06825577265463378, + "n_pos_scen": 0 + }, + "PDO": { + "cik": "1798618", + "name": "PIMCO Dynamic Income Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1400, + "last": "2026-08-27", + "known": false, + "sym": "pdo", + "t5": 0.12472888534400206, + "p5": -0.4010392064241852, + "t12": 0.0295455206082047, + "p12": -0.0804931109499637, + "vol5": 0.1544561867890029, + "maxdd5": -0.33591151449445567, + "payout_12m": 0.1100386315581684, + "payout_5y_share": 4.215287343570174, + "2022 bear mkt": -0.26976373341166604, + "2023 rate shock": -0.14788940041135168, + "2024 vol spike": 0.003014285306878195, + "2025 tariff crash": -0.10117209033303753, + "2026 Q1 drawdown": -0.09214592171091729, + "n_pos_scen": 1 + }, + "PDPA": { + "cik": "1998043", + "name": "Pearl Diver Credit Co Inc.", + "bdc": false, + "listed": false, + "days": 425, + "last": "2026-08-27", + "known": false, + "sym": "pdpa", + "t5": 0.16633287419145204, + "p5": 0.017849898580121648, + "t12": 0.07353533026593473, + "p12": -0.008692177348564978, + "vol5": 0.06704025615271027, + "maxdd5": -0.025888505000972173, + "payout_12m": 0.0822275076144997, + "payout_5y_share": 0.8926856842527948, + "2025 tariff crash": -0.011333337864051996, + "2026 Q1 drawdown": 0.005406463643250481, + "n_pos_scen": 1 + }, + "PDSKX": { + "cik": "1756404", + "name": "Principal Real Asset Fund", + "bdc": false, + "listed": true, + "days": 1804, + "last": "2026-08-27", + "known": false, + "sym": "pdskx", + "t5": 0.17623298540613352, + "p5": 0.0327927927927929, + "t12": 0.08757234196522723, + "p12": 0.07020160305445855, + "vol5": 0.056050818108309426, + "maxdd5": -0.12201430197582108, + "payout_12m": 0.01737073891076868, + "payout_5y_share": 0.8139236379771866, + "2022 bear mkt": -0.05172213584880625, + "2023 rate shock": -0.0334155927742239, + "2024 vol spike": -0.0035169527963150315, + "2025 tariff crash": -0.021982307010490088, + "2026 Q1 drawdown": 0.012685713422398104, + "n_pos_scen": 1 + }, + "PDT": { + "cik": "855886", + "name": "JOHN HANCOCK PREMIUM DIVIDEND FUND", + "bdc": false, + "listed": true, + "days": 9241, + "last": "2026-08-27", + "known": false, + "sym": "pdt", + "t5": 0.13593540674601368, + "p5": -0.24460431654676262, + "t12": 0.012715283376624198, + "p12": -0.0625, + "vol5": 0.16875079696075032, + "maxdd5": -0.40392255857798154, + "payout_12m": 0.0752152833766242, + "payout_5y_share": 2.7994157843201926, + "2022 bear mkt": -0.15644080167698116, + "2023 rate shock": -0.1421430613950323, + "2024 vol spike": 0.006785249919452063, + "2025 tariff crash": -0.08162966783379755, + "2026 Q1 drawdown": -0.0006401689814840017, + "n_pos_scen": 1 + }, + "PDX": { + "cik": "1756908", + "name": "PIMCO Dynamic Income Strategy Fund", + "bdc": false, + "listed": true, + "days": 1905, + "last": "2026-08-27", + "known": false, + "sym": "pdx", + "t5": 2.114847710060338, + "p5": 0.9276785714285716, + "t12": 0.10891137928492944, + "p12": -0.11371103802499849, + "vol5": 0.2512852573594036, + "maxdd5": -0.3724016679538088, + "payout_12m": 0.22262241730992793, + "payout_5y_share": 0.5613497052219877, + "2022 bear mkt": 0.1222922221569982, + "2023 rate shock": 0.13621907456281912, + "2024 vol spike": -0.0667532277297006, + "2025 tariff crash": -0.21429967841424868, + "2026 Q1 drawdown": 0.10626286541436603, + "n_pos_scen": 3 + }, + "PEO": { + "cik": "216851", + "name": "ADAMS NATURAL RESOURCES FUND, INC.", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false, + "sym": "peo", + "t5": 1.9185787540436507, + "p5": 0.9908772631578946, + "t12": 0.41593776901319357, + "p12": 0.30376842830882334, + "vol5": 0.23136984314564105, + "maxdd5": -0.24295637509997625, + "payout_12m": 0.11216934070437024, + "payout_5y_share": 0.48353578863025887, + "2022 bear mkt": 0.2500539354111846, + "2023 rate shock": -0.05100339750078753, + "2024 vol spike": -0.04797892457763253, + "2025 tariff crash": -0.1703899451621429, + "2026 Q1 drawdown": 0.16707826391955738, + "n_pos_scen": 2 + }, + "PFD": { + "cik": "868578", + "name": "FLAHERTY & CRUMRINE PREFERRED & INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 8961, + "last": "2026-08-27", + "known": false, + "sym": "pfd", + "t5": -0.04219626434466062, + "p5": -0.3217077162782753, + "t12": 0.05813643599949003, + "p12": -0.013986013986013957, + "vol5": 0.16349990577989698, + "maxdd5": -0.4557685123768678, + "payout_12m": 0.07212244998550399, + "payout_5y_share": -6.624080502732541, + "2022 bear mkt": -0.3532199192090649, + "2023 rate shock": -0.12953261602995236, + "2024 vol spike": -0.027377906462067392, + "2025 tariff crash": -0.0656930995277063, + "2026 Q1 drawdown": -0.05691061216732285, + "n_pos_scen": 0 + }, + "PFL": { + "cik": "1244183", + "name": "PIMCO INCOME STRATEGY FUND", + "bdc": false, + "listed": true, + "days": 5787, + "last": "2026-08-27", + "known": false, + "sym": "pfl", + "t5": 0.04693631490523642, + "p5": -0.40407204385277995, + "t12": 0.01059182567994843, + "p12": -0.10259433962264153, + "vol5": 0.13584169874035804, + "maxdd5": -0.33333960291661013, + "payout_12m": 0.11318616530258996, + "payout_5y_share": 9.608942663449275, + "2022 bear mkt": -0.2138372780936254, + "2023 rate shock": -0.11825883239291557, + "2024 vol spike": 0.004919892329057873, + "2025 tariff crash": -0.060265036300081065, + "2026 Q1 drawdown": -0.05931361065324814, + "n_pos_scen": 1 + }, + "PFN": { + "cik": "1296250", + "name": "PIMCO Income Strategy Fund II", + "bdc": false, + "listed": true, + "days": 5493, + "last": "2026-08-27", + "known": false, + "sym": "pfn", + "t5": 0.12247845812890379, + "p5": -0.3656987295825771, + "t12": 0.0414223893000778, + "p12": -0.07539682539682535, + "vol5": 0.14552488243715025, + "maxdd5": -0.3342547189634366, + "payout_12m": 0.11681921469690315, + "payout_5y_share": 3.985820814283059, + "2022 bear mkt": -0.21814418309218786, + "2023 rate shock": -0.12217786977301692, + "2024 vol spike": 0.00423720246068604, + "2025 tariff crash": -0.06801143676862165, + "2026 Q1 drawdown": -0.08843475085233377, + "n_pos_scen": 1 + }, + "PFO": { + "cik": "882071", + "name": "Flaherty & Crumrine PREFERRED & INCOME OPPORTUNITY FUND INC", + "bdc": false, + "listed": true, + "days": 8700, + "last": "2026-08-27", + "known": false, + "sym": "pfo", + "t5": -0.0108114483108539, + "p5": -0.3123100303951367, + "t12": 0.052719861706343796, + "p12": -0.021621621621621512, + "vol5": 0.1474214824659034, + "maxdd5": -0.3868863864777843, + "payout_12m": 0.07434148332796531, + "payout_5y_share": -27.886974382664384, + "2022 bear mkt": -0.27277670967066414, + "2023 rate shock": -0.10364876236978415, + "2024 vol spike": -0.025892123171973647, + "2025 tariff crash": -0.06452795006251766, + "2026 Q1 drawdown": -0.06675964910895915, + "n_pos_scen": 0 + }, + "PGP": { + "cik": "1318025", + "name": "PIMCO Global StocksPLUS & Income Fund", + "bdc": false, + "listed": true, + "days": 5347, + "last": "2026-08-27", + "known": false, + "sym": "pgp", + "t5": 0.322008830232436, + "p5": -0.2076155938349954, + "t12": 0.1350031732039516, + "p12": 0.033096926713947816, + "vol5": 0.18574140857074725, + "maxdd5": -0.3987496006373742, + "payout_12m": 0.1019062464900038, + "payout_5y_share": 1.644751243887107, + "2022 bear mkt": -0.35040940682458044, + "2023 rate shock": -0.1456400828648059, + "2024 vol spike": -0.02752285145970723, + "2025 tariff crash": -0.144552208423102, + "2026 Q1 drawdown": -0.10984107865265136, + "n_pos_scen": 0 + }, + "PGZ": { + "cik": "1557523", + "name": "Principal Real Estate Income Fund", + "bdc": false, + "listed": true, + "days": 3313, + "last": "2026-08-27", + "known": false, + "sym": "pgz", + "t5": 0.15769895987438654, + "p5": -0.34711286089238846, + "t12": 0.07595658758475854, + "p12": -0.04875717017208425, + "vol5": 0.14596203937619653, + "maxdd5": -0.3533801470186778, + "payout_12m": 0.12471375775684279, + "payout_5y_share": 3.2011106551931454, + "2022 bear mkt": -0.255254611822449, + "2023 rate shock": -0.09589997429785702, + "2024 vol spike": -0.023741426428445456, + "2025 tariff crash": -0.051775246229751826, + "2026 Q1 drawdown": -0.040053538921654086, + "n_pos_scen": 0 + }, + "PHD": { + "cik": "1305767", + "name": "Pioneer Floating Rate Fund, Inc.", + "bdc": false, + "listed": false, + "days": 0, + "last": "", + "known": false, + "sym": "phd", + "error": "no data", + "n_pos_scen": 0 + }, + "PHK": { + "cik": "1219360", + "name": "PIMCO HIGH INCOME FUND", + "bdc": false, + "listed": true, + "days": 5873, + "last": "2026-08-27", + "known": false, + "sym": "phk", + "t5": 0.19599600427418107, + "p5": -0.32595870206489674, + "t12": 0.0459954168463399, + "p12": -0.0730223123732251, + "vol5": 0.14298991931034646, + "maxdd5": -0.24708876862630347, + "payout_12m": 0.119017729219565, + "payout_5y_share": 2.6630885066866434, + "2022 bear mkt": -0.20244289398870896, + "2023 rate shock": -0.13691979219989647, + "2024 vol spike": -0.00625049915047593, + "2025 tariff crash": -0.06211460248855716, + "2026 Q1 drawdown": -0.08517241558946731, + "n_pos_scen": 0 + }, + "PMFAX": { + "cik": "1723701", + "name": "PIMCO Flexible Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 1751, + "last": "2026-08-27", + "known": false, + "sym": "pmfax", + "t5": -0.041759085010246944, + "p5": -0.1659716430358632, + "t12": 0.05379863320209677, + "p12": 0.016260162601626105, + "vol5": 0.05455634090724292, + "maxdd5": -0.22378557098078544, + "payout_12m": 0.037538470600470664, + "payout_5y_share": -2.9745038234227756, + "2022 bear mkt": -0.19165455178959767, + "2023 rate shock": -0.06936623349228754, + "2024 vol spike": 0.01753717740755345, + "2025 tariff crash": -0.04240097362485462, + "2026 Q1 drawdown": -0.006698536253989307, + "n_pos_scen": 1 + }, + "PML": { + "cik": "1170299", + "name": "PIMCO MUNICIPAL INCOME FUND II", + "bdc": false, + "listed": true, + "days": 6082, + "last": "2026-08-27", + "known": false, + "sym": "pml", + "t5": -0.34363976664295137, + "p5": -0.5109780439121756, + "t12": 0.08698417055269658, + "p12": 0.02083333333333326, + "vol5": 0.1421280551835317, + "maxdd5": -0.47736766315937185, + "payout_12m": 0.06615083721936332, + "payout_5y_share": -0.4869584184157943, + "2022 bear mkt": -0.29076305432326455, + "2023 rate shock": -0.22155155418542338, + "2024 vol spike": 0.0023470688614737334, + "2025 tariff crash": -0.12150072329009609, + "2026 Q1 drawdown": -0.02524988608910994, + "n_pos_scen": 1 + }, + "PMM": { + "cik": "844790", + "name": "PUTNAM MANAGED MUNICIPAL INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9450, + "last": "2026-08-27", + "known": false, + "sym": "pmm", + "t5": -0.06418983919786847, + "p5": -0.28078250863060983, + "t12": 0.13847291618471314, + "p12": 0.07758620689655182, + "vol5": 0.16989168828090295, + "maxdd5": -0.37640756825942734, + "payout_12m": 0.06088670928816131, + "payout_5y_share": -3.3742516282847097, + "2022 bear mkt": -0.2881023470076367, + "2023 rate shock": -0.14151435477964758, + "2024 vol spike": 0.015213589861719612, + "2025 tariff crash": -0.08577510611472461, + "2026 Q1 drawdown": -0.031980752237062315, + "n_pos_scen": 1 + }, + "PMO": { + "cik": "900422", + "name": "PUTNAM MUNICIPAL OPPORTUNITIES TRUST", + "bdc": false, + "listed": true, + "days": 8373, + "last": "2026-08-27", + "known": false, + "sym": "pmo", + "t5": -0.12336133115952108, + "p5": -0.3094594594594594, + "t12": 0.09027579603734903, + "p12": 0.03861788617886197, + "vol5": 0.15085304651184406, + "maxdd5": -0.36468951887939094, + "payout_12m": 0.05165790985848706, + "payout_5y_share": -1.5085612853779196, + "2022 bear mkt": -0.25826590864636667, + "2023 rate shock": -0.13914340184595841, + "2024 vol spike": 0.01997628212171576, + "2025 tariff crash": -0.10497705279969705, + "2026 Q1 drawdown": -0.05109472064833309, + "n_pos_scen": 1 + }, + "PNI": { + "cik": "1170311", + "name": "PIMCO NEW YORK MUNICIPAL INCOME FUND II", + "bdc": false, + "listed": true, + "days": 6082, + "last": "2026-08-27", + "known": false, + "sym": "pni", + "t5": -0.2677628178548199, + "p5": -0.42689075630252105, + "t12": 0.09287831136519742, + "p12": 0.03805175038051756, + "vol5": 0.1283117068449191, + "maxdd5": -0.4427081830234898, + "payout_12m": 0.05482656098467986, + "payout_5y_share": -0.5942869130320392, + "2022 bear mkt": -0.2987918392115909, + "2023 rate shock": -0.19112838906567053, + "2024 vol spike": -0.005312439549145509, + "2025 tariff crash": -0.06425325304168328, + "2026 Q1 drawdown": -0.02341214536404934, + "n_pos_scen": 0 + }, + "PPT": { + "cik": "827773", + "name": "PUTNAM PREMIER INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9703, + "last": "2026-08-27", + "known": false, + "sym": "ppt", + "t5": 0.1553283744630236, + "p5": -0.2499999999999999, + "t12": 0.02396432686365979, + "p12": -0.0625, + "vol5": 0.11886454883851058, + "maxdd5": -0.17458732157795076, + "payout_12m": 0.08646432686365979, + "payout_5y_share": 2.6094934416474764, + "2022 bear mkt": -0.12572128274283523, + "2023 rate shock": -0.0653848344305098, + "2024 vol spike": -0.006698540391077201, + "2025 tariff crash": -0.016267627731749168, + "2026 Q1 drawdown": -0.01879560210895337, + "n_pos_scen": 0 + }, + "PSF": { + "cik": "1498612", + "name": "Cohen & Steers Select Preferred & Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3961, + "last": "2026-08-27", + "known": false, + "sym": "psf", + "t5": -0.047111382713549865, + "p5": -0.3652714192282537, + "t12": 0.025149164220868103, + "p12": -0.0489955903968643, + "vol5": 0.14048437963409593, + "maxdd5": -0.4033895543178134, + "payout_12m": 0.0741447546177324, + "payout_5y_share": -6.753358067395393, + "2022 bear mkt": -0.2743733412612228, + "2023 rate shock": -0.10403713096877087, + "2024 vol spike": -0.022988492978325503, + "2025 tariff crash": -0.08789711836624337, + "2026 Q1 drawdown": -0.06570615957587178, + "n_pos_scen": 0 + }, + "PTY": { + "cik": "1190935", + "name": "PIMCO CORPORATE & INCOME OPPORTUNITY FUND", + "bdc": false, + "listed": true, + "days": 5955, + "last": "2026-08-27", + "known": false, + "sym": "pty", + "t5": -0.055650030635258196, + "p5": -0.4414414414414415, + "t12": -0.0668725250437393, + "p12": -0.16572237960339942, + "vol5": 0.17165590294368427, + "maxdd5": -0.3978866281407153, + "payout_12m": 0.09884985455966011, + "payout_5y_share": -6.932456395841719, + "2022 bear mkt": -0.2345429871675918, + "2023 rate shock": -0.11057064697555186, + "2024 vol spike": -0.0028169729586063896, + "2025 tariff crash": -0.12032466721147195, + "2026 Q1 drawdown": -0.0879342093903025, + "n_pos_scen": 0 + }, + "PWRL": { + "cik": "2052053", + "name": "Powerlaw Corp.", + "bdc": false, + "listed": false, + "days": 65, + "last": "2026-08-27", + "known": false, + "sym": "pwrl", + "t5": -0.6040462427745664, + "p5": -0.6040462427745664, + "t12": -0.6040462427745664, + "p12": -0.6040462427745664, + "vol5": 0.931144546343991, + "maxdd5": -0.6225303292894281, + "payout_12m": 0.0, + "payout_5y_share": -0.0, + "n_pos_scen": 0 + }, + "QQQX": { + "cik": "1608741", + "name": "Nuveen NASDAQ 100 Dynamic Overwrite Fund", + "bdc": false, + "listed": true, + "days": 4924, + "last": "2026-08-27", + "known": false, + "sym": "qqqx", + "t5": 0.5477826217546646, + "p5": 0.04692284937096236, + "t12": 0.2436027465242434, + "p12": 0.13994820436875233, + "vol5": 0.20155850732038463, + "maxdd5": -0.29333365977908044, + "payout_12m": 0.10365454215549108, + "payout_5y_share": 0.9143403833793441, + "2022 bear mkt": -0.24769422869576607, + "2023 rate shock": -0.1564368622555481, + "2024 vol spike": -0.08237155616036251, + "2025 tariff crash": -0.2002901218561156, + "2026 Q1 drawdown": -0.07957103470540283, + "n_pos_scen": 0 + }, + "RA": { + "cik": "1655099", + "name": "Brookfield Real Assets Income Fund Inc.", + "bdc": false, + "listed": true, + "days": 2446, + "last": "2026-08-27", + "known": false, + "sym": "ra", + "t5": 0.028804992090909032, + "p5": -0.42721085837690964, + "t12": 0.04620368467470648, + "p12": -0.061664190193164936, + "vol5": 0.17502346945348124, + "maxdd5": -0.3083256371134456, + "payout_12m": 0.10786787486787142, + "payout_5y_share": 15.831139582632938, + "2022 bear mkt": -0.13778204704072317, + "2023 rate shock": -0.26424518554258614, + "2024 vol spike": 0.0007836260041371723, + "2025 tariff crash": -0.06448330282157078, + "2026 Q1 drawdown": -0.0176230150882567, + "n_pos_scen": 1 + }, + "RCG": { + "cik": "919567", + "name": "RENN Fund, Inc.", + "bdc": false, + "listed": true, + "days": 7631, + "last": "2026-08-27", + "known": false, + "sym": "rcg", + "t5": 0.2209297463643889, + "p5": 0.17741935483870974, + "t12": 0.11092933804590577, + "p12": 0.10188679245283017, + "vol5": 0.37650792559984286, + "maxdd5": -0.5077190055840439, + "payout_12m": 0.009042545593075602, + "payout_5y_share": 0.19694220557296796, + "2022 bear mkt": -0.16793893129770987, + "2023 rate shock": -0.054644707623982325, + "2024 vol spike": -0.028248396022307776, + "2025 tariff crash": -0.12499981466792187, + "2026 Q1 drawdown": 0.17647058823529416, + "n_pos_scen": 1 + }, + "RCS": { + "cik": "916183", + "name": "PIMCO STRATEGIC INCOME FUND, INC.", + "bdc": false, + "listed": true, + "days": 8165, + "last": "2026-08-27", + "known": false, + "sym": "rcs", + "t5": 0.05028957557758473, + "p5": -0.33834586466165417, + "t12": -0.2079863773656907, + "p12": -0.26869806094182824, + "vol5": 0.25139045439891416, + "maxdd5": -0.3617940651642584, + "payout_12m": 0.06071168357613754, + "payout_5y_share": 7.72795227988488, + "2022 bear mkt": -0.22947210848412802, + "2023 rate shock": -0.1042709118439249, + "2024 vol spike": 0.0030581402965501603, + "2025 tariff crash": -0.08985106708576074, + "2026 Q1 drawdown": -0.09993483140379789, + "n_pos_scen": 1 + }, + "RFM": { + "cik": "1790177", + "name": "RiverNorth Flexible Municipal Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 1613, + "last": "2026-08-27", + "known": false, + "sym": "rfm", + "t5": -0.07474611530574604, + "p5": -0.4036621138717389, + "t12": 0.12772975723118352, + "p12": 0.04674945215485771, + "vol5": 0.1291878730617463, + "maxdd5": -0.3293668480220511, + "payout_12m": 0.08098030507632581, + "payout_5y_share": -4.4004427149233765, + "2022 bear mkt": -0.2444279663224288, + "2023 rate shock": -0.18974384750584683, + "2024 vol spike": -0.015822797452597293, + "2025 tariff crash": -0.12905896213996582, + "2026 Q1 drawdown": -0.030789325919611366, + "n_pos_scen": 0 + }, + "RFMZ": { + "cik": "1817159", + "name": "RiverNorth Flexible Municipal Income Fund II, Inc.", + "bdc": false, + "listed": true, + "days": 1384, + "last": "2026-08-27", + "known": false, + "sym": "rfmz", + "t5": -0.10417554266262874, + "p5": -0.3843617522373999, + "t12": 0.12683031254582855, + "p12": 0.045600000000000085, + "vol5": 0.13566558378716254, + "maxdd5": -0.3925024640383591, + "payout_12m": 0.08123031254582846, + "payout_5y_share": -2.6895584358235682, + "2022 bear mkt": -0.2732208966964199, + "2023 rate shock": -0.18319161696699582, + "2024 vol spike": -0.012811726169155935, + "2025 tariff crash": -0.1375634635574523, + "2026 Q1 drawdown": -0.03884732905278354, + "n_pos_scen": 0 + }, + "RGT": { + "cik": "1514490", + "name": "ROYCE GLOBAL TRUST, INC.", + "bdc": false, + "listed": true, + "days": 3240, + "last": "2026-08-27", + "known": false, + "sym": "rgt", + "t5": 0.2868733121699436, + "p5": -0.004487179487179471, + "t12": 0.2411290838181701, + "p12": 0.22283464566929134, + "vol5": 0.1896834845696161, + "maxdd5": -0.4594962456127659, + "payout_12m": 0.018294438148878767, + "payout_5y_share": 1.0156416762968918, + "2022 bear mkt": -0.3859516372206834, + "2023 rate shock": -0.1552462269567212, + "2024 vol spike": -0.07705350003309419, + "2025 tariff crash": -0.1656277554420149, + "2026 Q1 drawdown": -0.12810194500335348, + "n_pos_scen": 0 + }, + "RLTY": { + "cik": "1866874", + "name": "Cohen & Steers Real Estate Opportunities & Income Fund", + "bdc": false, + "listed": false, + "days": 1131, + "last": "2026-08-27", + "known": false, + "sym": "rlty", + "t5": 0.16137757820060084, + "p5": -0.21111107126823592, + "t12": 0.10090661986004523, + "p12": 0.010349288486416475, + "vol5": 0.2229280455219873, + "maxdd5": -0.35439897776127427, + "payout_12m": 0.09055733137362876, + "payout_5y_share": 2.3081809358039425, + "2022 bear mkt": -0.33027474163624126, + "2023 rate shock": -0.18051931349233152, + "2024 vol spike": -0.026246528921730183, + "2025 tariff crash": -0.1409319842031822, + "2026 Q1 drawdown": -0.03073823078258342, + "n_pos_scen": 0 + }, + "RMI": { + "cik": "1746967", + "name": "RiverNorth Opportunistic Municipal Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 1968, + "last": "2026-08-27", + "known": false, + "sym": "rmi", + "t5": -0.0339277178716475, + "p5": -0.3575371277085829, + "t12": 0.17847832199641878, + "p12": 0.09637681159420297, + "vol5": 0.16251696611903468, + "maxdd5": -0.32647190794964953, + "payout_12m": 0.0821015104022158, + "payout_5y_share": -9.538201510080562, + "2022 bear mkt": -0.23530122551660082, + "2023 rate shock": -0.20223839799564447, + "2024 vol spike": -0.015644694864309527, + "2025 tariff crash": -0.10899160800983454, + "2026 Q1 drawdown": 0.010169869086025907, + "n_pos_scen": 1 + }, + "RMM": { + "cik": "1771226", + "name": "RiverNorth Managed Duration Municipal Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 1782, + "last": "2026-08-27", + "known": false, + "sym": "rmm", + "t5": -0.040500604619759906, + "p5": -0.3286052009456265, + "t12": 0.14203423480851174, + "p12": 0.06168224299065406, + "vol5": 0.14426516615799498, + "maxdd5": -0.3328404647553914, + "payout_12m": 0.08035199181785768, + "payout_5y_share": -7.1135875385253575, + "2022 bear mkt": -0.22275429967640759, + "2023 rate shock": -0.1928954130228967, + "2024 vol spike": -0.0009838064735399055, + "2025 tariff crash": -0.1354789649363054, + "2026 Q1 drawdown": -0.041005785058879085, + "n_pos_scen": 0 + }, + "RMMZ": { + "cik": "1870833", + "name": "RiverNorth Managed Duration Municipal Income Fund II, Inc.", + "bdc": false, + "listed": false, + "days": 1139, + "last": "2026-08-27", + "known": false, + "sym": "rmmz", + "t5": 0.1222521514611119, + "p5": -0.19768073367417838, + "t12": 0.09636095135975298, + "p12": 0.018835616438356295, + "vol5": 0.17036147701755142, + "maxdd5": -0.2715852508152855, + "payout_12m": 0.07752533492139668, + "payout_5y_share": 2.6169918591335395, + "2022 bear mkt": -0.12448767774682246, + "2023 rate shock": -0.16155509125529943, + "2024 vol spike": -0.0075376851239619125, + "2025 tariff crash": -0.09552949447065473, + "2026 Q1 drawdown": 0.009284138194382008, + "n_pos_scen": 1 + }, + "RMT": { + "cik": "912147", + "name": "ROYCE MICRO-CAP TRUST, INC.", + "bdc": false, + "listed": true, + "days": 8230, + "last": "2026-08-27", + "known": false, + "sym": "rmt", + "t5": 0.8820479190756769, + "p5": 0.23792800702370487, + "t12": 0.4836550146434644, + "p12": 0.38099902056807045, + "vol5": 0.21845459347910165, + "maxdd5": -0.30732803825928146, + "payout_12m": 0.10265599407539394, + "payout_5y_share": 0.730255010098503, + "2022 bear mkt": -0.25967940629037, + "2023 rate shock": -0.14993843457349265, + "2024 vol spike": -0.10020046636824964, + "2025 tariff crash": -0.23327462755712547, + "2026 Q1 drawdown": -0.024974961071679624, + "n_pos_scen": 0 + }, + "RNP": { + "cik": "1224450", + "name": "COHEN & STEERS REIT & PREFERRED & INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 5831, + "last": "2026-08-27", + "known": false, + "sym": "rnp", + "t5": 0.16605463155773648, + "p5": -0.23827395872420265, + "t12": -0.017369043725288802, + "p12": -0.09131606982990148, + "vol5": 0.20748495851886428, + "maxdd5": -0.3618991398505673, + "payout_12m": 0.07394702610461268, + "payout_5y_share": 2.4349130553540497, + "2022 bear mkt": -0.285262047655376, + "2023 rate shock": -0.18598937593273857, + "2024 vol spike": -0.02087199718562216, + "2025 tariff crash": -0.10311666927339946, + "2026 Q1 drawdown": -0.023141461755398773, + "n_pos_scen": 0 + }, + "RQI": { + "cik": "1157842", + "name": "COHEN & STEERS QUALITY INCOME REALTY FUND INC", + "bdc": false, + "listed": true, + "days": 6166, + "last": "2026-08-27", + "known": false, + "sym": "rqi", + "t5": 0.1877931852653918, + "p5": -0.21614748887476165, + "t12": 0.0859039886495292, + "p12": -0.012019230769230838, + "vol5": 0.22911442195225573, + "maxdd5": -0.4106180411139061, + "payout_12m": 0.09792321941876003, + "payout_5y_share": 2.1509868612606957, + "2022 bear mkt": -0.3511800325472466, + "2023 rate shock": -0.21752598433811277, + "2024 vol spike": -0.01625971701404938, + "2025 tariff crash": -0.1537318509955532, + "2026 Q1 drawdown": -0.01240642466946229, + "n_pos_scen": 0 + }, + "RSF": { + "cik": "1644771", + "name": "RiverNorth Capital & Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 1812, + "last": "2026-08-27", + "known": false, + "sym": "rsf", + "t5": 0.3108231200249898, + "p5": -0.2388676115003795, + "t12": 0.10135892033078164, + "p12": -0.015625, + "vol5": 0.10401513655872575, + "maxdd5": -0.1315049781408626, + "payout_12m": 0.11698392033078164, + "payout_5y_share": 1.7685001407912475, + "2022 bear mkt": -0.032252973277647534, + "2023 rate shock": -0.020642769937897154, + "2024 vol spike": -0.015747898319488862, + "2025 tariff crash": -0.010703454883672192, + "2026 Q1 drawdown": 0.016227767493651513, + "n_pos_scen": 1 + }, + "RVI": { + "cik": "2085091", + "name": "Robinhood Ventures Fund I", + "bdc": false, + "listed": false, + "days": 121, + "last": "2026-08-27", + "known": false, + "sym": "rvi", + "t5": 0.32238095238095243, + "p5": 0.32238095238095243, + "t12": 0.32238095238095243, + "p12": 0.32238095238095243, + "vol5": 1.2038121905715011, + "maxdd5": -0.6688373310112241, + "payout_12m": 0.0, + "payout_5y_share": 0.0, + "2026 Q1 drawdown": 0.23095238095238102, + "n_pos_scen": 1 + }, + "RVT": { + "cik": "804116", + "name": "ROYCE SMALL-CAP TRUST, INC.", + "bdc": false, + "listed": true, + "days": 10018, + "last": "2026-08-27", + "known": false, + "sym": "rvt", + "t5": 0.5903047321151524, + "p5": 0.03178082191780818, + "t12": 0.2735087655344566, + "p12": 0.16883915773810299, + "vol5": 0.22342452674153784, + "maxdd5": -0.32792737630865965, + "payout_12m": 0.10466960779635359, + "payout_5y_share": 0.946162007199345, + "2022 bear mkt": -0.3143406564185268, + "2023 rate shock": -0.1493390013573057, + "2024 vol spike": -0.09004441209029668, + "2025 tariff crash": -0.20223308984674837, + "2026 Q1 drawdown": -0.061539969726975174, + "n_pos_scen": 0 + }, + "SABA": { + "cik": "828803", + "name": "Saba Capital Income & Opportunities Fund II", + "bdc": false, + "listed": true, + "days": 9684, + "last": "2026-08-27", + "known": false, + "sym": "saba", + "t5": 0.196590838370019, + "p5": -0.23840445269016686, + "t12": -0.02812989819275946, + "p12": -0.11530172413793083, + "vol5": 0.1458358084072669, + "maxdd5": -0.19758591202997922, + "payout_12m": 0.08717182594517137, + "payout_5y_share": 2.2126936060033846, + "2022 bear mkt": -0.14542892269299235, + "2023 rate shock": -0.04485024427104667, + "2024 vol spike": 0.015000214763421171, + "2025 tariff crash": -0.12010569517513503, + "2026 Q1 drawdown": 0.004561138850198265, + "n_pos_scen": 2 + }, + "SBI": { + "cik": "882300", + "name": "WESTERN ASSET INTERMEDIATE MUNI FUND INC.", + "bdc": false, + "listed": true, + "days": 8701, + "last": "2026-08-27", + "known": false, + "sym": "sbi", + "t5": 0.005996106451814809, + "p5": -0.22165474974463728, + "t12": 0.06275335405376947, + "p12": -0.0039215686274509665, + "vol5": 0.08860130962797094, + "maxdd5": -0.251517338259756, + "payout_12m": 0.06667492268122044, + "payout_5y_share": 37.96644673103665, + "2022 bear mkt": -0.2067130943238078, + "2023 rate shock": -0.082174026997208, + "2024 vol spike": 0.006587346738825328, + "2025 tariff crash": -0.04661016712125854, + "2026 Q1 drawdown": -0.02900559267346048, + "n_pos_scen": 1 + }, + "SCD": { + "cik": "1270131", + "name": "LMP CAPITAL & INCOME FUND INC.", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false, + "sym": "scd", + "t5": 0.7433837359485724, + "p5": 0.11016346837242352, + "t12": 0.10923138289694445, + "p12": 0.009043927648578753, + "vol5": 0.19556729021158106, + "maxdd5": -0.23500039713587806, + "payout_12m": 0.1001874552483657, + "payout_5y_share": 0.8518080729438441, + "2022 bear mkt": -0.22196163494475396, + "2023 rate shock": -0.08045904304095519, + "2024 vol spike": -0.04250838977803251, + "2025 tariff crash": -0.20842087039633073, + "2026 Q1 drawdown": -0.041742445497565894, + "n_pos_scen": 0 + }, + "SDHY": { + "cik": "1812923", + "name": "PGIM Short Duration High Yield Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1444, + "last": "2026-08-27", + "known": false, + "sym": "sdhy", + "t5": 0.2568095240158963, + "p5": -0.16360776088096496, + "t12": 0.019719325931641274, + "p12": -0.05788541051388074, + "vol5": 0.10313454008197975, + "maxdd5": -0.2029423030219032, + "payout_12m": 0.07760473644552202, + "payout_5y_share": 1.6370782450842352, + "2022 bear mkt": -0.18453474577641915, + "2023 rate shock": -0.06258770696477078, + "2024 vol spike": -0.012171653212786016, + "2025 tariff crash": -0.06870108303047939, + "2026 Q1 drawdown": -0.04372868176636879, + "n_pos_scen": 0 + }, + "SOR": { + "cik": "91847", + "name": "SOURCE CAPITAL /DE/", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false, + "sym": "sor", + "t5": 0.5711725308137148, + "p5": 0.028274773580737822, + "t12": 0.11231885391250684, + "p12": 0.053882750911602884, + "vol5": 0.15373423765687957, + "maxdd5": -0.17465664746569687, + "payout_12m": 0.05843610300090396, + "payout_5y_share": 0.9504969653557105, + "2022 bear mkt": -0.16167814053770158, + "2023 rate shock": -0.03392998609612341, + "2024 vol spike": -0.04679684831929931, + "2025 tariff crash": -0.0660697118176875, + "2026 Q1 drawdown": -0.07042515265867877, + "n_pos_scen": 0 + }, + "SPMA": { + "cik": "1930147", + "name": "Sound Point Meridian Capital, Inc.", + "bdc": false, + "listed": false, + "days": 449, + "last": "2026-08-27", + "known": false, + "sym": "spma", + "t5": 0.15460847950832313, + "p5": 0.0033986789431545983, + "t12": 0.08158096230326706, + "p12": -0.001398446215139515, + "vol5": 0.05542729934942654, + "maxdd5": -0.0358908584413733, + "payout_12m": 0.08297940851840657, + "payout_5y_share": 0.9780175126619001, + "2025 tariff crash": -0.026401984085808516, + "2026 Q1 drawdown": 0.0005469216636666552, + "n_pos_scen": 1 + }, + "SPXX": { + "cik": "1338561", + "name": "Nuveen S&P 500 Dynamic Overwrite Fund", + "bdc": false, + "listed": true, + "days": 5221, + "last": "2026-08-27", + "known": false, + "sym": "spxx", + "t5": 0.5293009436217386, + "p5": 0.05500550055005493, + "t12": 0.14915195521494806, + "p12": 0.059668508287292754, + "vol5": 0.1576908644420102, + "maxdd5": -0.18090872611569042, + "payout_12m": 0.08948344692765531, + "payout_5y_share": 0.8960789675270932, + "2022 bear mkt": -0.12288056203239761, + "2023 rate shock": -0.12536534614789407, + "2024 vol spike": -0.069654733091715, + "2025 tariff crash": -0.1759986718034554, + "2026 Q1 drawdown": -0.09027089924079779, + "n_pos_scen": 0 + }, + "SRV": { + "cik": "1400897", + "name": "NXG Cushing Midstream Energy Fund", + "bdc": false, + "listed": true, + "days": 4776, + "last": "2026-08-27", + "known": false, + "sym": "srv", + "t5": 2.3393088794011394, + "p5": 0.7483722807976914, + "t12": 0.25815414766137423, + "p12": 0.05427258785848932, + "vol5": 0.26410728147117785, + "maxdd5": -0.2626082486287503, + "payout_12m": 0.20388155980288492, + "payout_5y_share": 0.6800882998446645, + "2022 bear mkt": 0.09979641793473282, + "2023 rate shock": -0.05730949391013285, + "2024 vol spike": -0.0735294530549443, + "2025 tariff crash": -0.21010327926969719, + "2026 Q1 drawdown": 0.13504596327329454, + "n_pos_scen": 2 + }, + "STEW": { + "cik": "102426", + "name": "SRH Total Return Fund, Inc.", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false, + "sym": "stew", + "t5": 0.628348335312034, + "p5": 0.34298111432706224, + "t12": 0.051579406062707056, + "p12": 0.0076003800217154804, + "vol5": 0.15209264768750147, + "maxdd5": -0.2654965678687463, + "payout_12m": 0.043979026040991576, + "payout_5y_share": 0.4541544951229323, + "2022 bear mkt": -0.23897212754367292, + "2023 rate shock": -0.11040522590189017, + "2024 vol spike": -0.056051440700204624, + "2025 tariff crash": -0.06841168084856997, + "2026 Q1 drawdown": -0.05056813458126708, + "n_pos_scen": 0 + }, + "SWZ": { + "cik": "813623", + "name": "Total Return Securities Fund", + "bdc": false, + "listed": true, + "days": 9830, + "last": "2026-08-27", + "known": false, + "sym": "swz", + "t5": 0.14840712104287612, + "p5": -0.3951612903225806, + "t12": -0.011532125205930832, + "p12": -0.011532125205930832, + "vol5": 0.14850560337999988, + "maxdd5": -0.30349925190672555, + "payout_12m": 0.0, + "payout_5y_share": 3.6626841592622434, + "2022 bear mkt": -0.2840606531184644, + "2023 rate shock": -0.14818727070865434, + "2024 vol spike": -0.016567909505187828, + "2025 tariff crash": 0.01742407541825375, + "2026 Q1 drawdown": -0.0016891891891891442, + "n_pos_scen": 1 + }, + "TDF": { + "cik": "919893", + "name": "TEMPLETON DRAGON FUND INC", + "bdc": false, + "listed": true, + "days": 8037, + "last": "2026-08-27", + "known": false, + "sym": "tdf", + "t5": -0.244492982854995, + "p5": -0.4425641025641026, + "t12": 0.03398185651965502, + "p12": -0.007305936073059405, + "vol5": 0.2683661064364291, + "maxdd5": -0.5823890112442743, + "payout_12m": 0.04128779259271442, + "payout_5y_share": -0.8101300797928443, + "2022 bear mkt": -0.4100765541373462, + "2023 rate shock": -0.19164120196681478, + "2024 vol spike": -0.044943898893596734, + "2025 tariff crash": -0.1333733014209898, + "2026 Q1 drawdown": -0.1328302551708732, + "n_pos_scen": 0 + }, + "THQ": { + "cik": "1604522", + "name": "abrdn Healthcare Opportunities Fund", + "bdc": false, + "listed": true, + "days": 3039, + "last": "2026-08-27", + "known": false, + "sym": "thq", + "t5": 0.2533124553892916, + "p5": -0.20427941057731125, + "t12": 0.312730522917672, + "p12": 0.1683460481122676, + "vol5": 0.19241481832503235, + "maxdd5": -0.3215788667483577, + "payout_12m": 0.1443844748054044, + "payout_5y_share": 1.8064325548594673, + "2022 bear mkt": -0.23521183325006567, + "2023 rate shock": -0.18350774165145756, + "2024 vol spike": -0.029315097587701455, + "2025 tariff crash": -0.12871925373362836, + "2026 Q1 drawdown": -0.1254542472358543, + "n_pos_scen": 0 + }, + "THW": { + "cik": "1635977", + "name": "abrdn World Healthcare Fund", + "bdc": false, + "listed": true, + "days": 2809, + "last": "2026-08-27", + "known": false, + "sym": "thw", + "t5": 0.41867611209484124, + "p5": -0.167458432304038, + "t12": 0.3367691414948206, + "p12": 0.19726729291204093, + "vol5": 0.1891397379237302, + "maxdd5": -0.3151302253117837, + "payout_12m": 0.1395018485827797, + "payout_5y_share": 1.3999713082892684, + "2022 bear mkt": -0.1492640990626677, + "2023 rate shock": -0.261649146342807, + "2024 vol spike": -0.02944293502936346, + "2025 tariff crash": -0.14949851457584917, + "2026 Q1 drawdown": -0.07899778940486546, + "n_pos_scen": 0 + }, + "TSI": { + "cik": "809559", + "name": "TCW STRATEGIC INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 9951, + "last": "2026-08-27", + "known": false, + "sym": "tsi", + "t5": 0.10833216412686486, + "p5": -0.2542372881355932, + "t12": -0.028653829002453945, + "p12": -0.10750507099391471, + "vol5": 0.10891743810281826, + "maxdd5": -0.1856434722867818, + "payout_12m": 0.07885124199146076, + "payout_5y_share": 3.3468310652214317, + "2022 bear mkt": -0.14264733849295608, + "2023 rate shock": -0.02803496009089712, + "2024 vol spike": 0.018595034272865796, + "2025 tariff crash": -0.0011259067792419586, + "2026 Q1 drawdown": -0.07155585688828625, + "n_pos_scen": 1 + }, + "TWN": { + "cik": "804123", + "name": "TAIWAN FUND INC", + "bdc": false, + "listed": true, + "days": 10000, + "last": "2026-08-27", + "known": false, + "sym": "twn", + "t5": 3.4811698196438376, + "p5": 2.090744744693684, + "t12": 1.2779489029293778, + "p12": 1.0414176614612174, + "vol5": 0.2510920823644, + "maxdd5": -0.5170454986848969, + "payout_12m": 0.2365312414681604, + "payout_5y_share": 0.3994131705681654, + "2022 bear mkt": -0.46624808362197945, + "2023 rate shock": -0.14102951737885872, + "2024 vol spike": -0.1432127060511892, + "2025 tariff crash": -0.28545589494494983, + "2026 Q1 drawdown": 0.1168496416755258, + "n_pos_scen": 1 + }, + "TXEMF": { + "cik": "909112", + "name": "TEMPLETON EMERGING MARKETS INCOME FUND", + "bdc": false, + "listed": false, + "days": 0, + "last": "", + "known": false, + "sym": "txemf", + "error": "no data", + "n_pos_scen": 0 + }, + "TYG": { + "cik": "1268533", + "name": "TORTOISE ENERGY INFRASTRUCTURE CORP", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false, + "sym": "tyg", + "t5": 1.704274585350793, + "p5": 0.6480637813211845, + "t12": 0.14100033162868408, + "p12": 0.010474883856491646, + "vol5": 0.23484044856499153, + "maxdd5": -0.25078004664278253, + "payout_12m": 0.13052544777219244, + "payout_5y_share": 0.6197421548782923, + "2022 bear mkt": 0.1000871257758511, + "2023 rate shock": -0.08098927298469638, + "2024 vol spike": -0.056705154795738344, + "2025 tariff crash": -0.2105723795817347, + "2026 Q1 drawdown": 0.15121962004759348, + "n_pos_scen": 2 + }, + "UNID": { + "cik": "2077697", + "name": "RiverNorth Short Prime Unicorn Fund I, Inc", + "bdc": false, + "listed": false, + "days": 0, + "last": "", + "known": false, + "sym": "unid", + "error": "no data", + "n_pos_scen": 0 + }, + "UNIU": { + "cik": "2077715", + "name": "RiverNorth Long Prime Unicorn Fund I, Inc.", + "bdc": false, + "listed": false, + "days": 0, + "last": "", + "known": false, + "sym": "uniu", + "error": "no data", + "n_pos_scen": 0 + }, + "UTF": { + "cik": "1275617", + "name": "COHEN & STEERS INFRASTRUCTURE FUND INC", + "bdc": false, + "listed": true, + "days": 5641, + "last": "2026-08-27", + "known": false, + "sym": "utf", + "t5": 0.39152305195331527, + "p5": -0.04122621709747076, + "t12": 0.10498902767378326, + "p12": 0.026405092417955522, + "vol5": 0.18120512398003719, + "maxdd5": -0.3040342783940123, + "payout_12m": 0.07858393525582774, + "payout_5y_share": 1.1052970365136674, + "2022 bear mkt": -0.2050112436260424, + "2023 rate shock": -0.17283673602078853, + "2024 vol spike": 0.01046911448256127, + "2025 tariff crash": -0.0628326581799542, + "2026 Q1 drawdown": -0.005199137314753632, + "n_pos_scen": 1 + }, + "UTG": { + "cik": "1263994", + "name": "REAVES UTILITY INCOME FUND", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false, + "sym": "utg", + "t5": 0.5180196075673036, + "p5": 0.056708129642703664, + "t12": 0.06751498335487094, + "p12": 0.004470207848283225, + "vol5": 0.17221409926256145, + "maxdd5": -0.26540431302028467, + "payout_12m": 0.06304477550658771, + "payout_5y_share": 0.8905289899951598, + "2022 bear mkt": -0.25384180586942684, + "2023 rate shock": -0.12744747755458363, + "2024 vol spike": -0.013324486668973679, + "2025 tariff crash": -0.14278003878752954, + "2026 Q1 drawdown": 0.036618268900683315, + "n_pos_scen": 1 + }, + "VBF": { + "cik": "5094", + "name": "Invesco Bond Fund", + "bdc": false, + "listed": true, + "days": 11008, + "last": "2026-08-27", + "known": false, + "sym": "vbf", + "t5": -0.07040704800129938, + "p5": -0.2972779705215869, + "t12": 0.007061130766425894, + "p12": -0.04571984435797671, + "vol5": 0.1215082518369385, + "maxdd5": -0.30303044313540695, + "payout_12m": 0.05278097512440261, + "payout_5y_share": -3.2222757374531676, + "2022 bear mkt": -0.22801462624197932, + "2023 rate shock": -0.05864051144859117, + "2024 vol spike": 0.012277283003922168, + "2025 tariff crash": -0.02331510446007623, + "2026 Q1 drawdown": -0.029831764410548245, + "n_pos_scen": 1 + }, + "VCRDX": { + "cik": "1812286", + "name": "Harrison Street Infrastructure Income Fund", + "bdc": false, + "listed": false, + "days": 605, + "last": "2026-08-27", + "known": false, + "sym": "vcrdx", + "t5": 0.23130303779523342, + "p5": 0.0029999999999998916, + "t12": 0.07795935308682211, + "p12": 0.0, + "vol5": 0.0189102923316101, + "maxdd5": -0.0234375, + "payout_12m": 0.07795935308682211, + "payout_5y_share": 0.9870300017302163, + "2024 vol spike": 0.001939902090431378, + "2025 tariff crash": 0.010988952725008883, + "2026 Q1 drawdown": 0.015937986967450746, + "n_pos_scen": 3 + }, + "VCV": { + "cik": "895531", + "name": "Invesco California Value Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 8361, + "last": "2026-08-27", + "known": false, + "sym": "vcv", + "t5": -0.006128809299759674, + "p5": -0.2551381998582566, + "t12": 0.1050550960914276, + "p12": 0.02837573385518577, + "vol5": 0.12905071094146847, + "maxdd5": -0.38560791527258975, + "payout_12m": 0.07667936223624183, + "payout_5y_share": -40.62932592277935, + "2022 bear mkt": -0.31771405014091525, + "2023 rate shock": -0.16511510989082767, + "2024 vol spike": 0.004708280031447076, + "2025 tariff crash": -0.07964163816657299, + "2026 Q1 drawdown": -0.05202581949489993, + "n_pos_scen": 1 + }, + "VGI": { + "cik": "1528811", + "name": "Virtus Global Multi-Sector Income Fund", + "bdc": false, + "listed": true, + "days": 3648, + "last": "2026-08-27", + "known": false, + "sym": "vgi", + "t5": 0.11885597893249211, + "p5": -0.3827993254637436, + "t12": 0.038052126383129936, + "p12": -0.0838548185231539, + "vol5": 0.10517594848845149, + "maxdd5": -0.3342488024912398, + "payout_12m": 0.12190694490628384, + "payout_5y_share": 4.220698940868311, + "2022 bear mkt": -0.2920291228746308, + "2023 rate shock": -0.10971123682107375, + "2024 vol spike": -0.0013105877397080468, + "2025 tariff crash": -0.06069854250628692, + "2026 Q1 drawdown": -0.06101905863594015, + "n_pos_scen": 0 + }, + "VGM": { + "cik": "880892", + "name": "Invesco Trust for Investment Grade Municipals", + "bdc": false, + "listed": true, + "days": 8692, + "last": "2026-08-27", + "known": false, + "sym": "vgm", + "t5": 0.00113863862296526, + "p5": -0.2625975869410929, + "t12": 0.17334110290675775, + "p12": 0.08795811518324603, + "vol5": 0.11635909817542388, + "maxdd5": -0.3662484510093338, + "payout_12m": 0.08538298772351172, + "payout_5y_share": 231.6241696397337, + "2022 bear mkt": -0.28753667576886677, + "2023 rate shock": -0.13969113682530954, + "2024 vol spike": 0.009737372070574901, + "2025 tariff crash": -0.05312425281341204, + "2026 Q1 drawdown": -0.050641816759940506, + "n_pos_scen": 1 + }, + "VKI": { + "cik": "908993", + "name": "Invesco Advantage Municipal Income Trust II", + "bdc": false, + "listed": true, + "days": 8273, + "last": "2026-08-27", + "known": false, + "sym": "vki", + "t5": -0.03873353034615623, + "p5": -0.2930897537728355, + "t12": 0.15746084303465424, + "p12": 0.07487922705314021, + "vol5": 0.13159853148694514, + "maxdd5": -0.38347518615057596, + "payout_12m": 0.08258161598151403, + "payout_5y_share": -6.5668226250882045, + "2022 bear mkt": -0.2906319825907766, + "2023 rate shock": -0.142887661880162, + "2024 vol spike": 0.007812692921422837, + "2025 tariff crash": -0.09237220042115413, + "2026 Q1 drawdown": -0.05264710819124352, + "n_pos_scen": 1 + }, + "VKQ": { + "cik": "877463", + "name": "Invesco Municipal Trust", + "bdc": false, + "listed": true, + "days": 8752, + "last": "2026-08-27", + "known": false, + "sym": "vkq", + "t5": -0.038800957158083516, + "p5": -0.29496402877697836, + "t12": 0.15855950858161583, + "p12": 0.07221006564551424, + "vol5": 0.11660445603942633, + "maxdd5": -0.37300390500235014, + "payout_12m": 0.08634944293610158, + "payout_5y_share": -6.601978156756054, + "2022 bear mkt": -0.27155647804212124, + "2023 rate shock": -0.14076943134897568, + "2024 vol spike": 0.010029928573804137, + "2025 tariff crash": -0.07850405307238528, + "2026 Q1 drawdown": -0.025469461958540385, + "n_pos_scen": 1 + }, + "VLT": { + "cik": "846671", + "name": "Invesco High Income Trust II", + "bdc": false, + "listed": true, + "days": 9407, + "last": "2026-08-27", + "known": false, + "sym": "vlt", + "t5": 0.12745631733134966, + "p5": -0.3297224102911306, + "t12": -0.012568703774002321, + "p12": -0.10971223021582721, + "vol5": 0.11639084984025955, + "maxdd5": -0.3049500175853176, + "payout_12m": 0.09714352644182489, + "payout_5y_share": 3.5869444308040648, + "2022 bear mkt": -0.27390978156470414, + "2023 rate shock": -0.08661582606706486, + "2024 vol spike": -0.017624807158569178, + "2025 tariff crash": -0.11322481968548526, + "2026 Q1 drawdown": -0.1025229997808933, + "n_pos_scen": 0 + }, + "VMO": { + "cik": "884152", + "name": "Invesco Municipal Opportunity Trust", + "bdc": false, + "listed": true, + "days": 8619, + "last": "2026-08-27", + "known": false, + "sym": "vmo", + "t5": -0.04366871184050647, + "p5": -0.29884225759768457, + "t12": 0.13339656493116614, + "p12": 0.04870129870129869, + "vol5": 0.11569505755972775, + "maxdd5": -0.37691950920055317, + "payout_12m": 0.08469526622986745, + "payout_5y_share": -5.843395305296887, + "2022 bear mkt": -0.30942238497856234, + "2023 rate shock": -0.14658974090003152, + "2024 vol spike": 0.007960450637935157, + "2025 tariff crash": -0.07643669747446091, + "2026 Q1 drawdown": -0.025804116325956805, + "n_pos_scen": 1 + }, + "VPV": { + "cik": "895528", + "name": "Invesco Pennsylvania Value Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 8361, + "last": "2026-08-27", + "known": false, + "sym": "vpv", + "t5": 0.11511942781699314, + "p5": -0.1654411764705882, + "t12": 0.2323907914457095, + "p12": 0.1441532258064515, + "vol5": 0.10553520170949626, + "maxdd5": -0.3302831005273634, + "payout_12m": 0.088237565639258, + "payout_5y_share": 2.43712646603484, + "2022 bear mkt": -0.2697077342752354, + "2023 rate shock": -0.11985505677780828, + "2024 vol spike": 0.008287420304557092, + "2025 tariff crash": -0.058866931734798844, + "2026 Q1 drawdown": -0.020069824401562353, + "n_pos_scen": 1 + }, + "VTN": { + "cik": "883265", + "name": "Invesco Trust for Investment Grade New York Municipals", + "bdc": false, + "listed": true, + "days": 8633, + "last": "2026-08-27", + "known": false, + "sym": "vtn", + "t5": 0.03118345243380105, + "p5": -0.22682961897915177, + "t12": 0.1468354111825303, + "p12": 0.06588701684836473, + "vol5": 0.11642066050013015, + "maxdd5": -0.32768848571897025, + "payout_12m": 0.08094839433416556, + "payout_5y_share": 8.27403803221229, + "2022 bear mkt": -0.24521537902066415, + "2023 rate shock": -0.15429537068043453, + "2024 vol spike": -0.007111090584280388, + "2025 tariff crash": -0.04839401043195335, + "2026 Q1 drawdown": -0.06105821941125733, + "n_pos_scen": 0 + }, + "VVR": { + "cik": "1059386", + "name": "Invesco Senior Income Trust", + "bdc": false, + "listed": true, + "days": 7088, + "last": "2026-08-27", + "known": false, + "sym": "vvr", + "t5": 0.23137023579258997, + "p5": -0.32482598607888624, + "t12": -0.082639664958569, + "p12": -0.19613259668508287, + "vol5": 0.16023352813392935, + "maxdd5": -0.19496649631289908, + "payout_12m": 0.11349293172651387, + "payout_5y_share": 2.403922959088281, + "2022 bear mkt": -0.09337752683344269, + "2023 rate shock": 0.02038154983299645, + "2024 vol spike": -0.03504685268168228, + "2025 tariff crash": -0.1783942736808548, + "2026 Q1 drawdown": -0.04062000932677856, + "n_pos_scen": 1 + }, + "WDI": { + "cik": "1819559", + "name": "Western Asset Diversified Income Fund (WDI)", + "bdc": false, + "listed": true, + "days": 1299, + "last": "2026-08-27", + "known": false, + "sym": "wdi", + "t5": 0.15324087139454168, + "p5": -0.3547415955845459, + "t12": -0.023095585235252014, + "p12": -0.1415220293724967, + "vol5": 0.12970346275265654, + "maxdd5": -0.3187319907721825, + "payout_12m": 0.11842644413724468, + "payout_5y_share": 3.314928076017072, + "2022 bear mkt": -0.26524728807959497, + "2023 rate shock": -0.08003786723111683, + "2024 vol spike": -0.00017506544071033137, + "2025 tariff crash": -0.12739503146368758, + "2026 Q1 drawdown": -0.03274011286383516, + "n_pos_scen": 0 + }, + "WEA": { + "cik": "1163792", + "name": "WESTERN ASSET PREMIER BOND FUND", + "bdc": false, + "listed": true, + "days": 6145, + "last": "2026-08-27", + "known": false, + "sym": "wea", + "t5": 0.035202338386106646, + "p5": -0.29047619047619044, + "t12": 0.02201666916046574, + "p12": -0.054397098821396206, + "vol5": 0.1345875802359408, + "maxdd5": -0.2974076766754421, + "payout_12m": 0.07641376798186195, + "payout_5y_share": 9.251616335545284, + "2022 bear mkt": -0.2675537081348478, + "2023 rate shock": -0.10916379545721988, + "2024 vol spike": 0.007415521740093967, + "2025 tariff crash": -0.02229919902789046, + "2026 Q1 drawdown": -0.051154212740015526, + "n_pos_scen": 1 + }, + "WIA": { + "cik": "1254370", + "name": "WESTERN ASSET INFLATION-LINKED INCOME FUND", + "bdc": false, + "listed": true, + "days": 5765, + "last": "2026-08-27", + "known": false, + "sym": "wia", + "t5": -0.028947727011831903, + "p5": -0.42651296829971186, + "t12": 0.02145111503066599, + "p12": -0.053507728894173656, + "vol5": 0.09549754470615889, + "maxdd5": -0.30361880613529446, + "payout_12m": 0.07495884392483965, + "payout_5y_share": -13.733901840561844, + "2022 bear mkt": -0.27437425038222074, + "2023 rate shock": -0.05889584593255459, + "2024 vol spike": 0.002548285303013431, + "2025 tariff crash": -0.003574613339413335, + "2026 Q1 drawdown": -0.017881651814151245, + "n_pos_scen": 1 + }, + "WIW": { + "cik": "1267902", + "name": "WESTERN ASSET INFLATION-LINKED OPPORTUNITIES & INCOME FUND", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false, + "sym": "wiw", + "t5": 0.03697801507256848, + "p5": -0.36694465504169826, + "t12": 0.019019169031970984, + "p12": -0.06703910614525133, + "vol5": 0.10074738913306626, + "maxdd5": -0.2947211968629605, + "payout_12m": 0.08605827517722231, + "payout_5y_share": 10.923319418891957, + "2022 bear mkt": -0.24489569628021368, + "2023 rate shock": -0.050829597418794115, + "2024 vol spike": -0.007952932344653996, + "2025 tariff crash": -0.026273623346441344, + "2026 Q1 drawdown": -0.01465655543413491, + "n_pos_scen": 0 + }, + "XFLT": { + "cik": "1703079", + "name": "XAI Octagon Floating Rate & Alternative Income Trust", + "bdc": false, + "listed": true, + "days": 2233, + "last": "2026-08-27", + "known": false, + "sym": "xflt", + "t5": -0.11458848892049589, + "p5": -0.5618510059108579, + "t12": -0.16512074930434262, + "p12": -0.29160583941605833, + "vol5": 0.20869042085891165, + "maxdd5": -0.47042191585615123, + "payout_12m": 0.12648509011171571, + "payout_5y_share": -3.9032063447549517, + "2022 bear mkt": -0.275224383233838, + "2023 rate shock": 0.04555258138606644, + "2024 vol spike": -0.02272736401547104, + "2025 tariff crash": -0.13131142690055497, + "2026 Q1 drawdown": -0.23612723466649888, + "n_pos_scen": 1 + }, + "ZTR": { + "cik": "836412", + "name": "Virtus Total Return Fund Inc.", + "bdc": false, + "listed": true, + "days": 9551, + "last": "2026-08-27", + "known": false, + "sym": "ztr", + "t5": 0.26328966900150874, + "p5": -0.2923553719008265, + "t12": 0.17982394270981605, + "p12": 0.0753532182103609, + "vol5": 0.16709276773715456, + "maxdd5": -0.4264427902216896, + "payout_12m": 0.10447072449945516, + "payout_5y_share": 2.1103943918861137, + "2022 bear mkt": -0.3158734026931609, + "2023 rate shock": -0.22325653977505, + "2024 vol spike": 0.008865020857404815, + "2025 tariff crash": -0.0825758846284369, + "2026 Q1 drawdown": 0.03671744791751208, + "n_pos_scen": 2 + } +} \ No newline at end of file diff --git a/fundlab/cef_screen.py b/fundlab/cef_screen.py new file mode 100644 index 0000000..0a0e134 --- /dev/null +++ b/fundlab/cef_screen.py @@ -0,0 +1,137 @@ +"""CEF screen: stage 1 of the CEF pass. + +Reads cef_universe.json (SEC active-CEF report + ticker map) and local +price files (goget-downloaded). Per ticker: + t5 / t12 total return (Adj Close) + vol5 annualized daily-return vol, 5y + maxdd5 deepest peak->trough drawdown, 5y + scen_* return over each of the 5 market-crash episodes + (drawdown.py episodes, fund_windows) + payout_12m distribution proxy = 12m adj return - 12m price + return (Close = market price, Adj Close = total + return incl. reinvested distributions) + p5y_share 5y version of the same + +CEF-specific context for interpreting the output: +- price = MARKET price; premium/discount dynamics are on top of NAV + (stage 2 adds the NPORT NAV-per-share series) +- distributions are NOT the fund's discretion to skip - a CEF usually + keeps paying even in drawdowns (that's what the leverage is for), + so the payout proxy is more stable than for open-end funds +- BDCs in the set pay ordinary income + occasional ROC (stage 2 + flags them from the EDGAR form history) + +Output: fundlab/cef_screen.json +""" +from __future__ import annotations + +import json +from pathlib import Path + +import numpy as np +import pandas as pd + +from fundlab import drawdown + +HERE = Path(__file__).parent +UNIVERSE = HERE / "cef_universe.json" +EPS = json.loads((HERE / "drawdown_results.json").read_text())["episodes"] +OUT = HERE / "cef_screen.json" +SCEN_KEYS = ["2022 bear mkt", "2023 rate shock", "2024 vol spike", + "2025 tariff crash", "2026 Q1 drawdown"] + + +def _load(sym: str) -> pd.DataFrame | None: + f = Path.home() / "prog/fin/stocks" / f"{sym.lower()}-history.csv" + if not f.exists(): + return None + try: + d = pd.read_csv(f, parse_dates=["Date"]) + except Exception: + return None + d = d.set_index("Date").sort_index() + d = d[~d.index.duplicated(keep="last")] + return d + + +def _perf(d: pd.DataFrame) -> dict: + adj = d["Adj Close"].dropna() + px = d["Close"].dropna() + out: dict = {} + for tag, n in (("5", 5 * 252), ("12", 252)): + a = adj.tail(n) + p = px.tail(n) + out[f"t{tag}"] = float(a.iloc[-1] / a.iloc[0] - 1) if len(a) > 20 else None + out[f"p{tag}"] = float(p.iloc[-1] / p.iloc[0] - 1) if len(p) > 20 else None + a5 = adj.tail(5 * 252) + if len(a5) > 20: + r = a5.pct_change().dropna() + out["vol5"] = float(r.std() * np.sqrt(252)) + peak = np.maximum.accumulate(a5.to_numpy()) + out["maxdd5"] = float(((a5.to_numpy() / peak) - 1).min()) + else: + out["vol5"] = out["maxdd5"] = None + if out.get("t12") is not None and out.get("p12") is not None: + out["payout_12m"] = out["t12"] - out["p12"] + if out.get("t5") is not None and out.get("p5") is not None: + out["payout_5y_share"] = (out["t5"] - out["p5"]) / out["t5"] \ + if abs(out["t5"]) > 1e-4 else None + return out + + +def screen_one(sym: str) -> dict: + s = sym.lower() # price files are lowercase + d = _load(s) + if d is None or len(d) < 30: + return {"error": "no data"} + out = _perf(d) + out.update(drawdown.fund_windows(s, EPS)) + return out + + +def run() -> dict: + uni = json.loads(UNIVERSE.read_text()) + res: dict = {} + for t in sorted(uni): + info = dict(uni[t]) + info["sym"] = t.lower() + s = screen_one(t) + info.update(s) + info["n_pos_scen"] = sum( + 1 for k in SCEN_KEYS if info.get(k) is not None and info[k] > 0) + res[t] = info + n_ok = sum(1 for v in res.values() if "t5" in v) + print(f"{n_ok}/{len(res)} CEFs screened", flush=True) + OUT.write_text(json.dumps(res, indent=1, default=str)) + print(f"wrote {OUT}") + return res + + +def _fmt(x, pct: bool = True, dec: int = 2) -> str: + if x is None: + return "" + if pct: + return f"{x:+.{dec}%}" + return f"{x:.{dec}f}" + + +def _print(res: dict, top: int = 30, sort: str = "t5") -> None: + rows = [v for v in res.values() if v.get("t5") is not None] + print(f"{'fund':6} {'name':42} {'5yTR':>8} {'vol':>6} {'maxDD':>8}" + f" {'2022':>8} {'2023':>8} {'2025t':>8} {'2026':>8}" + f" {'dist12':>8} {'n+':>3}") + for v in sorted(rows, key=lambda x: -x.get(sort, -9))[:top]: + print(f"{v['sym']:6} {v.get('name', '')[:42]:42}" + f" {_fmt(v.get('t5')):>8} {_fmt(v.get('vol5'), False):>6}" + f" {_fmt(v.get('maxdd5')):>8}" + f" {_fmt(v.get('2022 bear mkt')):>8}" + f" {_fmt(v.get('2023 rate shock')):>8}" + f" {_fmt(v.get('2025 tariff crash')):>8}" + f" {_fmt(v.get('2026 Q1 drawdown')):>8}" + f" {_fmt(v.get('payout_12m')):>8}" + f" {v.get('n_pos_scen', 0):>3}") + + +if __name__ == "__main__": + r = run() + _print(r) diff --git a/fundlab/cef_universe.json b/fundlab/cef_universe.json new file mode 100644 index 0000000..8219f3b --- /dev/null +++ b/fundlab/cef_universe.json @@ -0,0 +1,2657 @@ +{ + "CET": { + "cik": "18748", + "name": "CENTRAL SECURITIES CORP", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false + }, + "ADX": { + "cik": "2230", + "name": "ADAMS DIVERSIFIED EQUITY FUND, INC.", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false + }, + "SOR": { + "cik": "91847", + "name": "SOURCE CAPITAL /DE/", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false + }, + "VBF": { + "cik": "5094", + "name": "Invesco Bond Fund", + "bdc": false, + "listed": true, + "days": 11008, + "last": "2026-08-27", + "known": false + }, + "MCI": { + "cik": "275694", + "name": "BARINGS CORPORATE INVESTORS", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false + }, + "STEW": { + "cik": "102426", + "name": "SRH Total Return Fund, Inc.", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false + }, + "PAI": { + "cik": "75398", + "name": "Western Asset Investment Grade Income Fund Inc.", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false + }, + "CRF": { + "cik": "33934", + "name": "CORNERSTONE TOTAL RETURN FUND INC", + "bdc": false, + "listed": true, + "days": 9775, + "last": "2026-08-27", + "known": false + }, + "MXF": { + "cik": "65433", + "name": "MEXICO FUND INC", + "bdc": false, + "listed": true, + "days": 11400, + "last": "2026-08-27", + "known": false + }, + "PEO": { + "cik": "216851", + "name": "ADAMS NATURAL RESOURCES FUND, INC.", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false + }, + "KF": { + "cik": "748691", + "name": "KOREA FUND INC", + "bdc": false, + "listed": true, + "days": 10585, + "last": "2026-08-27", + "known": false + }, + "JHI": { + "cik": "759828", + "name": "JOHN HANCOCK INVESTORS TRUST", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false + }, + "JHS": { + "cik": "759866", + "name": "JOHN HANCOCK INCOME SECURITIES TRUST", + "bdc": false, + "listed": true, + "days": 11707, + "last": "2026-08-27", + "known": false + }, + "IAF": { + "cik": "779336", + "name": "ABRDN AUSTRALIA EQUITY FUND, INC.", + "bdc": false, + "listed": true, + "days": 10253, + "last": "2026-08-27", + "known": false + }, + "ABAKF": { + "cik": "790500", + "name": "ABRDN ASIA-PACIFIC INCOME FUND, INC.", + "bdc": false, + "listed": true, + "days": 3937, + "last": "2026-08-27", + "known": false + }, + "EEA": { + "cik": "791718", + "name": "EUROPEAN EQUITY FUND, INC / MD", + "bdc": false, + "listed": true, + "days": 10105, + "last": "2026-08-27", + "known": false + }, + "MFM": { + "cik": "801961", + "name": "MFS MUNICIPAL INCOME TRUST", + "bdc": false, + "listed": true, + "days": 10019, + "last": "2026-08-27", + "known": false + }, + "RVT": { + "cik": "804116", + "name": "ROYCE SMALL-CAP TRUST, INC.", + "bdc": false, + "listed": true, + "days": 10018, + "last": "2026-08-27", + "known": false + }, + "HQH": { + "cik": "805267", + "name": "abrdn Healthcare Investors", + "bdc": false, + "listed": true, + "days": 9912, + "last": "2026-08-27", + "known": false + }, + "TWN": { + "cik": "804123", + "name": "TAIWAN FUND INC", + "bdc": false, + "listed": true, + "days": 10000, + "last": "2026-08-27", + "known": false + }, + "DNP": { + "cik": "806628", + "name": "DNP SELECT INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 9976, + "last": "2026-08-27", + "known": false + }, + "TSI": { + "cik": "809559", + "name": "TCW STRATEGIC INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 9951, + "last": "2026-08-27", + "known": false + }, + "EMF": { + "cik": "809708", + "name": "TEMPLETON EMERGING MARKETS FUND", + "bdc": false, + "listed": true, + "days": 9951, + "last": "2026-08-27", + "known": false + }, + "CIK": { + "cik": "810766", + "name": "CREDIT SUISSE ASSET MANAGEMENT INCOME FUND, INC.", + "bdc": false, + "listed": true, + "days": 9922, + "last": "2026-08-27", + "known": false + }, + "MGF": { + "cik": "811922", + "name": "MFS GOVERNMENT MARKETS INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9893, + "last": "2026-08-27", + "known": false + }, + "NUV": { + "cik": "812801", + "name": "NUVEEN MUNICIPAL VALUE FUND INC", + "bdc": false, + "listed": true, + "days": 9874, + "last": "2026-08-27", + "known": false + }, + "SWZ": { + "cik": "813623", + "name": "Total Return Securities Fund", + "bdc": false, + "listed": true, + "days": 9830, + "last": "2026-08-27", + "known": false + }, + "PCF": { + "cik": "810943", + "name": "HIGH INCOME SECURITIES FUND", + "bdc": false, + "listed": true, + "days": 9859, + "last": "2026-08-27", + "known": false + }, + "CLM": { + "cik": "814083", + "name": "Cornerstone Strategic Investment Fund, Inc.", + "bdc": false, + "listed": true, + "days": 6056, + "last": "2026-08-27", + "known": false + }, + "NCA": { + "cik": "818851", + "name": "NUVEEN CALIFORNIA MUNICIPAL VALUE FUND", + "bdc": false, + "listed": true, + "days": 9796, + "last": "2026-08-27", + "known": false + }, + "NNY": { + "cik": "818850", + "name": "NUVEEN NEW YORK MUNICIPAL VALUE FUND", + "bdc": false, + "listed": true, + "days": 9796, + "last": "2026-08-27", + "known": false + }, + "LEO": { + "cik": "818972", + "name": "BNY MELLON STRATEGIC MUNICIPALS, INC.", + "bdc": false, + "listed": true, + "days": 9806, + "last": "2026-08-27", + "known": false + }, + "FUND": { + "cik": "825202", + "name": "SPROTT FOCUS TRUST INC.", + "bdc": false, + "listed": true, + "days": 9627, + "last": "2026-08-27", + "known": false + }, + "BRW": { + "cik": "826020", + "name": "Saba Capital Income & Opportunities Fund", + "bdc": false, + "listed": true, + "days": 8679, + "last": "2026-08-27", + "known": false + }, + "MIN": { + "cik": "826735", + "name": "MFS INTERMEDIATE INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9688, + "last": "2026-08-27", + "known": false + }, + "PPT": { + "cik": "827773", + "name": "PUTNAM PREMIER INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9703, + "last": "2026-08-27", + "known": false + }, + "SABA": { + "cik": "828803", + "name": "Saba Capital Income & Opportunities Fund II", + "bdc": false, + "listed": true, + "days": 9684, + "last": "2026-08-27", + "known": false + }, + "NMI": { + "cik": "830271", + "name": "NUVEEN MUNICIPAL INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 9651, + "last": "2026-08-27", + "known": false + }, + "MHF": { + "cik": "830487", + "name": "WESTERN ASSET MUNICIPAL HIGH INCOME FUND INC.", + "bdc": false, + "listed": true, + "days": 9511, + "last": "2026-08-27", + "known": false + }, + "MPV": { + "cik": "831655", + "name": "BARINGS PARTICIPATION INVESTORS", + "bdc": false, + "listed": true, + "days": 9531, + "last": "2026-08-27", + "known": false + }, + "FT": { + "cik": "833040", + "name": "FRANKLIN UNIVERSAL TRUST", + "bdc": false, + "listed": true, + "days": 9551, + "last": "2026-08-27", + "known": false + }, + "OIA": { + "cik": "835333", + "name": "Invesco Municipal Income Opportunities Trust", + "bdc": false, + "listed": true, + "days": 9556, + "last": "2026-08-27", + "known": false + }, + "ZTR": { + "cik": "836412", + "name": "Virtus Total Return Fund Inc.", + "bdc": false, + "listed": true, + "days": 9551, + "last": "2026-08-27", + "known": false + }, + "JMM": { + "cik": "838131", + "name": "Nuveen Multi-Market Income Fund", + "bdc": false, + "listed": true, + "days": 9486, + "last": "2026-08-27", + "known": false + }, + "KTF": { + "cik": "839533", + "name": "DWS MUNICIPAL INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9531, + "last": "2026-08-27", + "known": false + }, + "PMM": { + "cik": "844790", + "name": "PUTNAM MANAGED MUNICIPAL INCOME TRUST", + "bdc": false, + "listed": true, + "days": 9450, + "last": "2026-08-27", + "known": false + }, + "VLT": { + "cik": "846671", + "name": "Invesco High Income Trust II", + "bdc": false, + "listed": true, + "days": 9407, + "last": "2026-08-27", + "known": false + }, + "AEF": { + "cik": "846676", + "name": "abrdn Emerging Markets ex-China Fund, Inc.", + "bdc": false, + "listed": true, + "days": 9298, + "last": "2026-08-27", + "known": false + }, + "GRF": { + "cik": "850027", + "name": "EAGLE CAPITAL GROWTH FUND, INC.", + "bdc": false, + "listed": true, + "days": 5685, + "last": "2026-08-27", + "known": false + }, + "DSM": { + "cik": "855887", + "name": "BNY MELLON STRATEGIC MUNICIPAL BOND FUND, INC.", + "bdc": false, + "listed": true, + "days": 9257, + "last": "2026-08-27", + "known": false + }, + "PDT": { + "cik": "855886", + "name": "JOHN HANCOCK PREMIUM DIVIDEND FUND", + "bdc": false, + "listed": true, + "days": 9241, + "last": "2026-08-27", + "known": false + }, + "GF": { + "cik": "858706", + "name": "NEW GERMANY FUND INC", + "bdc": false, + "listed": true, + "days": 9214, + "last": "2026-08-27", + "known": false + }, + "CEE": { + "cik": "860489", + "name": "CENTRAL & EASTERN EUROPE FUND, INC.", + "bdc": false, + "listed": true, + "days": 9191, + "last": "2026-08-27", + "known": false + }, + "MXE": { + "cik": "863900", + "name": "MEXICO EQUITY & INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 9074, + "last": "2026-08-27", + "known": false + }, + "PFD": { + "cik": "868578", + "name": "FLAHERTY & CRUMRINE PREFERRED & INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 8961, + "last": "2026-08-27", + "known": false + }, + "VKQ": { + "cik": "877463", + "name": "Invesco Municipal Trust", + "bdc": false, + "listed": true, + "days": 8752, + "last": "2026-08-27", + "known": false + }, + "DTF": { + "cik": "879535", + "name": "DTF TAX-FREE INCOME 2028 TERM FUND INC", + "bdc": false, + "listed": true, + "days": 8751, + "last": "2026-08-27", + "known": false + }, + "HERZ": { + "cik": "880406", + "name": "Herzfeld Credit Income Fund, Inc", + "bdc": false, + "listed": true, + "days": 8122, + "last": "2026-08-27", + "known": false + }, + "VGM": { + "cik": "880892", + "name": "Invesco Trust for Investment Grade Municipals", + "bdc": false, + "listed": true, + "days": 8692, + "last": "2026-08-27", + "known": false + }, + "PFO": { + "cik": "882071", + "name": "Flaherty & Crumrine PREFERRED & INCOME OPPORTUNITY FUND INC", + "bdc": false, + "listed": true, + "days": 8700, + "last": "2026-08-27", + "known": false + }, + "SBI": { + "cik": "882300", + "name": "WESTERN ASSET INTERMEDIATE MUNI FUND INC.", + "bdc": false, + "listed": true, + "days": 8701, + "last": "2026-08-27", + "known": false + }, + "VTN": { + "cik": "883265", + "name": "Invesco Trust for Investment Grade New York Municipals", + "bdc": false, + "listed": true, + "days": 8633, + "last": "2026-08-27", + "known": false + }, + "NXP": { + "cik": "883618", + "name": "NUVEEN SELECT TAX FREE INCOME PORTFOLIO", + "bdc": false, + "listed": true, + "days": 8671, + "last": "2026-08-27", + "known": false + }, + "HQL": { + "cik": "884121", + "name": "abrdn Life Sciences Investors", + "bdc": false, + "listed": true, + "days": 8641, + "last": "2026-08-27", + "known": false + }, + "VMO": { + "cik": "884152", + "name": "Invesco Municipal Opportunity Trust", + "bdc": false, + "listed": true, + "days": 8619, + "last": "2026-08-27", + "known": false + }, + "IIM": { + "cik": "885601", + "name": "Invesco Value Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 8438, + "last": "2026-08-27", + "known": false + }, + "IQI": { + "cik": "885125", + "name": "Invesco Quality Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 8542, + "last": "2026-08-27", + "known": false + }, + "MMU": { + "cik": "886043", + "name": "WESTERN ASSET MANAGED MUNICIPALS FUND INC.", + "bdc": false, + "listed": true, + "days": 8588, + "last": "2026-08-27", + "known": false + }, + "NIM": { + "cik": "890119", + "name": "NUVEEN SELECT MATURITIES MUNICIPAL FUND", + "bdc": false, + "listed": true, + "days": 8543, + "last": "2026-08-27", + "known": false + }, + "MPA": { + "cik": "891038", + "name": "BLACKROCK MUNIYIELD PENNSYLVANIA QUALITY FUND", + "bdc": false, + "listed": true, + "days": 8511, + "last": "2026-08-27", + "known": false + }, + "NAZ": { + "cik": "892992", + "name": "NUVEEN ARIZONA QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 8500, + "last": "2026-08-27", + "known": false + }, + "VPV": { + "cik": "895528", + "name": "Invesco Pennsylvania Value Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 8361, + "last": "2026-08-27", + "known": false + }, + "VCV": { + "cik": "895531", + "name": "Invesco California Value Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 8361, + "last": "2026-08-27", + "known": false + }, + "NMT": { + "cik": "897419", + "name": "NUVEEN MASSACHUSETTS QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 8419, + "last": "2026-08-27", + "known": false + }, + "NPV": { + "cik": "897421", + "name": "NUVEEN VIRGINIA QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 8419, + "last": "2026-08-27", + "known": false + }, + "PMO": { + "cik": "900422", + "name": "PUTNAM MUNICIPAL OPPORTUNITIES TRUST", + "bdc": false, + "listed": true, + "days": 8373, + "last": "2026-08-27", + "known": false + }, + "MSD": { + "cik": "904112", + "name": "MORGAN STANLEY EMERGING MARKETS DEBT FUND INC", + "bdc": false, + "listed": true, + "days": 8336, + "last": "2026-08-27", + "known": false + }, + "PCM": { + "cik": "908187", + "name": "PCM FUND, INC.", + "bdc": false, + "listed": true, + "days": 8306, + "last": "2026-08-27", + "known": false + }, + "TXEMF": { + "cik": "909112", + "name": "TEMPLETON EMERGING MARKETS INCOME FUND", + "bdc": false, + "listed": false, + "days": 0, + "last": "", + "known": false + }, + "VKI": { + "cik": "908993", + "name": "Invesco Advantage Municipal Income Trust II", + "bdc": false, + "listed": true, + "days": 8273, + "last": "2026-08-27", + "known": false + }, + "HIO": { + "cik": "910068", + "name": "WESTERN ASSET HIGH INCOME OPPORTUNITY FUND INC.", + "bdc": false, + "listed": true, + "days": 8250, + "last": "2026-08-27", + "known": false + }, + "RMT": { + "cik": "912147", + "name": "ROYCE MICRO-CAP TRUST, INC.", + "bdc": false, + "listed": true, + "days": 8230, + "last": "2026-08-27", + "known": false + }, + "RCS": { + "cik": "916183", + "name": "PIMCO STRATEGIC INCOME FUND, INC.", + "bdc": false, + "listed": true, + "days": 8165, + "last": "2026-08-27", + "known": false + }, + "IIF": { + "cik": "916618", + "name": "MORGAN STANLEY INDIA INVESTMENT FUND, INC.", + "bdc": false, + "listed": true, + "days": 8184, + "last": "2026-08-27", + "known": false + }, + "IFN": { + "cik": "917100", + "name": "ABERDEEN INDIA FUND, INC.", + "bdc": false, + "listed": true, + "days": 8187, + "last": "2026-08-27", + "known": false + }, + "TDF": { + "cik": "919893", + "name": "TEMPLETON DRAGON FUND INC", + "bdc": false, + "listed": true, + "days": 8037, + "last": "2026-08-27", + "known": false + }, + "BTO": { + "cik": "925683", + "name": "JOHN HANCOCK FINANCIAL OPPORTUNITIES FUND", + "bdc": false, + "listed": true, + "days": 8062, + "last": "2026-08-27", + "known": false + }, + "DHF": { + "cik": "1057861", + "name": "BNY MELLON HIGH YIELD STRATEGIES FUND", + "bdc": false, + "listed": true, + "days": 7129, + "last": "2026-08-27", + "known": false + }, + "HIX": { + "cik": "1058239", + "name": "WESTERN ASSET HIGH INCOME FUND II INC.", + "bdc": false, + "listed": true, + "days": 7110, + "last": "2026-08-27", + "known": false + }, + "VVR": { + "cik": "1059386", + "name": "Invesco Senior Income Trust", + "bdc": false, + "listed": true, + "days": 7088, + "last": "2026-08-27", + "known": false + }, + "BXSY": { + "cik": "1059213", + "name": "BEXIL INVESTMENT TRUST", + "bdc": false, + "listed": true, + "days": 7087, + "last": "2026-08-26", + "known": false + }, + "EVF": { + "cik": "1070732", + "name": "Eaton Vance Senior Income Trust", + "bdc": false, + "listed": true, + "days": 7000, + "last": "2026-08-27", + "known": false + }, + "NAN": { + "cik": "1074769", + "name": "NUVEEN NEW YORK QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 6856, + "last": "2026-08-27", + "known": false + }, + "EVN": { + "cik": "1074540", + "name": "Eaton Vance Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 6939, + "last": "2026-08-27", + "known": false + }, + "CEV": { + "cik": "1074692", + "name": "Eaton Vance California Municipal Income Trust", + "bdc": false, + "listed": true, + "days": 6939, + "last": "2026-08-27", + "known": false + }, + "NAC": { + "cik": "1074952", + "name": "Nuveen California Quality Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 6856, + "last": "2026-08-27", + "known": false + }, + "FXBY": { + "cik": "1068897", + "name": "FOXBY CORP.", + "bdc": false, + "listed": true, + "days": 6750, + "last": "2026-08-27", + "known": false + }, + "NAD": { + "cik": "1083839", + "name": "Nuveen Quality Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 6856, + "last": "2026-08-27", + "known": false + }, + "NVG": { + "cik": "1090116", + "name": "Nuveen AMT-Free Municipal Credit Income Fund", + "bdc": false, + "listed": true, + "days": 6028, + "last": "2026-08-27", + "known": false + }, + "NZF": { + "cik": "1137887", + "name": "Nuveen Municipal Credit Income Fund", + "bdc": false, + "listed": true, + "days": 6265, + "last": "2026-08-27", + "known": false + }, + "PCQ": { + "cik": "1140411", + "name": "PIMCO CALIFORNIA MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 6329, + "last": "2026-08-27", + "known": false + }, + "RQI": { + "cik": "1157842", + "name": "COHEN & STEERS QUALITY INCOME REALTY FUND INC", + "bdc": false, + "listed": true, + "days": 6166, + "last": "2026-08-27", + "known": false + }, + "JRS": { + "cik": "1158289", + "name": "NUVEEN REAL ESTATE INCOME FUND", + "bdc": false, + "listed": true, + "days": 6232, + "last": "2026-08-27", + "known": false + }, + "PCN": { + "cik": "1160990", + "name": "PIMCO CORPORATE & INCOME STRATEGY FUND", + "bdc": false, + "listed": true, + "days": 6211, + "last": "2026-08-27", + "known": false + }, + "WEA": { + "cik": "1163792", + "name": "WESTERN ASSET PREMIER BOND FUND", + "bdc": false, + "listed": true, + "days": 6145, + "last": "2026-08-27", + "known": false + }, + "PML": { + "cik": "1170299", + "name": "PIMCO MUNICIPAL INCOME FUND II", + "bdc": false, + "listed": true, + "days": 6082, + "last": "2026-08-27", + "known": false + }, + "PNI": { + "cik": "1170311", + "name": "PIMCO NEW YORK MUNICIPAL INCOME FUND II", + "bdc": false, + "listed": true, + "days": 6082, + "last": "2026-08-27", + "known": false + }, + "CHI": { + "cik": "1171471", + "name": "CALAMOS CONVERTIBLE OPPORTUNITIES & INCOME FUND", + "bdc": false, + "listed": true, + "days": 6081, + "last": "2026-08-27", + "known": false + }, + "FFC": { + "cik": "1174164", + "name": "Flaherty & Crumrine PREFERRED & INCOME SECURITIES FUND INC", + "bdc": false, + "listed": true, + "days": 5932, + "last": "2026-08-27", + "known": false + }, + "HPI": { + "cik": "1176199", + "name": "JOHN HANCOCK PREFERRED INCOME FUND", + "bdc": false, + "listed": true, + "days": 5818, + "last": "2026-08-27", + "known": false + }, + "EIM": { + "cik": "1176984", + "name": "Eaton Vance Municipal Bond Fund", + "bdc": false, + "listed": true, + "days": 6038, + "last": "2026-08-27", + "known": false + }, + "NBH": { + "cik": "1178839", + "name": "NEUBERGER MUNICIPAL FUND INC.", + "bdc": false, + "listed": true, + "days": 6000, + "last": "2026-08-27", + "known": false + }, + "HPF": { + "cik": "1189740", + "name": "JOHN HANCOCK PREFERRED INCOME FUND II", + "bdc": false, + "listed": true, + "days": 5975, + "last": "2026-08-27", + "known": false + }, + "NRK": { + "cik": "1195739", + "name": "NUVEEN NEW YORK AMT-FREE QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 5941, + "last": "2026-08-27", + "known": false + }, + "NKX": { + "cik": "1195738", + "name": "NUVEEN CALIFORNIA AMT-FREE QUALITY MUNICIPAL INCOME FUND", + "bdc": false, + "listed": true, + "days": 5941, + "last": "2026-08-27", + "known": false + }, + "NEA": { + "cik": "1195737", + "name": "Nuveen AMT-Free Quality Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 5941, + "last": "2026-08-27", + "known": false + }, + "FMN": { + "cik": "1199004", + "name": "Federated Hermes Premier Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 5958, + "last": "2026-08-27", + "known": false + }, + "PTY": { + "cik": "1190935", + "name": "PIMCO CORPORATE & INCOME OPPORTUNITY FUND", + "bdc": false, + "listed": true, + "days": 5955, + "last": "2026-08-27", + "known": false + }, + "EAD": { + "cik": "1210123", + "name": "ALLSPRING INCOME OPPORTUNITIES FUND", + "bdc": false, + "listed": true, + "days": 5914, + "last": "2026-08-27", + "known": false + }, + "HPS": { + "cik": "1215913", + "name": "JOHN HANCOCK PREFERRED INCOME FUND III", + "bdc": false, + "listed": true, + "days": 5837, + "last": "2026-08-27", + "known": false + }, + "JPC": { + "cik": "1216583", + "name": "Nuveen Preferred & Income Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5891, + "last": "2026-08-27", + "known": false + }, + "AVK": { + "cik": "1219120", + "name": "ADVENT CONVERTIBLE & INCOME FUND", + "bdc": false, + "listed": true, + "days": 5870, + "last": "2026-08-27", + "known": false + }, + "PHK": { + "cik": "1219360", + "name": "PIMCO HIGH INCOME FUND", + "bdc": false, + "listed": true, + "days": 5873, + "last": "2026-08-27", + "known": false + }, + "CHY": { + "cik": "1222719", + "name": "CALAMOS CONVERTIBLE & HIGH INCOME FUND", + "bdc": false, + "listed": true, + "days": 5850, + "last": "2026-08-27", + "known": false + }, + "EVV": { + "cik": "1222922", + "name": "Eaton Vance Ltd Duration Income Fund", + "bdc": false, + "listed": true, + "days": 5841, + "last": "2026-08-27", + "known": false + }, + "RNP": { + "cik": "1224450", + "name": "COHEN & STEERS REIT & PREFERRED & INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 5831, + "last": "2026-08-27", + "known": false + }, + "ERC": { + "cik": "1227073", + "name": "ALLSPRING MULTI-SECTOR INCOME FUND", + "bdc": false, + "listed": true, + "days": 5831, + "last": "2026-08-27", + "known": false + }, + "JQC": { + "cik": "1227476", + "name": "Nuveen Credit Strategies Income Fund", + "bdc": false, + "listed": true, + "days": 5830, + "last": "2026-08-27", + "known": false + }, + "EHI": { + "cik": "1228509", + "name": "WESTERN ASSET GLOBAL HIGH INCOME FUND INC.", + "bdc": false, + "listed": true, + "days": 5808, + "last": "2026-08-27", + "known": false + }, + "EMD": { + "cik": "1227862", + "name": "WESTERN ASSET EMERGING MARKETS DEBT FUND INC.", + "bdc": false, + "listed": true, + "days": 5718, + "last": "2026-08-27", + "known": false + }, + "FTF": { + "cik": "1233087", + "name": "FRANKLIN LTD DURATION INCOME TRUST", + "bdc": false, + "listed": true, + "days": 5782, + "last": "2026-08-27", + "known": false + }, + "PFL": { + "cik": "1244183", + "name": "PIMCO INCOME STRATEGY FUND", + "bdc": false, + "listed": true, + "days": 5787, + "last": "2026-08-27", + "known": false + }, + "FLC": { + "cik": "1245648", + "name": "FLAHERTY & CRUMRINE TOTAL RETURN FUND INC", + "bdc": false, + "listed": true, + "days": 5787, + "last": "2026-08-27", + "known": false + }, + "EVT": { + "cik": "1253327", + "name": "Eaton Vance Tax-Advantaged Dividend Income Fund", + "bdc": false, + "listed": true, + "days": 5766, + "last": "2026-08-27", + "known": false + }, + "WIA": { + "cik": "1254370", + "name": "WESTERN ASSET INFLATION-LINKED INCOME FUND", + "bdc": false, + "listed": true, + "days": 5765, + "last": "2026-08-27", + "known": false + }, + "EFR": { + "cik": "1258623", + "name": "Eaton Vance Senior Floating-Rate Trust", + "bdc": false, + "listed": true, + "days": 5724, + "last": "2026-08-27", + "known": false + }, + "HTD": { + "cik": "1260041", + "name": "JOHN HANCOCK TAX-ADVANTAGED DIVIDEND INCOME FUND", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false + }, + "NFJ": { + "cik": "1260563", + "name": "Virtus Dividend, Interest & Premium Strategy Fund", + "bdc": false, + "listed": true, + "days": 5408, + "last": "2026-08-27", + "known": false + }, + "NRO": { + "cik": "1261166", + "name": "NEUBERGER REAL ESTATE SECURITIES INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 5743, + "last": "2026-08-27", + "known": false + }, + "UTG": { + "cik": "1263994", + "name": "REAVES UTILITY INCOME FUND", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false + }, + "NMZ": { + "cik": "1266585", + "name": "NUVEEN MUNICIPAL HIGH INCOME OPPORTUNITY FUND", + "bdc": false, + "listed": true, + "days": 5727, + "last": "2026-08-27", + "known": false + }, + "TYG": { + "cik": "1268533", + "name": "TORTOISE ENERGY INFRASTRUCTURE CORP", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false + }, + "IGR": { + "cik": "1268884", + "name": "CBRE GLOBAL REAL ESTATE INCOME FUND", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false + }, + "SCD": { + "cik": "1270131", + "name": "LMP CAPITAL & INCOME FUND INC.", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false + }, + "ETG": { + "cik": "1270523", + "name": "Eaton Vance Tax-Advantaged Global Dividend Income Fund", + "bdc": false, + "listed": true, + "days": 5681, + "last": "2026-08-27", + "known": false + }, + "WIW": { + "cik": "1267902", + "name": "WESTERN ASSET INFLATION-LINKED OPPORTUNITIES & INCOME FUND", + "bdc": false, + "listed": true, + "days": 5663, + "last": "2026-08-27", + "known": false + }, + "CSQ": { + "cik": "1275214", + "name": "CALAMOS STRATEGIC TOTAL RETURN FUND", + "bdc": false, + "listed": true, + "days": 5637, + "last": "2026-08-27", + "known": false + }, + "UTF": { + "cik": "1275617", + "name": "COHEN & STEERS INFRASTRUCTURE FUND INC", + "bdc": false, + "listed": true, + "days": 5641, + "last": "2026-08-27", + "known": false + }, + "JFR": { + "cik": "1276533", + "name": "NUVEEN FLOATING RATE INCOME FUND", + "bdc": false, + "listed": true, + "days": 5642, + "last": "2026-08-27", + "known": false + }, + "ERH": { + "cik": "1279014", + "name": "ALLSPRING UTILITIES & HIGH INCOME FUND", + "bdc": false, + "listed": true, + "days": 5619, + "last": "2026-08-27", + "known": false + }, + "LGI": { + "cik": "1278211", + "name": "LAZARD GLOBAL TOTAL RETURN & INCOME FUND INC", + "bdc": false, + "listed": true, + "days": 5619, + "last": "2026-08-27", + "known": false + }, + "ETO": { + "cik": "1281926", + "name": "Eaton Vance Tax-Advantaged Global Dividend Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5599, + "last": "2026-08-27", + "known": false + }, + "FCT": { + "cik": "1282850", + "name": "FIRST TRUST SENIOR FLOATING RATE INCOME FUND II", + "bdc": false, + "listed": true, + "days": 5581, + "last": "2026-08-11", + "known": false + }, + "CGO": { + "cik": "1285650", + "name": "CALAMOS GLOBAL TOTAL RETURN FUND", + "bdc": false, + "listed": true, + "days": 5240, + "last": "2026-08-27", + "known": false + }, + "IGD": { + "cik": "1285890", + "name": "Voya GLOBAL EQUITY DIVIDEND & PREMIUM OPPORTUNITY FUND", + "bdc": false, + "listed": true, + "days": 5389, + "last": "2026-08-27", + "known": false + }, + "EVG": { + "cik": "1287498", + "name": "Eaton Vance Short Duration Diversified Income Fund", + "bdc": false, + "listed": true, + "days": 5411, + "last": "2026-08-27", + "known": false + }, + "EFT": { + "cik": "1288992", + "name": "Eaton Vance Floating-Rate Income Trust", + "bdc": false, + "listed": true, + "days": 5559, + "last": "2026-08-27", + "known": false + }, + "MCN": { + "cik": "1289868", + "name": "XAI Madison Equity Premium Income Fund", + "bdc": false, + "listed": true, + "days": 5554, + "last": "2026-08-27", + "known": false + }, + "GLV": { + "cik": "1288795", + "name": "Clough Global Dividend & Income Fund", + "bdc": false, + "listed": true, + "days": 5557, + "last": "2026-08-27", + "known": false + }, + "FFA": { + "cik": "1291334", + "name": "FIRST TRUST ENHANCED EQUITY INCOME FUND", + "bdc": false, + "listed": true, + "days": 5535, + "last": "2026-08-27", + "known": false + }, + "KYN": { + "cik": "1293613", + "name": "Kayne Anderson Energy Infrastructure Fund, Inc.", + "bdc": false, + "listed": true, + "days": 5514, + "last": "2026-08-27", + "known": false + }, + "PFN": { + "cik": "1296250", + "name": "PIMCO Income Strategy Fund II", + "bdc": false, + "listed": true, + "days": 5493, + "last": "2026-08-27", + "known": false + }, + "EOI": { + "cik": "1300391", + "name": "Eaton Vance Enhanced Equity Income Fund", + "bdc": false, + "listed": true, + "days": 5493, + "last": "2026-08-27", + "known": false + }, + "ASA": { + "cik": "1230869", + "name": "ASA Gold & Precious Metals Ltd", + "bdc": false, + "listed": true, + "days": 12264, + "last": "2026-08-27", + "known": false + }, + "PHD": { + "cik": "1305767", + "name": "Pioneer Floating Rate Fund, Inc.", + "bdc": false, + "listed": false, + "days": 0, + "last": "", + "known": false + }, + "EOS": { + "cik": "1308335", + "name": "Eaton Vance Enhanced Equity Income Fund II", + "bdc": false, + "listed": true, + "days": 5430, + "last": "2026-08-27", + "known": false + }, + "ETB": { + "cik": "1308927", + "name": "Eaton Vance Tax-Managed Buy-Write Income Fund", + "bdc": false, + "listed": true, + "days": 5368, + "last": "2026-08-27", + "known": false + }, + "GLQ": { + "cik": "1316463", + "name": "Clough Global Equity Fund", + "bdc": false, + "listed": true, + "days": 5368, + "last": "2026-08-27", + "known": false + }, + "FMY": { + "cik": "1319183", + "name": "FIRST TRUST MORTGAGE INCOME FUND", + "bdc": false, + "listed": true, + "days": 5347, + "last": "2026-08-27", + "known": false + }, + "PGP": { + "cik": "1318025", + "name": "PIMCO Global StocksPLUS & Income Fund", + "bdc": false, + "listed": true, + "days": 5347, + "last": "2026-08-27", + "known": false + }, + "ETV": { + "cik": "1322436", + "name": "Eaton Vance Tax-Managed Buy-Write Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5325, + "last": "2026-08-27", + "known": false + }, + "ETW": { + "cik": "1322435", + "name": "Eaton Vance Tax-Managed Global Buy-Write Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5223, + "last": "2026-08-27", + "known": false + }, + "IGA": { + "cik": "1332943", + "name": "Voya Global Advantage & Premium Opportunity Fund", + "bdc": false, + "listed": true, + "days": 5240, + "last": "2026-08-27", + "known": false + }, + "SPXX": { + "cik": "1338561", + "name": "Nuveen S&P 500 Dynamic Overwrite Fund", + "bdc": false, + "listed": true, + "days": 5221, + "last": "2026-08-27", + "known": false + }, + "ETY": { + "cik": "1340736", + "name": "Eaton Vance Tax-Managed Diversified Equity Income Fund", + "bdc": false, + "listed": true, + "days": 4967, + "last": "2026-08-27", + "known": false + }, + "BTA": { + "cik": "1343793", + "name": "BlackRock Long-Term Municipal Advantage Trust", + "bdc": false, + "listed": false, + "days": 2, + "last": "2026-08-27", + "known": false + }, + "GLO": { + "cik": "1350869", + "name": "Clough Global Opportunities Fund", + "bdc": false, + "listed": true, + "days": 5113, + "last": "2026-08-27", + "known": false + }, + "AGD": { + "cik": "1362481", + "name": "abrdn Global Dynamic Dividend Fund", + "bdc": false, + "listed": true, + "days": 5053, + "last": "2026-08-27", + "known": false + }, + "CAF": { + "cik": "1368493", + "name": "Morgan Stanley China A Share Fund, Inc.", + "bdc": false, + "listed": true, + "days": 5009, + "last": "2026-08-27", + "known": false + }, + "FOF": { + "cik": "1375340", + "name": "Cohen & Steers Closed-End Opportunity Fund, Inc.", + "bdc": false, + "listed": true, + "days": 4967, + "last": "2026-08-27", + "known": false + }, + "EXG": { + "cik": "1379438", + "name": "Eaton Vance Tax-Managed Global Diversified Equity Income Fund", + "bdc": false, + "listed": true, + "days": 4869, + "last": "2026-08-27", + "known": false + }, + "AOD": { + "cik": "1379400", + "name": "abrdn Total Dynamic Dividend Fund", + "bdc": false, + "listed": true, + "days": 4869, + "last": "2026-08-27", + "known": false + }, + "GOF": { + "cik": "1380936", + "name": "GUGGENHEIM STRATEGIC OPPORTUNITIES FUND", + "bdc": false, + "listed": true, + "days": 4802, + "last": "2026-08-27", + "known": false + }, + "NIE": { + "cik": "1383441", + "name": "Virtus Equity & Convertible Income Fund", + "bdc": false, + "listed": true, + "days": 4909, + "last": "2026-08-27", + "known": false + }, + "JCE": { + "cik": "1385763", + "name": "Nuveen Core Equity Alpha Fund", + "bdc": false, + "listed": true, + "days": 4886, + "last": "2026-08-27", + "known": false + }, + "IAE": { + "cik": "1385632", + "name": "Voya Asia Pacific High Dividend Equity Income Fund", + "bdc": false, + "listed": true, + "days": 4886, + "last": "2026-08-27", + "known": false + }, + "EOD": { + "cik": "1386067", + "name": "ALLSPRING GLOBAL DIVIDEND OPPORTUNITY FUND", + "bdc": false, + "listed": true, + "days": 4886, + "last": "2026-08-27", + "known": false + }, + "EDD": { + "cik": "1388141", + "name": "Morgan Stanley Emerging Markets Domestic Debt Fund, Inc.", + "bdc": false, + "listed": true, + "days": 4868, + "last": "2026-08-27", + "known": false + }, + "AWP": { + "cik": "1390195", + "name": "abrdn Global Premier Properties Fund", + "bdc": false, + "listed": true, + "days": 4866, + "last": "2026-08-27", + "known": false + }, + "ETJ": { + "cik": "1395325", + "name": "Eaton Vance Risk-Managed Diversified Equity Income Fund", + "bdc": false, + "listed": true, + "days": 4802, + "last": "2026-08-27", + "known": false + }, + "CHW": { + "cik": "1396277", + "name": "Calamos Global Dynamic Income Fund", + "bdc": false, + "listed": true, + "days": 4803, + "last": "2026-08-27", + "known": false + }, + "SRV": { + "cik": "1400897", + "name": "NXG Cushing Midstream Energy Fund", + "bdc": false, + "listed": true, + "days": 4776, + "last": "2026-08-27", + "known": false + }, + "IDE": { + "cik": "1417802", + "name": "Voya Infrastructure, Industrials & Materials Fund", + "bdc": false, + "listed": true, + "days": 4168, + "last": "2026-08-27", + "known": false + }, + "NUW": { + "cik": "1450445", + "name": "Nuveen AMT-Free Municipal Value Fund", + "bdc": false, + "listed": true, + "days": 4404, + "last": "2026-08-27", + "known": false + }, + "EOT": { + "cik": "1454741", + "name": "Eaton Vance National Municipal Opportunities Trust", + "bdc": false, + "listed": true, + "days": 4341, + "last": "2026-08-27", + "known": false + }, + "IGI": { + "cik": "1462586", + "name": "Western Asset Investment Grade Opportunity Trust Inc.", + "bdc": false, + "listed": true, + "days": 4316, + "last": "2026-08-27", + "known": false + }, + "RCG": { + "cik": "919567", + "name": "RENN Fund, Inc.", + "bdc": false, + "listed": true, + "days": 7631, + "last": "2026-08-27", + "known": false + }, + "JLS": { + "cik": "1472215", + "name": "Nuveen Mortgage & Income Fund/MA/", + "bdc": false, + "listed": true, + "days": 4212, + "last": "2026-08-27", + "known": false + }, + "GDO": { + "cik": "1472341", + "name": "WESTERN ASSET GLOBAL CORPORATE OPPORTUNITY FUND INC.", + "bdc": false, + "listed": true, + "days": 4214, + "last": "2026-08-27", + "known": false + }, + "DMO": { + "cik": "1478102", + "name": "Western Asset Mortgage Opportunity Fund Inc.", + "bdc": false, + "listed": true, + "days": 4153, + "last": "2026-08-27", + "known": false + }, + "NBB": { + "cik": "1478888", + "name": "Nuveen Taxable Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 4109, + "last": "2026-08-27", + "known": false + }, + "BSL": { + "cik": "1486298", + "name": "Blackstone Senior Floating Rate 2027 Term Fund", + "bdc": false, + "listed": true, + "days": 4089, + "last": "2026-08-27", + "known": false + }, + "NHS": { + "cik": "1487610", + "name": "Neuberger High Yield Strategies Fund Inc.", + "bdc": false, + "listed": true, + "days": 5808, + "last": "2026-08-27", + "known": false + }, + "BBN": { + "cik": "1493683", + "name": "BlackRock Taxable Municipal Bond Trust", + "bdc": false, + "listed": true, + "days": 4023, + "last": "2026-08-27", + "known": false + }, + "OXLCG": { + "cik": "1495222", + "name": "Oxford Lane Capital Corp.", + "bdc": false, + "listed": false, + "days": 376, + "last": "2026-08-27", + "known": false + }, + "GBAB": { + "cik": "1495825", + "name": "Guggenheim Taxable Municipal Bond & Investment Grade Debt Trust", + "bdc": false, + "listed": true, + "days": 3981, + "last": "2026-08-27", + "known": false + }, + "IHD": { + "cik": "1496292", + "name": "Voya Emerging Markets High Dividend Equity Fund", + "bdc": false, + "listed": true, + "days": 3856, + "last": "2026-08-27", + "known": false + }, + "LTCFX": { + "cik": "1496254", + "name": "Alternative Strategies Income Fund", + "bdc": false, + "listed": true, + "days": 2918, + "last": "2026-08-27", + "known": false + }, + "HEQ": { + "cik": "1496749", + "name": "John Hancock Diversified Income Fund", + "bdc": false, + "listed": true, + "days": 3835, + "last": "2026-08-27", + "known": false + }, + "HYI": { + "cik": "1497186", + "name": "Western Asset High Yield Opportunity Fund Inc.", + "bdc": false, + "listed": true, + "days": 3982, + "last": "2026-08-27", + "known": false + }, + "PSF": { + "cik": "1498612", + "name": "Cohen & Steers Select Preferred & Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3961, + "last": "2026-08-27", + "known": false + }, + "EDF": { + "cik": "1501103", + "name": "Virtus Stone Harbor Emerging Markets Income Fund", + "bdc": false, + "listed": true, + "days": 3941, + "last": "2026-08-27", + "known": false + }, + "BGX": { + "cik": "1504234", + "name": "Blackstone Long-Short Credit Income Fund", + "bdc": false, + "listed": true, + "days": 3919, + "last": "2026-08-27", + "known": false + }, + "BWG": { + "cik": "1504545", + "name": "BrandywineGLOBAL-Global Income Opportunities Fund Inc", + "bdc": false, + "listed": true, + "days": 3625, + "last": "2026-08-27", + "known": false + }, + "NXG": { + "cik": "1506488", + "name": "NXG NextGen Infrastructure Income Fund", + "bdc": false, + "listed": true, + "days": 3499, + "last": "2026-08-27", + "known": false + }, + "RGT": { + "cik": "1514490", + "name": "ROYCE GLOBAL TRUST, INC.", + "bdc": false, + "listed": true, + "days": 3240, + "last": "2026-08-27", + "known": false + }, + "DPG": { + "cik": "1515671", + "name": "Duff & Phelps Utility & Infrastructure Fund Inc.", + "bdc": false, + "listed": true, + "days": 3791, + "last": "2026-08-27", + "known": false + }, + "ARDC": { + "cik": "1515324", + "name": "Ares Dynamic Credit Allocation Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3457, + "last": "2026-08-27", + "known": false + }, + "KIO": { + "cik": "1515940", + "name": "KKR Income Opportunities Fund", + "bdc": false, + "listed": true, + "days": 3292, + "last": "2026-08-27", + "known": false + }, + "EMO": { + "cik": "1517518", + "name": "ClearBridge Energy Midstream Opportunity Fund Inc.", + "bdc": false, + "listed": true, + "days": 3824, + "last": "2026-08-27", + "known": false + }, + "MMD": { + "cik": "1518557", + "name": "NYLI MacKay DefinedTerm Muni Opportunities Fund", + "bdc": false, + "listed": true, + "days": 3536, + "last": "2026-08-27", + "known": false + }, + "CCID": { + "cik": "1517767", + "name": "Carlyle Credit Income Fund", + "bdc": false, + "listed": false, + "days": 211, + "last": "2026-08-27", + "known": false + }, + "BGH": { + "cik": "1521404", + "name": "BARINGS GLOBAL SHORT DURATION HIGH YIELD FUND", + "bdc": false, + "listed": true, + "days": 3477, + "last": "2026-08-27", + "known": false + }, + "DMA": { + "cik": "1523289", + "name": "Destra Multi-Alternative Fund", + "bdc": false, + "listed": false, + "days": 1159, + "last": "2026-08-27", + "known": false + }, + "VGI": { + "cik": "1528811", + "name": "Virtus Global Multi-Sector Income Fund", + "bdc": false, + "listed": true, + "days": 3648, + "last": "2026-08-27", + "known": false + }, + "ISD": { + "cik": "1534880", + "name": "PGIM High Yield Bond Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3604, + "last": "2026-08-27", + "known": false + }, + "JRI": { + "cik": "1539337", + "name": "Nuveen Real Asset Income & Growth Fund", + "bdc": false, + "listed": true, + "days": 3604, + "last": "2026-08-27", + "known": false + }, + "PDI": { + "cik": "1510599", + "name": "PIMCO Dynamic Income Fund", + "bdc": false, + "listed": true, + "days": 3584, + "last": "2026-08-27", + "known": false + }, + "DXR": { + "cik": "27367", + "name": "DAXOR CORP", + "bdc": false, + "listed": true, + "days": 10859, + "last": "2026-08-27", + "known": false + }, + "BGB": { + "cik": "1546429", + "name": "Blackstone Strategic Credit 2027 Term Fund", + "bdc": false, + "listed": true, + "days": 3499, + "last": "2026-08-27", + "known": false + }, + "LDP": { + "cik": "1548717", + "name": "Cohen & Steers Ltd Duration Preferred & Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3540, + "last": "2026-08-27", + "known": false + }, + "BPRE": { + "cik": "1551047", + "name": "Bluerock Private Real Estate Fund", + "bdc": false, + "listed": false, + "days": 175, + "last": "2026-08-27", + "known": false + }, + "GHY": { + "cik": "1554697", + "name": "PGIM Global High Yield Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3439, + "last": "2026-08-27", + "known": false + }, + "PGZ": { + "cik": "1557523", + "name": "Principal Real Estate Income Fund", + "bdc": false, + "listed": true, + "days": 3313, + "last": "2026-08-27", + "known": false + }, + "NML": { + "cik": "1562051", + "name": "Neuberger Energy Infrastructure & Income Fund Inc.", + "bdc": false, + "listed": true, + "days": 3377, + "last": "2026-08-27", + "known": false + }, + "ETX": { + "cik": "1563696", + "name": "Eaton Vance Municipal Income 2028 Term Trust", + "bdc": false, + "listed": true, + "days": 3377, + "last": "2026-08-27", + "known": false + }, + "DMB": { + "cik": "1565381", + "name": "BNY Mellon Municipal Bond Infrastructure Fund, Inc.", + "bdc": false, + "listed": true, + "days": 3355, + "last": "2026-08-27", + "known": false + }, + "FPF": { + "cik": "1567569", + "name": "First Trust Intermediate Duration Preferred & Income Fund", + "bdc": false, + "listed": true, + "days": 3335, + "last": "2026-08-27", + "known": false + }, + "BANX": { + "cik": "1578987", + "name": "ArrowMark Financial Corp.", + "bdc": false, + "listed": true, + "days": 3219, + "last": "2026-08-27", + "known": false + }, + "THQ": { + "cik": "1604522", + "name": "abrdn Healthcare Opportunities Fund", + "bdc": false, + "listed": true, + "days": 3039, + "last": "2026-08-27", + "known": false + }, + "NMS": { + "cik": "1607997", + "name": "Nuveen Minnesota Quality Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 2989, + "last": "2026-08-27", + "known": false + }, + "QQQX": { + "cik": "1608741", + "name": "Nuveen NASDAQ 100 Dynamic Overwrite Fund", + "bdc": false, + "listed": true, + "days": 4924, + "last": "2026-08-27", + "known": false + }, + "ECCV": { + "cik": "1604174", + "name": "Eagle Point Credit Co", + "bdc": false, + "listed": false, + "days": 1151, + "last": "2026-08-27", + "known": false + }, + "JGH": { + "cik": "1615905", + "name": "Nuveen Global High Income Fund", + "bdc": false, + "listed": true, + "days": 2956, + "last": "2026-08-27", + "known": false + }, + "BST": { + "cik": "1616678", + "name": "BlackRock Science & Technology Trust", + "bdc": false, + "listed": true, + "days": 2974, + "last": "2026-08-27", + "known": false + }, + "THW": { + "cik": "1635977", + "name": "abrdn World Healthcare Fund", + "bdc": false, + "listed": true, + "days": 2809, + "last": "2026-08-27", + "known": false + }, + "ACV": { + "cik": "1636289", + "name": "Virtus Diversified Income & Convertible Fund", + "bdc": false, + "listed": true, + "days": 2834, + "last": "2026-08-27", + "known": false + }, + "RSF": { + "cik": "1644771", + "name": "RiverNorth Capital & Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 1812, + "last": "2026-08-27", + "known": false + }, + "LENDX": { + "cik": "1658645", + "name": "Stone Ridge Trust V", + "bdc": false, + "listed": true, + "days": 2573, + "last": "2026-08-27", + "known": false + }, + "NRSAX": { + "cik": "1663712", + "name": "NEXPOINT REAL ESTATE STRATEGIES FUND", + "bdc": false, + "listed": true, + "days": 2540, + "last": "2026-08-27", + "known": false + }, + "RA": { + "cik": "1655099", + "name": "Brookfield Real Assets Income Fund Inc.", + "bdc": false, + "listed": true, + "days": 2446, + "last": "2026-08-27", + "known": false + }, + "XFLT": { + "cik": "1703079", + "name": "XAI Octagon Floating Rate & Alternative Income Trust", + "bdc": false, + "listed": true, + "days": 2233, + "last": "2026-08-27", + "known": false + }, + "ASCIX": { + "cik": "1716885", + "name": "Angel Oak Strategic Credit Fund", + "bdc": false, + "listed": true, + "days": 2179, + "last": "2026-08-27", + "known": false + }, + "CPZ": { + "cik": "1717457", + "name": "Calamos Long/Short Equity & Dynamic Income Trust", + "bdc": false, + "listed": true, + "days": 1696, + "last": "2026-08-27", + "known": false + }, + "OCCIM": { + "cik": "1716951", + "name": "OFS Credit Company, Inc.", + "bdc": false, + "listed": false, + "days": 476, + "last": "2026-08-27", + "known": false + }, + "PMFAX": { + "cik": "1723701", + "name": "PIMCO Flexible Municipal Income Fund", + "bdc": false, + "listed": true, + "days": 1751, + "last": "2026-08-27", + "known": false + }, + "NICHX": { + "cik": "1736510", + "name": "Variant Alternative Income Fund", + "bdc": false, + "listed": true, + "days": 1986, + "last": "2026-08-27", + "known": false + }, + "FINS": { + "cik": "1745059", + "name": "Angel Oak Financial Strategies Income Term Trust", + "bdc": false, + "listed": true, + "days": 1823, + "last": "2026-08-27", + "known": false + }, + "RMI": { + "cik": "1746967", + "name": "RiverNorth Opportunistic Municipal Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 1968, + "last": "2026-08-27", + "known": false + }, + "OWSCX": { + "cik": "1748680", + "name": "1WS Credit Income Fund", + "bdc": false, + "listed": true, + "days": 1883, + "last": "2026-08-27", + "known": false + }, + "LARAX": { + "cik": "1753712", + "name": "Lord Abbett Credit Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1746, + "last": "2026-08-27", + "known": false + }, + "EICA": { + "cik": "1754836", + "name": "Eagle Point Income Co Inc.", + "bdc": false, + "listed": false, + "days": 1219, + "last": "2026-08-27", + "known": false + }, + "PDX": { + "cik": "1756908", + "name": "PIMCO Dynamic Income Strategy Fund", + "bdc": false, + "listed": true, + "days": 1905, + "last": "2026-08-27", + "known": false + }, + "PDSKX": { + "cik": "1756404", + "name": "Principal Real Asset Fund", + "bdc": false, + "listed": true, + "days": 1804, + "last": "2026-08-27", + "known": false + }, + "RMM": { + "cik": "1771226", + "name": "RiverNorth Managed Duration Municipal Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 1782, + "last": "2026-08-27", + "known": false + }, + "AIO": { + "cik": "1778114", + "name": "Virtus Artificial Intelligence & Technology Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1716, + "last": "2026-08-27", + "known": false + }, + "RFM": { + "cik": "1790177", + "name": "RiverNorth Flexible Municipal Income Fund, Inc.", + "bdc": false, + "listed": true, + "days": 1613, + "last": "2026-08-27", + "known": false + }, + "NDMO": { + "cik": "1793129", + "name": "Nuveen Dynamic Municipal Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1507, + "last": "2026-08-27", + "known": false + }, + "ASGI": { + "cik": "1793855", + "name": "abrdn Global Infrastructure Income Fund", + "bdc": false, + "listed": true, + "days": 1528, + "last": "2026-08-27", + "known": false + }, + "PDO": { + "cik": "1798618", + "name": "PIMCO Dynamic Income Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1400, + "last": "2026-08-27", + "known": false + }, + "FTHY": { + "cik": "1810523", + "name": "FIRST TRUST HIGH YIELD OPPORTUNITIES 2027 TERM FUND", + "bdc": false, + "listed": true, + "days": 1550, + "last": "2026-08-27", + "known": false + }, + "VCRDX": { + "cik": "1812286", + "name": "Harrison Street Infrastructure Income Fund", + "bdc": false, + "listed": false, + "days": 605, + "last": "2026-08-27", + "known": false + }, + "SDHY": { + "cik": "1812923", + "name": "PGIM Short Duration High Yield Opportunities Fund", + "bdc": false, + "listed": true, + "days": 1444, + "last": "2026-08-27", + "known": false + }, + "RFMZ": { + "cik": "1817159", + "name": "RiverNorth Flexible Municipal Income Fund II, Inc.", + "bdc": false, + "listed": true, + "days": 1384, + "last": "2026-08-27", + "known": false + }, + "WDI": { + "cik": "1819559", + "name": "Western Asset Diversified Income Fund (WDI)", + "bdc": false, + "listed": true, + "days": 1299, + "last": "2026-08-27", + "known": false + }, + "NPCT": { + "cik": "1835068", + "name": "Nuveen Core Plus Impact Fund", + "bdc": false, + "listed": true, + "days": 1340, + "last": "2026-08-27", + "known": false + }, + "NBXG": { + "cik": "1843181", + "name": "Neuberger Next Generation Connectivity Fund Inc.", + "bdc": false, + "listed": true, + "days": 1320, + "last": "2026-08-27", + "known": false + }, + "MEGI": { + "cik": "1855066", + "name": "NYLI CBRE Global Infrastructure Megatrends Term Fund", + "bdc": false, + "listed": false, + "days": 1213, + "last": "2026-08-27", + "known": false + }, + "NMAI": { + "cik": "1861115", + "name": "Nuveen Multi-Asset Income Fund", + "bdc": false, + "listed": false, + "days": 1195, + "last": "2026-08-27", + "known": false + }, + "ECAT": { + "cik": "1864843", + "name": "BlackRock ESG Capital Allocation Term Trust", + "bdc": false, + "listed": false, + "days": 1234, + "last": "2026-08-27", + "known": false + }, + "GUG": { + "cik": "1864208", + "name": "Guggenheim Active Allocation Fund", + "bdc": false, + "listed": false, + "days": 1193, + "last": "2026-08-27", + "known": false + }, + "NPFD": { + "cik": "1865389", + "name": "Nuveen Variable Rate Preferred & Income Fund", + "bdc": false, + "listed": false, + "days": 1178, + "last": "2026-08-27", + "known": false + }, + "RMMZ": { + "cik": "1870833", + "name": "RiverNorth Managed Duration Municipal Income Fund II, Inc.", + "bdc": false, + "listed": false, + "days": 1139, + "last": "2026-08-27", + "known": false + }, + "RLTY": { + "cik": "1866874", + "name": "Cohen & Steers Real Estate Opportunities & Income Fund", + "bdc": false, + "listed": false, + "days": 1131, + "last": "2026-08-27", + "known": false + }, + "PAXS": { + "cik": "1886878", + "name": "PIMCO Access Income Fund", + "bdc": false, + "listed": false, + "days": 1150, + "last": "2026-08-27", + "known": false + }, + "EIIA": { + "cik": "1896036", + "name": "Eagle Point Institutional Income Fund", + "bdc": false, + "listed": false, + "days": 471, + "last": "2026-08-27", + "known": false + }, + "DXYZ": { + "cik": "1843974", + "name": "Destiny Tech100 Inc.", + "bdc": false, + "listed": false, + "days": 608, + "last": "2026-08-27", + "known": false + }, + "SPMA": { + "cik": "1930147", + "name": "Sound Point Meridian Capital, Inc.", + "bdc": false, + "listed": false, + "days": 449, + "last": "2026-08-27", + "known": false + }, + "PDPA": { + "cik": "1998043", + "name": "Pearl Diver Credit Co Inc.", + "bdc": false, + "listed": false, + "days": 425, + "last": "2026-08-27", + "known": false + }, + "CFND": { + "cik": "2044327", + "name": "C1 Fund Inc.", + "bdc": false, + "listed": false, + "days": 266, + "last": "2026-08-27", + "known": false + }, + "UNID": { + "cik": "2077697", + "name": "RiverNorth Short Prime Unicorn Fund I, Inc", + "bdc": false, + "listed": false, + "days": 0, + "last": "", + "known": false + }, + "UNIU": { + "cik": "2077715", + "name": "RiverNorth Long Prime Unicorn Fund I, Inc.", + "bdc": false, + "listed": false, + "days": 0, + "last": "", + "known": false + }, + "BOT": { + "cik": "2081119", + "name": "RoboStrategy, Inc.", + "bdc": false, + "listed": false, + "days": 76, + "last": "2026-08-27", + "known": false + }, + "RVI": { + "cik": "2085091", + "name": "Robinhood Ventures Fund I", + "bdc": false, + "listed": false, + "days": 121, + "last": "2026-08-27", + "known": false + }, + "PWRL": { + "cik": "2052053", + "name": "Powerlaw Corp.", + "bdc": false, + "listed": false, + "days": 65, + "last": "2026-08-27", + "known": false + } +} \ No newline at end of file diff --git a/fundlab/cef_universe.py b/fundlab/cef_universe.py new file mode 100644 index 0000000..c12b8c8 --- /dev/null +++ b/fundlab/cef_universe.py @@ -0,0 +1,159 @@ +"""CEF universe: the SEC's official "Closed-End Fund Information" report. + +Primary source: https://www.sec.gov/files/investment/data/other/ +closed-end-fund-information/closed-end-investment-company-.csv +(all ACTIVE 1940-Act closed-end companies: CIK, name, addresses, +filing status - 973 for 2026). This supersedes the N-2 full-index +approach (N-2/N-2-A filers are the CEFs that updated their +registration within the window - a biased subset; the report is the +whole active population). + +Tickers: CIK join with the SEC company_tickers.json exchange map +(305 of 973 match - the rest are small/dark/OTC funds). Hyphenated +tickers (GAM-PB etc.) are PREFERRED series - dropped (their price +history is the preferred's near-flat NAV, useless for screening); +the common class is usually the fund's other listed security. + +CEF notes for the rest of the pipeline: +- CEFs file NPORT-P (same format as open-end - xcheck.py works) +- shareholder reports are N-CSR/N-CSRS AND/OR N-2ASR (rocdetect must + try both) +- CEFs file N-PX proxies (open-end funds don't - a CEF signal) +- price = MARKET price (premium/discount to NAV is a free variable) +- Yahoo instrumentType is usually EQUITY - do NOT apply the open-end + MUTUALFUND filter +- BDCs are in the report too (name-flagged) +""" +from __future__ import annotations + +import csv +import io +import json +import re +import urllib.request +from datetime import date, timedelta +from pathlib import Path + +HERE = Path(__file__).parent +CACHE = HERE / "universe_cache" +CEF_CSV = CACHE / "cef_sec_2026.csv" +UNIVERSE = HERE / "cef_universe.json" +DATA = Path.home() / "prog/fin/stocks" +UA = {"User-Agent": "research test@example.com"} +MIN_DAYS = 1250 # >=5y of trading history (same bar as the 497 pass) +STALE_DAYS = 35 # last quote older than this = delisted + + +def _get(url: str) -> bytes: + req = urllib.request.Request(url, headers=UA) + return urllib.request.urlopen(req, timeout=120).read() + + +def fetch_cef_report(year: int = 2026) -> list[dict]: + """The SEC active-CEF report (CIK, name, ...). Cached locally.""" + if CEF_CSV.exists(): + raw = CEF_CSV.read_bytes() + else: + CACHE.mkdir(exist_ok=True) + # 2024+ uses hyphenated filenames, earlier underscored + for pat in (f"closed-end-investment-company-{year}.csv", + f"closed-end_investment_company_{year}.csv", + "closed-end_investment_company.csv"): + url = ("https://www.sec.gov/files/investment/data/other/" + f"closed-end-fund-information/{pat}") + try: + raw = _get(url) + break + except Exception: + continue + else: + raise RuntimeError("could not fetch the SEC CEF report") + CEF_CSV.write_bytes(raw) + rows = list(csv.DictReader(io.StringIO( + raw.decode("utf-8-sig")))) + return [{"cik": r["CIK"].lstrip("0") or "0", + "name": r["Registrant_Name"].strip()} for r in rows] + + +def _company_tickers() -> dict: + """cik(int) -> (ticker, title) from the SEC exchange-listed map.""" + d = json.loads(_get("https://www.sec.gov/files/company_tickers.json")) + out: dict[int, tuple] = {} + for v in d.values(): + cik = v.get("cik_str", v.get("cik")) + t = v.get("ticker", v.get("symbol")) + if cik is None or not t: + continue + out[int(cik)] = (t.upper(), v.get("title", "")) + return out + + +def _history(sym: str) -> tuple[int, str]: + """(trading days, last date) from the local price file.""" + p = DATA / f"{sym}-history.csv" + if not p.exists(): + return 0, "" + last = "" + n = 0 + with p.open() as f: + next(f, None) # header + for line in f: + n += 1 + last = line.split(",")[0] + return n, last + + +def run() -> dict: + cefs = fetch_cef_report() + print(f"{len(cefs)} active CEFs in the SEC report", flush=True) + tick = _company_tickers() + + # NOTE: do NOT exclude tickers present in the local DB - goget + # writes .json there, so after the first download every CEF + # would look "known". The SEC report already defines the set. + known = set() + for j in (Path(__file__).parent.parent / "funds.json", + HERE / "search_all.json", HERE / "search_external.json", + HERE / "xcheck_report.json"): + if j.exists(): + d = json.loads(j.read_text()) + if isinstance(d, dict): + known |= {k.upper() for k in d} + + stale = (date.today() - timedelta(days=STALE_DAYS)).toordinal() + out: dict[str, dict] = {} + n_pref = n_unmatched = 0 + for c in cefs: + hit = tick.get(int(c["cik"])) + if not hit: + n_unmatched += 1 + continue + t, _yt = hit + if "-" in t: # preferred/series class + n_pref += 1 + continue + if t in known: + continue + days, last = _history(t.lower()) + live = False + try: + live = date.fromisoformat(last).toordinal() >= stale + except ValueError: + pass + out[t] = {"cik": c["cik"], "name": c["name"], + "bdc": bool(re.search(r"business development", + c["name"], re.I)), + "listed": days >= MIN_DAYS and live, + "days": days, "last": last, "known": False} + n_listed = sum(1 for v in out.values() if v["listed"]) + n_bdc = sum(1 for v in out.values() if v["bdc"]) + print(f"{len(out)} CEF tickers ({n_listed} live with >=5y history, " + f"{n_bdc} BDCs, {n_pref} preferred-series dropped, " + f"{n_unmatched} CIKs with no listed ticker)", flush=True) + UNIVERSE.write_text(json.dumps(out, indent=1)) + print(f"wrote {UNIVERSE}") + return out + + +if __name__ == "__main__": + run() diff --git a/fundlab/goget_cef.log b/fundlab/goget_cef.log new file mode 100644 index 0000000..bf677c5 --- /dev/null +++ b/fundlab/goget_cef.log @@ -0,0 +1,137 @@ +goget + +Symbol = txemf +txemf: Bad format (timestamp) +Symbol = phd +Error fetching phd. Retries: 5: aborting +Get error (phd): 404 Not Found +Symbol = glq +Symbol = fmy +Symbol = pgp +Symbol = etv +Symbol = etw +Symbol = iga +Symbol = spxx +Symbol = ety +Symbol = bta +Symbol = glo +Symbol = agd +Symbol = caf +Symbol = fof +Symbol = exg +Symbol = aod +Symbol = nie +Symbol = jce +Symbol = iae +Symbol = eod +Symbol = edd +Symbol = awp +Symbol = etj +Symbol = chw +Symbol = srv +Symbol = ide +Symbol = nuw +Symbol = eot +Symbol = igi +Symbol = rcg +Symbol = jls +Symbol = gdo +Symbol = nbb +Symbol = bsl +Symbol = nhs +Symbol = bbn +Symbol = oxlcg +Symbol = gbab +Symbol = ihd +Symbol = ltcfx +Symbol = heq +Symbol = hyi +Symbol = psf +Symbol = edf +Symbol = bgx +Symbol = bwg +Symbol = nxg +Symbol = dpg +Symbol = ardc +Symbol = kio +Symbol = emo +Symbol = mmd +Symbol = ccid +Symbol = bgh +Symbol = dma +Symbol = vgi +Symbol = isd +Symbol = jri +Symbol = pdi +Symbol = dxr +Symbol = bgb +Symbol = ldp +Symbol = bpre +Symbol = ghy +Symbol = pgz +Symbol = nml +Symbol = etx +Symbol = dmb +Symbol = fpf +Symbol = banx +Symbol = thq +Symbol = nms +Symbol = qqqx +Symbol = eccv +Symbol = jgh +Symbol = bst +Symbol = thw +Symbol = acv +Symbol = rsf +Symbol = lendx +Symbol = nrsax +Symbol = ra +Symbol = xflt +Symbol = ascix +Symbol = cpz +Symbol = occim +Symbol = pmfax +Symbol = nichx +Symbol = fins +Symbol = rmi +Symbol = owscx +Symbol = larax +Symbol = eica +Symbol = pdx +Symbol = pdskx +Symbol = rmm +Symbol = aio +Symbol = rfm +Symbol = ndmo +Symbol = asgi +Symbol = pdo +Symbol = fthy +Symbol = vcrdx +Symbol = sdhy +Symbol = rfmz +Symbol = wdi +Symbol = npct +Symbol = nbxg +Symbol = megi +Symbol = nmai +Symbol = ecat +Symbol = gug +Symbol = npfd +Symbol = rmmz +Symbol = rlty +Symbol = paxs +Symbol = eiia +Symbol = dxyz +Symbol = spma +Symbol = pdpa +Symbol = cfnd +Symbol = unid +Error fetching unid. Retries: 5: aborting +Get error (unid): 404 Not Found +Symbol = uniu +Error fetching uniu. Retries: 5: aborting +Get error (uniu): 404 Not Found +Symbol = bot +Symbol = rvi +Symbol = pwrl +Failed downloads: [phd unid uniu] diff --git a/fxby-split.csv b/fxby-split.csv new file mode 100644 index 0000000..dca9151 --- /dev/null +++ b/fxby-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2021-05-07,1:5 diff --git a/grf-split.csv b/grf-split.csv new file mode 100644 index 0000000..b683562 --- /dev/null +++ b/grf-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2005-05-11,115:100 diff --git a/herz-split.csv b/herz-split.csv new file mode 100644 index 0000000..e2e8307 --- /dev/null +++ b/herz-split.csv @@ -0,0 +1,3 @@ +Date,Stock Splits +2026-02-09,1:10 +2021-11-18,1034:1000 diff --git a/iaf-split.csv b/iaf-split.csv new file mode 100644 index 0000000..94840b8 --- /dev/null +++ b/iaf-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2025-10-23,1:3 diff --git a/kf-split.csv b/kf-split.csv new file mode 100644 index 0000000..dc05108 --- /dev/null +++ b/kf-split.csv @@ -0,0 +1,3 @@ +Date,Stock Splits +1988-10-12,3:1 +2008-12-22,1:10 diff --git a/mci-split.csv b/mci-split.csv new file mode 100644 index 0000000..94cf0f8 --- /dev/null +++ b/mci-split.csv @@ -0,0 +1,3 @@ +Date,Stock Splits +1998-01-21,2:1 +2011-02-22,2:1 diff --git a/mxf-split.csv b/mxf-split.csv new file mode 100644 index 0000000..d2b7efd --- /dev/null +++ b/mxf-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +1993-09-03,10547:10000 diff --git a/nro-split.csv b/nro-split.csv new file mode 100644 index 0000000..1bb4de0 --- /dev/null +++ b/nro-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2025-01-23,1048:1000 diff --git a/peo-split.csv b/peo-split.csv new file mode 100644 index 0000000..c5726cf --- /dev/null +++ b/peo-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2000-10-20,3:2 diff --git a/rvt-split.csv b/rvt-split.csv new file mode 100644 index 0000000..ac193cb --- /dev/null +++ b/rvt-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2013-10-18,1084:1000 diff --git a/saba-split.csv b/saba-split.csv new file mode 100644 index 0000000..a21297e --- /dev/null +++ b/saba-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2024-06-24,1:2 diff --git a/swz-split.csv b/swz-split.csv new file mode 100644 index 0000000..6609c3d --- /dev/null +++ b/swz-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +1998-10-16,2:1 diff --git a/tests/test_fundlab.py b/tests/test_fundlab.py index c00b8e0..fda8921 100644 --- a/tests/test_fundlab.py +++ b/tests/test_fundlab.py @@ -576,6 +576,40 @@ def test_drawdown() -> None: check("fund_windows callable", callable(w), "") +def test_cef() -> None: + import numpy as np + import pandas as pd + from fundlab import cef_screen, cef_character + print("\ncef") + # _perf: flat market price, total-return line +30% over 3y -> the + # whole return is payout, maxDD ~ 0 (monotone up) + n = 3 * 252 + idx = pd.bdate_range("2023-01-02", periods=n) + adj = 100.0 * (1 + np.arange(n) / 252 * 0.10) + p = cef_screen._perf(pd.DataFrame({"Close": 100.0, + "Adj Close": adj}, index=idx)) + check("_perf t5 approx +30% (3y window)", + p["t5"] is not None and 0.29 < p["t5"] < 0.31, f"{p['t5']}") + check("_perf payout_12m == t12 - p12", + abs(p["payout_12m"] - (p["t12"] - p["p12"])) < 1e-12, + f"{p['payout_12m']}") + check("_perf vol5 positive", p["vol5"] is not None and p["vol5"] > 0) + check("_perf maxdd5 <= 0 (monotone up -> ~0)", + p["maxdd5"] is not None and p["maxdd5"] <= 1e-9, + f"{p['maxdd5']}") + # select(): top return + resilient + payout; NON_FUNDS excluded + scr = { + "AAA": {"sym": "aaa", "t5": 0.5, "n_pos_scen": 0, "payout_12m": 0.0}, + "BBB": {"sym": "bbb", "t5": 0.4, "n_pos_scen": 4, "payout_12m": 0.0}, + "CCC": {"sym": "ccc", "t5": -0.5, "n_pos_scen": 0, "payout_12m": 0.2}, + "CFND": {"sym": "cfnd", "t5": 0.9, "n_pos_scen": 0, "payout_12m": 0.0}, + } + sel = cef_character.select(scr) + check("select excludes NON_FUNDS", "cfnd" not in sel, str(sel)) + check("select includes top return + resilient + payout", + {"aaa", "bbb", "ccc"} <= set(sel), str(sel)) + + def main() -> int: test_pool() test_text_and_objective() @@ -590,6 +624,7 @@ def main() -> int: test_xcheck() test_taxplan() test_drawdown() + test_cef() test_edgar_live() print(f"\n{PASS} passed, {FAIL} failed") return 1 if FAIL else 0 diff --git a/tyg-split.csv b/tyg-split.csv new file mode 100644 index 0000000..14672bc --- /dev/null +++ b/tyg-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2020-05-01,1:4 diff --git a/utf-split.csv b/utf-split.csv new file mode 100644 index 0000000..d55281f --- /dev/null +++ b/utf-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2025-09-22,1017:1000 diff --git a/vlt-split.csv b/vlt-split.csv new file mode 100644 index 0000000..e2d82d3 --- /dev/null +++ b/vlt-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2009-05-26,1:5 diff --git a/ztr-split.csv b/ztr-split.csv new file mode 100644 index 0000000..e1aa692 --- /dev/null +++ b/ztr-split.csv @@ -0,0 +1,2 @@ +Date,Stock Splits +2012-06-27,1:4