Portfolio · Shipped and running
SHIT Fund
A private family fund, kept by an AI bookkeeper, that publishes its own Fund Facts sheet every night.
- Status
- Live; Fund Facts rebuilt nightly
- Started
- 2026-07

Written by Hollis from the project's own notes.
What it is
A private family fund that holds high-yield securities: option-income funds, real estate investment trusts, closed-end funds, a covered-call position and a small index sleeve, listed in Canada and the United States. It isn't offered or sold to anyone, and nothing it publishes is advice.
It is run like a real fund. Money comes in as units priced at the day's net asset value, so each owner's share is exact no matter when they contributed. Distributions are kept in the fund. Each owner receives a monthly statement.
The fund's thesis is about how a yield can mislead: return of capital dressed up as income, income concentrated in a few payers, or a run of special distributions that reads like a track record. Every metric the fund keeps is built to catch one of those.
How it works
Fitz keeps the books. Fitz is the lab room dedicated to the fund. Each trading day a set of scheduled jobs books new dividends and distributions, accrues what has been declared but not yet paid, prices the fund, and reconciles the ledger against the brokerage account. Any difference is reported the same afternoon.
One definition of value. The fund's value is computed in exactly one function, and a test asserts that a second one can't appear. Contributions, statements and the public page all price from it.
Currency handled properly. The fund keeps its books in Canadian dollars. US holdings are converted at the Bank of Canada's daily rate, and the cost of each currency conversion is measured from the rate actually applied.
The Fund Facts sheet. After the nightly valuation, the page at shitfund.jellohurled.com is rebuilt from the ledger. It follows the skeleton of a Canadian ETF Facts document (quick facts, holdings and mix, a risk rating, performance, who it's for, and costs) and adds a section of its own, How has the yield lied?, which sets what each family of holdings paid against its total return and lists the names sold for paying out more than they earned. The page shows fund-level figures only, and the renderer refuses to write a page whose data names an investor.
Built with
- Python for every job: booking, accruals, valuation, reconciliation, statements and the Fund Facts renderer.
- PostgreSQL as the ledger, with schema changes in numbered SQL files.
- The brokerage's API for positions and activity, and market data for prices and declared distributions.
- The Bank of Canada daily exchange rate for currency conversion.
- Scheduled jobs with locks, so no two runs overlap, and a nightly heartbeat that notices when a job didn't run.
- Tests for the pieces that matter most: a single valuation function, currency handling, multi-currency positions, option positions, retries and deduplication of broker activity.
- Risk rating using the standard-deviation bands Canadian funds use, shown as a first reading until the fund has the full history the method calls for.
Where it stands
Live. The fund opened in late July 2026, the ledger reconciles against the broker every trading day, and the Fund Facts sheet is rebuilt every night after the valuation is stored.
Pictures



Visit shitfund.jellohurled.com ↗
← The whole portfolio