#!srfv1 # Underlying-fund weights for each plan portfolio, by era. # # GENERATED by tools/gen_model.py from the Plan Disclosure Booklet. Regenerate # rather than hand-editing the projected rows; 21 eras is too many to retype # reliably. Hand edits to the `fitted` rows are fine, but keep them in sync. # # These portfolios are unitized fund-of-funds trusts, not mutual funds. The Plan # Disclosure Booklet is explicit that they "reflect changes in value from income # and gains and losses on the sale of the Underlying Funds solely by increasing # or decreasing their Unit Value" -- all income compounds into the unit value and # nothing is distributed. That is why the reconstruction uses each underlying # fund's dividend-adjusted (total-return) close, not its raw NAV. # # Source of the weights: the Plan Disclosure Booklet allocation tables at # https://marcom.vestwell.com/program-description/oregon-college.html # Corroborated for the current era by two live JSON endpoints that agree exactly: # https://vss-api.vestwell.com/plans/oregon-college/portfolios (array form) # https://vss-api.vestwell.com/plans/oregon-college (object form) # # `era_start` is inclusive: a weight row applies to every trading day >= its # era_start, until superseded by a later era for the same symbol. # # `basis` records how much a row is worth trusting: # fitted In effect now or in the past, and validated -- the reconstruction # reproduces every observed anchor to within 0.08% using it. # projected Not yet in effect. Read off the booklet forward table, so it is # the plan's published intent, NOT an observed fact. The booklet # reserves the right to "change the asset allocations ... and change # the selection of Underlying Funds", so confirm before relying on # one. `verify` flags any projected era that has become current. # # NOTE ON FEES: no fee or drag term appears here, and none is needed. The # reconstruction pins the series at both ends of every anchor gap and distributes # the residual geometrically, which absorbs the asset-based fee, cash drag, # trade-date lag and securities-lending income together. `verify` reports the # drag each gap implies, as a cross-check against the booklet's published cost # table ($23.40 per $10,000/yr = 0.234% for ORCBI, $23.91 = 0.239% for ORC42). # ORCBI -- "Balanced Index", a STATIC portfolio. The booklet: "Static Portfolio # investments remain fixed, subject to periodic rebalancing". No glidepath, so # one era covers its whole life. These weights change only by Board action. symbol::ORCBI,era_start::2018-09-01,basis::fitted,ticker::VSMPX,weight:num:36 symbol::ORCBI,era_start::2018-09-01,basis::fitted,ticker::VTPSX,weight:num:24 symbol::ORCBI,era_start::2018-09-01,basis::fitted,ticker::VBMPX,weight:num:40 # ORC42 -- "College Enrollment Year 2042", a GLIDEPATH portfolio. # # The booklet publishes a full cross-section of every enrollment-year portfolio # as of 2026-07-01. Because all of them follow one glidepath keyed on # years-to-enrollment, that cross-section IS ORC42's forward path shifted in # time: ORC42 in calendar year Y holds what enrollment-year row E = 4068 - Y # holds today. Y=2026 gives E=2042, which matches ORC42's fitted current era, so # the mapping checks out against observed data at the one point where it can. # # Two approximations in the projected rows: # 1. The booklet table is annual, but the booklet also says allocations step # QUARTERLY. So each projected era is up to three quarters coarse, and the # intermediate quarterly steps are not published anywhere. # 2. Era boundaries sit on 1 January. The current boundary was fitted to # 2026-01-01 by grid search over quarter boundaries; every candidate from # 2025-10-01 to 2026-04-01 gives rms <= 0.041%, so the fit cannot resolve # it better than that. # # Neither approximation matters much. Future eras cannot affect a reconstruction # that stops at today, and once daily feed values are appended to anchors.srf # every gap is one session, where pinning makes the weights literally inert (see # the test "weights are inert when anchors are one session apart"). They are # prefilled so the model degrades gracefully instead of silently using 2026 # weights in 2035 if forward recording ever lapses. # # Era 1 is the booklet's max-equity plateau (its 2043/2044/2045 rows). ORC42 # launched 19 years out from enrollment, so it sat on the plateau from # inception. symbol::ORC42,era_start::2023-07-01,basis::fitted,ticker::VSMPX,weight:num:54 symbol::ORC42,era_start::2023-07-01,basis::fitted,ticker::VTPSX,weight:num:36 symbol::ORC42,era_start::2023-07-01,basis::fitted,ticker::VIPIX,weight:num:1.67 symbol::ORC42,era_start::2023-07-01,basis::fitted,ticker::VBMPX,weight:num:6.66 symbol::ORC42,era_start::2023-07-01,basis::fitted,ticker::VTIFX,weight:num:1.67 # Era 2 is the booklet current 2042 row. Validated: the reconstruction # reproduces all nine ORC42 anchors to within 0.06% using it. symbol::ORC42,era_start::2026-01-01,basis::fitted,ticker::VSMPX,weight:num:52.8 symbol::ORC42,era_start::2026-01-01,basis::fitted,ticker::VTPSX,weight:num:35.2 symbol::ORC42,era_start::2026-01-01,basis::fitted,ticker::VIPIX,weight:num:2 symbol::ORC42,era_start::2026-01-01,basis::fitted,ticker::VBMPX,weight:num:8 symbol::ORC42,era_start::2026-01-01,basis::fitted,ticker::VTIFX,weight:num:2 # Projected: calendar 2027 takes the booklet enrollment-year 2041 row. symbol::ORC42,era_start::2027-01-01,basis::projected,ticker::VSMPX,weight:num:51.6 symbol::ORC42,era_start::2027-01-01,basis::projected,ticker::VTPSX,weight:num:34.4 symbol::ORC42,era_start::2027-01-01,basis::projected,ticker::VIPIX,weight:num:2.33 symbol::ORC42,era_start::2027-01-01,basis::projected,ticker::VBMPX,weight:num:9.34 symbol::ORC42,era_start::2027-01-01,basis::projected,ticker::VTIFX,weight:num:2.33 # Projected: calendar 2028 takes the booklet enrollment-year 2040 row. symbol::ORC42,era_start::2028-01-01,basis::projected,ticker::VSMPX,weight:num:49.8 symbol::ORC42,era_start::2028-01-01,basis::projected,ticker::VTPSX,weight:num:33.2 symbol::ORC42,era_start::2028-01-01,basis::projected,ticker::VIPIX,weight:num:2.83 symbol::ORC42,era_start::2028-01-01,basis::projected,ticker::VBMPX,weight:num:11.34 symbol::ORC42,era_start::2028-01-01,basis::projected,ticker::VTIFX,weight:num:2.83 # Projected: calendar 2029 takes the booklet enrollment-year 2039 row. symbol::ORC42,era_start::2029-01-01,basis::projected,ticker::VSMPX,weight:num:48 symbol::ORC42,era_start::2029-01-01,basis::projected,ticker::VTPSX,weight:num:32 symbol::ORC42,era_start::2029-01-01,basis::projected,ticker::VIPIX,weight:num:3.33 symbol::ORC42,era_start::2029-01-01,basis::projected,ticker::VBMPX,weight:num:13.34 symbol::ORC42,era_start::2029-01-01,basis::projected,ticker::VTIFX,weight:num:3.33 # Projected: calendar 2030 takes the booklet enrollment-year 2038 row. symbol::ORC42,era_start::2030-01-01,basis::projected,ticker::VSMPX,weight:num:45.6 symbol::ORC42,era_start::2030-01-01,basis::projected,ticker::VTPSX,weight:num:30.4 symbol::ORC42,era_start::2030-01-01,basis::projected,ticker::VIPIX,weight:num:4 symbol::ORC42,era_start::2030-01-01,basis::projected,ticker::VBMPX,weight:num:16 symbol::ORC42,era_start::2030-01-01,basis::projected,ticker::VTIFX,weight:num:4 # Projected: calendar 2031 takes the booklet enrollment-year 2037 row. symbol::ORC42,era_start::2031-01-01,basis::projected,ticker::VSMPX,weight:num:43.2 symbol::ORC42,era_start::2031-01-01,basis::projected,ticker::VTPSX,weight:num:28.8 symbol::ORC42,era_start::2031-01-01,basis::projected,ticker::VIPIX,weight:num:4.67 symbol::ORC42,era_start::2031-01-01,basis::projected,ticker::VBMPX,weight:num:18.66 symbol::ORC42,era_start::2031-01-01,basis::projected,ticker::VTIFX,weight:num:4.67 # Projected: calendar 2032 takes the booklet enrollment-year 2036 row. symbol::ORC42,era_start::2032-01-01,basis::projected,ticker::VSMPX,weight:num:41.16 symbol::ORC42,era_start::2032-01-01,basis::projected,ticker::VTPSX,weight:num:27.44 symbol::ORC42,era_start::2032-01-01,basis::projected,ticker::VIPIX,weight:num:5.23 symbol::ORC42,era_start::2032-01-01,basis::projected,ticker::VBMPX,weight:num:20.94 symbol::ORC42,era_start::2032-01-01,basis::projected,ticker::VTIFX,weight:num:5.23 # Projected: calendar 2033 takes the booklet enrollment-year 2035 row. symbol::ORC42,era_start::2033-01-01,basis::projected,ticker::VSMPX,weight:num:39.12 symbol::ORC42,era_start::2033-01-01,basis::projected,ticker::VTPSX,weight:num:26.08 symbol::ORC42,era_start::2033-01-01,basis::projected,ticker::VIPIX,weight:num:5.8 symbol::ORC42,era_start::2033-01-01,basis::projected,ticker::VBMPX,weight:num:23.2 symbol::ORC42,era_start::2033-01-01,basis::projected,ticker::VTIFX,weight:num:5.8 # Projected: calendar 2034 takes the booklet enrollment-year 2034 row. symbol::ORC42,era_start::2034-01-01,basis::projected,ticker::VSMPX,weight:num:37.2 symbol::ORC42,era_start::2034-01-01,basis::projected,ticker::VTPSX,weight:num:24.8 symbol::ORC42,era_start::2034-01-01,basis::projected,ticker::VIPIX,weight:num:6.33 symbol::ORC42,era_start::2034-01-01,basis::projected,ticker::VBMPX,weight:num:25.34 symbol::ORC42,era_start::2034-01-01,basis::projected,ticker::VTIFX,weight:num:6.33 # Projected: calendar 2035 takes the booklet enrollment-year 2033 row. symbol::ORC42,era_start::2035-01-01,basis::projected,ticker::VSMPX,weight:num:34.2 symbol::ORC42,era_start::2035-01-01,basis::projected,ticker::VTPSX,weight:num:22.8 symbol::ORC42,era_start::2035-01-01,basis::projected,ticker::VIPIX,weight:num:7.17 symbol::ORC42,era_start::2035-01-01,basis::projected,ticker::VBMPX,weight:num:28.66 symbol::ORC42,era_start::2035-01-01,basis::projected,ticker::VTIFX,weight:num:7.17 # Projected: calendar 2036 takes the booklet enrollment-year 2032 row. symbol::ORC42,era_start::2036-01-01,basis::projected,ticker::VSMPX,weight:num:31.2 symbol::ORC42,era_start::2036-01-01,basis::projected,ticker::VTPSX,weight:num:20.8 symbol::ORC42,era_start::2036-01-01,basis::projected,ticker::VIPIX,weight:num:8 symbol::ORC42,era_start::2036-01-01,basis::projected,ticker::VBMPX,weight:num:32 symbol::ORC42,era_start::2036-01-01,basis::projected,ticker::VTIFX,weight:num:8 # Projected: calendar 2037 takes the booklet enrollment-year 2031 row. symbol::ORC42,era_start::2037-01-01,basis::projected,ticker::VSMPX,weight:num:28.2 symbol::ORC42,era_start::2037-01-01,basis::projected,ticker::VTPSX,weight:num:18.8 symbol::ORC42,era_start::2037-01-01,basis::projected,ticker::VIPIX,weight:num:8.83 symbol::ORC42,era_start::2037-01-01,basis::projected,ticker::VBMPX,weight:num:35.34 symbol::ORC42,era_start::2037-01-01,basis::projected,ticker::VTIFX,weight:num:8.83 # Projected: calendar 2038 takes the booklet enrollment-year 2030 row. symbol::ORC42,era_start::2038-01-01,basis::projected,ticker::VSMPX,weight:num:24.8 symbol::ORC42,era_start::2038-01-01,basis::projected,ticker::VTPSX,weight:num:16.53 symbol::ORC42,era_start::2038-01-01,basis::projected,ticker::VIPIX,weight:num:7.61 symbol::ORC42,era_start::2038-01-01,basis::projected,ticker::VBMPX,weight:num:30.45 symbol::ORC42,era_start::2038-01-01,basis::projected,ticker::VTIFX,weight:num:7.61 symbol::ORC42,era_start::2038-01-01,basis::projected,ticker::VBIPX,weight:num:7.5 symbol::ORC42,era_start::2038-01-01,basis::projected,ticker::VTSPX,weight:num:5.5 # Projected: calendar 2039 takes the booklet enrollment-year 2029 row. symbol::ORC42,era_start::2039-01-01,basis::projected,ticker::VSMPX,weight:num:20.3 symbol::ORC42,era_start::2039-01-01,basis::projected,ticker::VTPSX,weight:num:13.53 symbol::ORC42,era_start::2039-01-01,basis::projected,ticker::VIPIX,weight:num:5.78 symbol::ORC42,era_start::2039-01-01,basis::projected,ticker::VBMPX,weight:num:23.11 symbol::ORC42,era_start::2039-01-01,basis::projected,ticker::VTIFX,weight:num:5.78 symbol::ORC42,era_start::2039-01-01,basis::projected,ticker::VBIPX,weight:num:20.5 symbol::ORC42,era_start::2039-01-01,basis::projected,ticker::VTSPX,weight:num:11 # Projected: calendar 2040 takes the booklet enrollment-year 2028 row. symbol::ORC42,era_start::2040-01-01,basis::projected,ticker::VSMPX,weight:num:15 symbol::ORC42,era_start::2040-01-01,basis::projected,ticker::VTPSX,weight:num:10 symbol::ORC42,era_start::2040-01-01,basis::projected,ticker::VIPIX,weight:num:3.33 symbol::ORC42,era_start::2040-01-01,basis::projected,ticker::VBMPX,weight:num:13.34 symbol::ORC42,era_start::2040-01-01,basis::projected,ticker::VTIFX,weight:num:3.33 symbol::ORC42,era_start::2040-01-01,basis::projected,ticker::VBIPX,weight:num:35 symbol::ORC42,era_start::2040-01-01,basis::projected,ticker::VTSPX,weight:num:20 # Projected: calendar 2041 takes the booklet enrollment-year 2027 row. symbol::ORC42,era_start::2041-01-01,basis::projected,ticker::VSMPX,weight:num:10.5 symbol::ORC42,era_start::2041-01-01,basis::projected,ticker::VTPSX,weight:num:7 symbol::ORC42,era_start::2041-01-01,basis::projected,ticker::VIPIX,weight:num:0.33 symbol::ORC42,era_start::2041-01-01,basis::projected,ticker::VBMPX,weight:num:1.34 symbol::ORC42,era_start::2041-01-01,basis::projected,ticker::VTIFX,weight:num:0.33 symbol::ORC42,era_start::2041-01-01,basis::projected,ticker::VBIPX,weight:num:50 symbol::ORC42,era_start::2041-01-01,basis::projected,ticker::VTSPX,weight:num:30.5 # Projected: calendar 2042 takes the booklet enrollment-year 2026 row. symbol::ORC42,era_start::2042-01-01,basis::projected,ticker::VSMPX,weight:num:6 symbol::ORC42,era_start::2042-01-01,basis::projected,ticker::VTPSX,weight:num:4 symbol::ORC42,era_start::2042-01-01,basis::projected,ticker::VBIPX,weight:num:30 symbol::ORC42,era_start::2042-01-01,basis::projected,ticker::VTSPX,weight:num:30 symbol::ORC42,era_start::2042-01-01,basis::projected,ticker::VUSXX,weight:num:30 # Projected: calendar 2043 takes the booklet enrollment-year 2025 row. symbol::ORC42,era_start::2043-01-01,basis::projected,ticker::VSMPX,weight:num:3 symbol::ORC42,era_start::2043-01-01,basis::projected,ticker::VTPSX,weight:num:2 symbol::ORC42,era_start::2043-01-01,basis::projected,ticker::VBIPX,weight:num:23 symbol::ORC42,era_start::2043-01-01,basis::projected,ticker::VTSPX,weight:num:23 symbol::ORC42,era_start::2043-01-01,basis::projected,ticker::VUSXX,weight:num:49 # Projected: calendar 2044 takes the booklet enrollment-year 2024 row. symbol::ORC42,era_start::2044-01-01,basis::projected,ticker::VBIPX,weight:num:14.5 symbol::ORC42,era_start::2044-01-01,basis::projected,ticker::VTSPX,weight:num:14.5 symbol::ORC42,era_start::2044-01-01,basis::projected,ticker::VUSXX,weight:num:71 # Projected: calendar 2045 takes the booklet enrollment-year 2023 row. symbol::ORC42,era_start::2045-01-01,basis::projected,ticker::VBIPX,weight:num:5 symbol::ORC42,era_start::2045-01-01,basis::projected,ticker::VTSPX,weight:num:5 symbol::ORC42,era_start::2045-01-01,basis::projected,ticker::VUSXX,weight:num:90 # Projected: calendar 2046 takes the booklet enrollment-year 2022 row. symbol::ORC42,era_start::2046-01-01,basis::projected,ticker::VBIPX,weight:num:5 symbol::ORC42,era_start::2046-01-01,basis::projected,ticker::VTSPX,weight:num:5 symbol::ORC42,era_start::2046-01-01,basis::projected,ticker::VUSXX,weight:num:90 # Projected: calendar 2047 takes the booklet enrollment-year 2021 row. symbol::ORC42,era_start::2047-01-01,basis::projected,ticker::VUSXX,weight:num:100