“Agarwood Technology” (2025–2026)
fund infrastructure · founding engineer, sole developer
I joined Agarwood in March 2025 as its only engineer and stayed until June 2026. The investment team ran several strategies across a crypto exchange, Interactive Brokers and an external high-frequency mandate. The first system I built there was the fund management dashboard: from the first commit in August 2025 to production — Next.js and Supabase, a Node sync service under PM2 — designed, deployed and operated by me.
Every 60 seconds the service pulls each strategy's value from the exchange and broker APIs, writes a NAV snapshot, and pushes the change to open dashboards over server-sent events. The accounting is share-based: deposits, withdrawals, dividends and transfers are cash-flow rows; net invested, shares outstanding, NAV and PnL are derived from them, and account-level NAV and return roll up from the strategies. Investors have their own accounts and reports; every manual change lands in an audit log. The team looked at it every day, which is the only metric of a dashboard I trust.
The hard part was never the interface. It was keeping a ledger correct while people and three data sources write to it. The rules I ended up with came from incidents. Money to two decimals and NAV to four, rounded in the application and enforced again by database triggers, because a 0.001 disagreement is a reconciliation you never finish. One write path for NAV snapshots, with the 16:00 Hong Kong lock implemented once. A failing source keeps its last value rather than writing zero, because a stale number is a delay and a wrong number is an incident. One strategy's NAV once went from 0.88 to 0.52 because manual SQL changed its capital without changing its shares — after which "share count moves with capital" became a rule with a query attached.
In August 2026 I extracted what was reusable into agarwood-fund-kit: the NAV and share calculation core, the schema with its triggers, the sync skeleton, the Interactive Brokers layer, and the rules written down as documentation, with ninety-odd unit tests and no fund-specific values — every account, rate and host is a parameter. It is the part of the work that can be read.
Around the dashboard: Research-OS, a Python and PostgreSQL rule engine that turns the analysts' dollar-liquidity, macro, US-equity and BTC models into scored indicators — sixty-odd of them — replacing a manual weekly scoring pass; and, with the fund's research team, six investment-research agents as Claude Code plugins — daily briefing, earnings, deep research, sector, idea, memo — with ten research skills, six data connectors including Lark documents and bots, and a PR-gated knowledge base behind them. The agents were co-developed; everything else on this page I built alone.