Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
A self-hosted share portfolio tracker, built for Australian investors.
FinancePython · HTMLGitHub @jarrodruggieroOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Self-hosted share portfolio tracker.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A self-hosted share portfolio tracker, built for Australian investors.
It answers the questions a spreadsheet gets asked and then gets wrong: what do
I hold, what did it cost, what is it worth, what did I earn in distributions,
and what will the ATO want to know in July.
Not financial advice and not tax advice. It does arithmetic on numbers you
give it. Check every figure, and talk to your accountant.
See the disclaimer.Read the full README ↗A self-hosted share portfolio tracker, built for Australian investors.
It answers the questions a spreadsheet gets asked and then gets wrong: what do I hold, what did it cost, what is it worth, what did I earn in distributions, and what will the ATO want to know in July.
Not financial advice and not tax advice. It does arithmetic on numbers you give it. Check every figure, and talk to your accountant. See the disclaimer.
Your holdings stay on your machine. Only ticker symbols ever leave — the
app asks a public service what ALPHA.AX closed at, and nothing else. No
quantities, no balances, no identifiers, no telemetry, no update check.
Dividend statement PDFs are parsed locally: no cloud OCR, no LLM, no upload.
Turn the price feed off and it makes no outbound requests at all, apart
from signing in through a single sign-on provider, if you set one up.
It knows about Australian tax. Financial years, FIFO capital gains with per-parcel detail, the CGT discount, franking credits, and exports shaped for an accountant.
Nothing is a snapshot. Every figure is computed from your trades, so correcting a trade from 2022 corrects every number that depended on it, everywhere, at once.
docker run -d --name stocktake -p 8000:8000 --restart unless-stopped \
-v stocktake-config:/config \
-v stocktake-data:/data \
-e TZ=Australia/Melbourne \
ghcr.io/jarrodruggiero/stocktake:latest
Then open http://localhost:8000. There is nothing to configure first: with no
configuration file the app boots into a setup wizard that chooses where to keep
the data, creates your account, and writes config.yaml for you.
| Volume | Mounted at | Holds |
|---|---|---|
stocktake-config | /config | config.yaml, which the setup wizard writes |
stocktake-data | /data | The database and any formats you add — back this up |
Both are named volumes, which Docker creates with the right owner. To use
folders on the host instead, run chown -R 1000:1000 on them first: the app
runs as uid 1000.
Full instructions, including what to set behind a reverse proxy, are in the deployment guide.
| Getting started | First run, importing, first look around |
| Guides | What each page does |
| Deployment | Running it properly |
| Configuration | Every setting |
| Command line | Recovery, the price feed, migrations |
| Contributing | Add a broker, a column, a report, a price source |
| Privacy · Security | What it does with your data, and what it does not protect against |
The most useful contributions are support for your broker, your registry's statements, or a price source for your country — and the first of those is usually a few lines of YAML rather than code.
Each of those has a recipe naming the exact files and the test to write: docs/contributing.
Australian rules only: financial years run July to June, capital gains use Australian rules, and franking credits are an Australian concept. The structure would accommodate other jurisdictions; nobody has written them.
Prices come from a free, unofficial source that occasionally breaks. FX and crypto have fallbacks; equities do not, for reasons worth reading before proposing one.
AGPL-3.0. See LICENSE.