Repository navigation
v0.7.0
wealthdb now shows what the holdings earn and how they move with
interest rates. The new yield report gives each holding's income
yield, implied yield and realized yield, its duration and DV01, and a
cash balance against its currency's benchmark, per currency and entity,
as of any day. income gains forward views: what the holdings are
expected to pay, month by month, beside what was received, and cashflow projection sets that income against the household's average outflows to
project the months ahead. A dividend calendar read from the fund
issuers, FINRA, SIX, JPX and the SEC gives each payment the day that
decides who is paid. exposure groups the debt by credit, maturity and
coupon, the stocks by cycle, and everything by issuer. Privacy mode
names every value a person typed by a pseudonym. All of it is on the
command line, over MCP, in the read-only skill and on the dashboards.
Upgrading
- Rebuild with
make all. Gold migrations 0134 to 0149 apply on the
first read-write open. Two collectors re-parse their documents on
their next load:fidelity-webits supplied statements, andsvb
every statement, which runs OCR again on the deposit and mortgage
statements and takes a while. - Fetch the reference data the reports read.
refdata: its silver moves to version 3. Run
./collectors/refdata/refdata load --forceonce to re-read the
bronze already kept into the new columns, thendownload --backfillfor the facts the wanted list names.sec-nmfp(SEC
money-market filings, the same terms as the other SEC providers)
is one more provider to enable inrefdata.cfg. To read the
dividend calendar, also namevanguardbeside the issuers and
finra,sixandjpxaftersec-edgar. Enabling one accepts
its source's terms, quoted in the collector's README.finra
needs a free FINRA Public API credential in
~/.secrets/finra.env(FINRA_CLIENT_ID,FINRA_CLIENT_SECRET);
without it the provider asks FINRA nothing. Thenrefdata download,refdata loadandwealthdb load refdata.fredfetches the Treasury curve beside the exchange rates:
./collectors/fred/fred download --lookback 2015-01-01,load,
thenwealthdb load fred.curves, a new collector, fetches the euro and franc curves from
the ECB and SNB data portals. It needs no key. Add acurves
silver source towealthdb.cfg, then./collectors/curves/curves download --lookback 2015-01-01,loadandwealthdb load curves. Enabling it accepts the portals' terms, quoted in its
README (the SNB's: non-commercial use, with the source named).
- Add a
yieldblock towealthdb.cfg:curvesnames the series
per currency and tenor.withholding,rating_funds,
conventions,cycles,settlement_cyclesandhorizon_months
are optional, as iscashflow.projection.lookback_months. Without
a block the reports still run: a currency with no curve has no
benchmark and no forward path, and says so. - Describe what no source states, if you want: the declarations
ledger takesrate,rating,dividendandtermsrecords.
wealthdb yield coverage -f ndjsonprints a skeleton for every
holding still missing one. - Run
wealthdb reload fidelityandwealthdb reload ubs. They link,
gross and reverse what is already loaded, and book a UBS
confirmation's function, rates and copies anew. Reload UBS before
its next incremental load. An installation with thesvbsideload
also runs./collectors/svb/svb loadandwealthdb reload svb: the
month-end workbook's marks are renamed, and a config or ledger
entry that named the mark's gold key moves to the new one,
fidelity-hist:5b9a9118c2681265. - Run a
wealthdb load(wealthdb load refdatawill do) before
wealthdb web refresh: the load builds the learned record-day
gaps. Thenwealthdb web refreshandwealthdb mcp restart. The
refresh fills the yield and projection tables and takes a
few minutes more. make demorebuilds the demo household, which holds every kind the
reports read and now states a dividend calendar.
Breaking for scripts and config
- A Schwab fund whose name abbreviates "Fixed Income" ("Fxd Inc",
"Fixed Inc") reads as fixed income.wealthdb reload schwabapplies
it to the snapshots already loaded. - The refdata wanted list is version 3. The collector and the engine
must come from the same build. refdata holds one credential,
FINRA's, read from the environment only. -pprints a typed name, key or id as a pseudonym (manual-1,
cointracking-2,nickname-1,category-1,angellist-1), stable
within one run or one MCP call. Before, some printed in full and
others as***.wealthdb cashflowhas a sixth view,projection, and the flags
--rates,--maturingand--shift. The other views refuse them.exposure credit,maturities,couponsandcyclesgain a
class_sharecolumn.exposure --periodrefusesissuers, as it
refusessecuritiesandfunds.yield coveragegains apaymentscolumn and arecord_day
section:stated,derived,learned,lag,noneand the
readings the window drops.- The Income dashboard has no Window picker. "Income by month" and
"Income by account" are retired. - MCP refusals of the
incomeandyieldtools read as the command
line's do, and start with the tool's name. - The
svbsideload's derived mark carries the marker
derived-workbook-markand the descriptionACCOUNT VALUE (WORKBOOK MARK); its gold instrument key changes with the description.
Yield
wealthdb yield <view>:global,sources,portfoliosand
accounts, one row per entity and currency with a value-weighted
total;positions;securitiesthrough funds;funds;cash
against its benchmark;curve, DV01 by tenor and by what holds it;
andcoverage.--convertedgives one row per entity,--perioda
series. Seewealthdb/docs/YIELD.md.- A bond's yield, duration and DV01 come from its terms: coupon,
maturity, frequency, call and rating, read from its source, its
statement, its description, OpenFIGI and the market's convention.
Bills, zeros, callable and floating notes, term deposits, tiered
savings, money-market funds, bond and equity funds, stocks and
mortgages each read the figures that fit them. - A cash rate is the one its bank states (UBS, Raiffeisen, VIAC,
Plaid), else a ledger record's. A stock's dividend is a ledger
record's, else its last payment at its frequency, else its filings'.
A payment counts per share of what its account held on the record
day, in today's units after a split or a depositary ratio change. A
special dividend stays out of the rate. A payer twice a year pays its
interim and its final, and reads its one rate once a year, tagged
partial, where the other half has no rate. - A dividend meets its holding under every id the source or the config
gives the instrument. A security held at several sources pools its
income and days. A bank's trades booked on a cash account move the
holding of their portfolio. - A fund's kind follows what it holds: filed rate risk or mostly debt
makes a bond fund, whatever the broker calls it. A floating-rate
fund floats: it resets with the curve and moves with--shiftand
--rates forward. A multi-asset fund has its rate risk measured as a
bond fund's and its income as an equity fund's. DV01 lands on the
currency of the rate it moves with. - Realized yield divides the year's income by the mean daily balance.
A position's is its security's, over every account, on the days
held, and readspartialwhere that is less than the year. A
balance that is thin most of the year reads no figure and the tag
thin. A holding that rounds to no cent has no row. - A floating rate never earns below zero, in the projection, under a
rate path or a shift, and on the dashboards. A balance a bank
charges for reads nothing, not a charge. - A
qualitycolumn says what each figure rests on, andcoverage
what is still missing.-phides amounts and ids.
Income
wealthdb income projection,calendar,sources,portfolios,
accountsandpositionsput the expected income beside what was
received, over last year, this year or the coming months: interest,
coupons, dividends, distributions, rent and pensions, and maturing
principal on request.income positionslists each holding's
expected payments, so it sums toincome projection.--rates constant|forwardholds today's rates or follows the forward
curve,--maturing cash|idle|rollsays what principal does at
maturity, and--shiftmoves every floating rate. The withholding
table gives what is withheld at source.- A distribution's frequency counts the months of the calendar paid per
month held. Two halves of a payer twice a year read as such; a fund
held under a year reads its stated or trailing yield; a quarterly
floating fund pays on its own days.
Dividend calendar
refdatareads each held fund's distributions from its issuer:
iShares (US and Swiss sites), SPDR (US and EMEA), Invesco (US, and
UCITS from run to run), Xtrackers, Amundi and Vanguard (US). It reads
an OTC depositary receipt's dividends from FINRA's OTC Daily List, a
Swiss share's from SIX, a Japanese share's from JPX's ex-rights list,
and the dividend dates a US company's filings tag from EDGAR. The
EDGAR reader parses a filing's inline XBRL documents only.- FINRA asks only the receipts held, only the fields it reads and only
the days after the newest event it has. It keeps a tally of each
month's bytes and stops before 8 GB of the 10 GB cap.login --check
prints it. - A payment rates on what was held as its ex day began, where the
calendar dates it, so a trade near the record day no longer drops
the reading. A record day derives from an ex day by the market's
settlement cycle, set inyield.settlement_cycleswith built-in
defaults. Hong Kong derives none. - A payment with no record day from the calendar takes one from its
issuer's gap: the median business days from record day to pay day
over the distributions the calendar states for it. A company's share
classes learn together; a fund with no gap of its own takes the gap
of its market's funds. The rest reads its market's lag.yield coveragecounts each payment's record day by its source.
Cash flow
wealthdb cashflow projection [FROM [TO]] [--period P] [--rates R] [--maturing M] [--shift BP]projects whole months from next month
on. It is a projection from today's holdings and the past months,
not a plan.
Each row has the investment income and the principal the income
projection expects, the other income, the operating outflows and the
vehicles' flows as monthly averages of the trailing months, the debt
service, the net and what each part rests on. See
wealthdb/docs/CASHFLOW.md.- The investment income and the principal are the income projection's
on the cash pool's accounts. What it expects on any other account (a
vehicle's, a giving account's, or onecashflow.accountsexcludes)
isvehicles_income, which stays there and is not in the net. The
three sum towealthdb income projection's expected and principal,
to the cent. The outflows arecashflow summary's over the
look-back, spread evenly. A mortgage's instalment continues to its
maturity where its terms state one, and through the window where
they do not. - A mortgage's end follows its own cadence: the median gap between its
reports, a month for one reported once. Reported monthly beside a
nightly feed, it no longer reads as repaid between its own reports.
Exposure
- Five more views look every fund through:
credit(AAA to B,
unrated, investment grade against high yield),maturities,
coupons(fixed, floating, inflation-linked, zero),cycles
(cyclical, sensitive, defensive) andissuers(stock, bonds and
deposits together, largest first). Each sums to net worth, and the
first four also give each bucket's share of its class.
Reference data
- N-PORT filings give a fund's rate and credit-spread sensitivities and
each debt line's flags. A newsec-nmfpprovider reads money-market
funds' seven-day yields and maturities. EDGAR gives each company's
earnings and dividends by period. - iShares, SPDR, Invesco and Xtrackers fund pages give a held fund's
duration, yields and credit and maturity breakdowns. An issuer's
holdings file gives each bond line's duration and yield where it
states them. Only an ETF or a fund wants fund characteristics; a load
re-reads each kind of reference over its own span; a US fund known
by its ISIN alone finds its SEC series through OpenFIGI.
Privacy
-phides every name a person typed: a typed account or portfolio
name, a nickname, an id that holds typed words, a manual holding's
name and key, a manual transaction id, a config category, an
AngelList account's id. Each prints as a pseudonym, so rows stay
apart. Public names stay as they are.
Dashboards
- A Yield dashboard: the yields, projected income, yield by currency,
cash against its benchmark, yield against duration, DV01 along each
currency's curve tenor by tenor, and the yields over time, with a
privacy twin. - Income: the Time range picks what was received, the Horizon what is
expected; Withholding reads the tax booked, and the withholding
table's model where one exists, and says "received" in its title
where none does. The tiles and cards follow one order, and the
privacy twin mirrors it. - Exposure gains four cards: "Debt by credit rating, share of debt and
cash", "Debt by maturity", "Debt by coupon kind" and "Public equity
by cycle". Each shows its class as 100, with a description of what
it counts. A share under 0.01% leaves the bars and stays in the
table. - Allocation gains "Top 100 issuers" below the top positions: the
hundred largest issuers of the whole book, a company's stock, bonds
and deposits in one row, as of the dashboard's day. - Cash Flow gains a projection section: the cash flow projection by
month and as a table, under the Horizon, Rate path, Maturing and
Shift pickers. The vehicles' income is a line of its own. The
privacy twin shows each part as a share of all the expected income.
MCP and skill
- A
yieldtool with the command's views; theincometool takes the
forward views and their assumptions; thecashflowtool takes the
cash flow projection. The read-only skill has recipes for all
three. - The
gainstool's views without a window read their own default
window again, not the income projection's forward one.
Collectors and the engine
- Every report at a date reads each account from its own newest
snapshot, and an account's last observation ends one and a half of
its own cadences after it, so a quarterly account no longer drops
out between its statements. The one-year horizon stays the backstop. - Fidelity statement rows that named no security take the key their
security trades under: the ticker they print, else the name. - A UBS dividend names its security, by its confirmation, its valor or
its ticker; where the confirmation or the export row states the
gross, the dividend reads the gross, and the tax withheld is its own
row. A cancelled or reversed confirmation books nothing; a cash leg
folds its export copy; each reversal takes back its own credit. - The
svbsideload names its month-end workbook and its derived marks
for the data they hold.
Demo
- The household holds callable, zero and floating bonds, a ladder of
discount notes, a money-market fund, a term deposit, tiered savings,
a rating-sliced fund, the ledger's yield records and a dividend
calendar, so every view and card has figures.
Getting started
- The README has a yield quickstart. YIELD.md shows a worked
withholding table and how to start the ledger fromyield coverage -f ndjson. refdata's README says how to turn on the dividend
calendar.