Category: Uncategorized

  • Day 246: … oops, it’s been a while.

    First of all, hope the back half of 2025 and the start of 2026 have been excellent to you! Secondly, I apologize for being so delinquent with my posts; it’s been a minute since we last corresponded, hasn’t it? For those of you who are somehow still keeping up with this blog, some updates!

    The Runescape Saga

    I detailed the beginning of this project in my previous post, “Day 1: Backtesting Fish, Fighting Python”. I thought I owe y’all an update, even though details are admittedly hazy here. Overall, the project became somewhat more trivial / unexciting than I’d thought — the big hurdle was pulling pricing and volume data (which had granularity issues of its own, but more on that later), but once you overcame that, it was relatively easy to implement basic strategies:

    • relative value was probably the easiest: arbing iron ore vs. iron bars for example, or food items used in combat — there was a period in time where lobsters traded more richly than swordfish, which made no sense because lobsters restore 12 hp vs swordfish at 14. There was no reason for the lobster trade to have been available: these items have no additional use that I’m aware of outside of weird burnt food collectors, and inventory space is a premium during combat.
    • moving averages and seasonality — there were several items that had pronounced daily seasonality, like soft clay if I remember correctly. Going off of memory, but if you bought prior to 10 am CT and monetized after 8 pm, there was persistent alpha.
    • macro trades — unfortunately, macro isn’t particularly lucrative in OSRS, given the long time frames required. The big event I was positioned for was the release of Sailing, which was the first new skill added to Runescape in over 15 years. There was a Reddit post (I believe this one) that discussed the raw materials (planks, nails, logs). I bought those, sat on them, and produced >200% returns over 6 months. Sounds great, but unfortunately this was relatively unimpressive compared to the alternatives above. I didn’t bother tracking performance, but I’m fairly confident it’s possible to do 5% daily returns using the stat arb strategies above.
    Line chart showing the price history and daily volume of iron nails in RuneScape over the span of several years, with key data points highlighted for January 9, 2025.
    Iron nails tripled despite the catalyst being perhaps the most widely observed event in OSRS history (I believe concurrent players recently hit a new record following the release of Sailing!). Unfortunately, these types of trades (widely watched, with information disseminated via public forums like Reddit, and with decently liquid markets) do not pay in real life. Sad 🙁

    While it was fun to watch the gold stack up, I gradually lost interest over time because of difficulty scaling: you only have three trading slots (i.e., you can only place three buy OR sell orders at a time, so it’s impossible to leave multiple standing orders on both sides of the trade with only one account) and OSRS is pretty strict on automated activity / botting. I did make multiple accounts but managing all of them kinda became a pain in the ass at the end, and I’m a cheap bastard so I didn’t feel like paying for membership, which expands available slots to six. I considered expanding via setting up a clan and basically giving people a cut of trading profits, but I couldn’t think of a way to a) prevent alpha leakage and b) figure out good enough incentives (I wrote on the post-scarcity nature of OSRS in my Medium post here: RuneScape as a Post-Scarcity Model: A Closed-System Preview of Late-Stage Capitalism). After racking up more gold in a few months than I had in YEARS of playing OSRS as a child, I lost interest and Gielinor’s preeminent one-man multistrat hedge fund*, Zaros Capital, returned all external capital (seed capital of 60K gold pieces from a friend who had played OSRS years ago; returned many multiples of this!), and wound down. Given no personnel, liquid holdings, and no physical assets associated with the firm, no meaningful expenses to the investor were incurred as a result of the closing.

    *Not independently verified, but also not contested as far as I know.

    Disclaimer: This material is for informational purposes only and does not constitute an offer to sell or a solicitation of an offer to buy any securities or investment products. Past performance is not indicative of future results. All returns are hypothetical, unaudited, and denominated in an unstable medieval currency.

    So, now that you’ve finished your sage as an MMORPG hedge fund manager, what’s next?

    At a Crossroads

    For those of you who don’t know me at a personal level, I love picking stocks. I consider it core to be who I am, which probably sounds weird to people who have occupations they don’t love (which I’m not knocking by the way; from what I see with my peers, unfortunately 90% of the time, it’s very difficult to connect work with play / real interests). I thought “solving the infinite puzzle” of financial markets is the only real place that someone like me (total nerd, obsession with figuring out how things work, desire for a high degree of agency, deep critical thinker, not particularly talented in technical fields like math or science nor good with my hands) could achieve professional fulfillment. I really love this shit. I could do it until the day I die or the robots drag me away from the desk (“beep boop inefficient capital allocator detected”?).

    However, for the first time, I’m seriously considering other options for the long term.

    It’s… Time to Build?

    During the Zaros Capital saga, I used Cursor fairly heavily to handle things like pulling data, running quick backtests, and producing automated signals. This was back in May, and honestly I was already pretty impressed with capabilities at the time. The fact that I could verbalize what I was looking for and have a functional script produced in a matter of minutes, if not seconds, was mindblowing to me — this would probably have taken hours, if not days, for me to do myself (as a matter of fact, I KNOW it would have, because the last time I tried to create a script myself for an investment project I was working on, it took comfortably over a week). Although OSRS was ultimately meaningless, it did help open my eyes to possibilities I hadn’t previously considered.

    I genuinely think now is one of the best times in history to start a business — especially a small, software-driven one.

    For the first time, the constraint is no longer “can I build this?” but “should this exist?” With tools like Cursor, Claude Code, and other agentic workflows, the marginal cost of turning an idea into something functional has collapsed. Things that would have required a small team a few years ago can now be done by one person with a decent AI IDE subscription, a clear mental model, and a willingness to iterate.

    Even the non-technical parts of building a business — marketing, positioning, customer discovery, pricing — feel more tractable than they used to. Not because they’re easy, but because you’re no longer starting from a blank page. You can pressure-test ideas, sanity-check assumptions, and learn best practices without spending months reinventing the wheel.

    In practical terms, it feels plausible to me that you could create a real, revenue-generating online business today with:

    • a handful of AI tooling subscriptions,
    • a laptop,
    • and well under $100,000 in capital.

    That simply wasn’t true for most of my career.

    What makes this moment particularly interesting is that these paths don’t feel mutually exclusive in the way they once did. The skills that make someone a good investor (synthesis, judgment under uncertainty, comfort with incomplete information, systems thinking, ability to deal with the slog and general bullshit) map surprisingly well onto building products. And the tools now exist to let one person move fast enough that the experiment doesn’t have to be all-or-nothing.

    Given my nature (skeptical, risk-averse for the most part (my love for games of chance notwithstanding), and dislike of “bitch work,” the fact that I’m even considering should be a sign to both you and me of how real the opportunities are. Fulfillment is out there for all of us. Sorry to wax poetic, but I’ll close out with a16z’s same closing paragraph from their article which shares the same name as this section:

    “Our nation and our civilization were built on production, on building. Our forefathers and foremothers built roads and trains, farms and factories, then the computer, the microchip, the smartphone, and uncounted thousands of other things that we now take for granted, that are all around us, that define our lives and provide for our well-being. There is only one way to honor their legacy and to create the future we want for our own children and grandchildren, and that’s to build.”

    See you next time, and hopefully it wont be more than 6 months in between posts!

  • Day 1: Backtesting Fish, Fighting Python

    If you came here from Medium, then you’re aware that I’m trying to set up a very rudimentary and dumb multi-strat hedge fund in the world of Runescape. The plan is to apply real-world quantitative trading strategies to the game’s economy, turning virtual fish and logs into a compounding GP machine.

    The core strategies I’m exploring include:

    • Macro Thesis Trades: Capitalizing on game updates and seasonal events.
    • Processing Arbitrage: Exploiting inefficiencies in in-game item transformations.
    • Seasonality-Driven Statistical Arbitrage: Analyzing microseasonal patterns influenced by player behavior and bot activity.

    It’s day 1, but this endeavor has led me down a rabbit hole of Python scripting, API interactions, and the occasional existential crisis. For context, I consider myself a very novice programmer — took three years of computer science in high school and used some Python and R, but mostly for statistics applications, and I’ve since been using my programming skills very sparingly; in my prior life as an investment analyst, we had a very talented intern who we left our programming needs to, and who later started his own (very effective) business on this (shoutout to Rohit at Durable Alpha! – if you happen to be an institutional investor who has data analysis needs, I highly recommend reaching out to him here: https://www.trydurablealpha.com/). As a consequence, I’m ashamed to say I’ve gotten very rusty — I’ve forgotten how tough even setting up an Anaconda environment is. The entire process felt like trying to remember how to ride a bike, except the bike is on fire, the road is made of error logs, and conda keeps yelling at me about environment conflicts.

    First hurdle? Figuring out whether I had Python installed. Spoiler: I did. But it was the Microsoft Store version, which apparently exists only to ruin lives and break python commands. So I uninstalled that, reinstalled the “real” version, then realized that broke all my previous associations. Small victories.

    Then came Anaconda. If you haven’t tried installing it recently, imagine installing something that simultaneously offers you a GUI (Navigator), a command line tool (conda), a virtual environment system, a notebook runner, and about four different broken ways to manage packages. It’s the Home Depot of Python tools — everything’s there, but god help you if you try to find a nail.

    Eventually, I got a virtual environment spun up. I called it statarbrs, short for “Statistical Arbitrage RuneScape”, because I like pretending this is serious. Installed pandas, numpy, requests, statsmodels, and of course, jupyter, which I still irrationally believe will make me smarter just by opening it.

    From there, I tried running some of my scripts through JupyterLab, only to remember that notebooks are a deeply cursed way to handle command-line arguments. (Nothing like debugging a --backfill flag in a notebook cell at 1AM.) So I switched over to VS Code — which, in fairness, has come a long way — only to spend another hour trying to convince it to recognize my conda environment like a stubborn child refusing to acknowledge bedtime.

    After manually browsing to the right interpreter path (because auto-detect absolutely did not work), I was finally able to run a simple fetch_prices.py script. And by “simple” I mean: it pulls 5-minute price ticks from the OSRS Wiki API, checks for duplicates, appends to a local CSV, and logs progress per item.

    It wrote zero rows.

    Turns out I had a malformed timestamp from a test run that silently caused the script to skip every single historical row. Of course. After some grunting, printing, and reverting to caveman-style debugging, I fixed that too.

    I’ve now got a functioning system that fetches both live and historical data, stores it locally, and (in theory) sets me up for seasonality analysis and backtesting. It’s running. It’s saving files. I have no idea how I got here.

    All I wanted was to build a statistical arbitrage model on fish.

    Anyways, I filled my frustration quota for the day and went back to the much more sophisticated world of real finance, where data is clean and you get tick-by-tick data, as opposed to the 5 minute bars you get (at best). Not an auspicious start to what I’m calling Zaros Capital (after one of the in-game gods of Runescape), stalling out at just pulling historical data and getting it to update a CSV in real time!

    Meanwhile, back in the real world, I’ve got some thoughts on autonomous vehicles and the impact on trucking, as well as what to invest in in a world where we’ve outsourced our brains and our labor to AGI and robotics respectively. So if you’re interested in that, stay tuned, I’ll probably get that developed over the next day or two. See you then!