Why Open Source a High Frequency Trader?

Why Open Source a High Frequency Trader?

I built a cryptocurrency trading framework in January, and open sourced it as ‘pytrader’ 2 weeks ago.  Among the wave of interest, there were a handful of cynics:

npx writes, on HN:

I can’t imagine why anyone would actually want to release a profitable trader. Isn’t this kind of a tautologically dumb thing to do? .. I just can’t see any motivation to make it profitable and then issue a pull request. Maybe I’m missing something?

hft-singularity, on github:

Thank you for open sourcing the project but.. lets be honest here. You only open sourced it because you couldn’t make it profitable and you wait for someone that will do it for you, but even if anyone will manage to do it using your code, why share it with you? You wouldn’t open source it, if it wasn’t profitable yourself. That’s why there is no other open sourced solution, that is profitable and never will be. Trust me i know a lot in this topic.

And most important point, profitable trading software while open sourced will become non-profitable when hundreds/thousands will start using it. Period. Every team that made profitable trading software will tell you that.

It’s really a fun toy project, but nothing more. Fees are not a problem at all, doesn’t matter if fee will go up or not it’s just another variable and proper algorithm will adapt to new reality and you will still make money.

I can tell you what you need for profitable trading software:

  1. Minimum millions of dollars in infrastructure.
  2. Minimum millions of dollars for software engineers.
  3. Millions of dollars for ML specialists, but not someone out from school, i am talking about people which names you can see often on published papers in the ML field. You know how much research is being done on trading software and not published? you would be amazed what kind of results those research give and how top trading algorithms look like. Unfortunately that’s all i can say because of NDA.

And then months of hard work of a world class team developing state of the art software that will NEVER be open sourced.

Good luck anyway!

Motivations in Open Source Software

These commenters posit an interesting question about human nature, and about motivations in open source software.  I can’t speak for others, but I started this project to learn about machine learning and also to make a profit.  I open sourced it to learn from others.

If someone gave you an half-written instruction manual and a toolkit that could turn an ordinary goose into a golden goose,

  1. Would you have a go at it?
  2. Would you share or hoard the golden eggs if you figured out the rest of the instructions?
  3. If you did share them, would the sum of the contributions compound and create more profit for everyone? Would the global markets for golden eggs come crashing down due to increased supply? And if so, how soon until that happens?

I do not presume to know how others would answer the above questions, but the undergraduate anthropology minor in me thinks that watching the ‘pull requests’ tab of the repo will yield some interesting clues.

Motivations in pyTrader

This project uniquely exemplifies a hodgepodge of competing motivations associated with open source software because:

  1. given the zero sum nature of the trading market pytraders may eventually be trading against one another.
  2. the stated purpose of pytrader is to make money, which is a lowest common denominator human desire.

What success looks like

I’ve been thinking a fair bit about the concerns raised and what it will take in order to make this system successful over time.  Heres what success looks like:

  1. traders gain alpha, and subsequently, can make a profit using pytrader.
  2. the greater the contributions to pytrader, the greater the alpha.
    • a. contributions to pytrader compound upon each other, creating greater alpha.
    • b. there is sufficient market cap & trading volume available such that pytrader contributors are not competing with one another for profit.
    • c. if pytraders do compete with each other, those who have made greater contributions will beat those have made lesser contributions.
  3. 1 & 2 are maintained over time.

Actors

Since open sourcing the repo, I’ve been chatting with people on the pytrader slack ( #23 ) about the development roadmap.

So far, I see the following actor archetypes:

  1. core contributor
  2. contributor – python, machine learning, or quant. has made PR with meaningful contributions to repo.
  3. potential contributor – same skills as contributor. potential to make meaningful contributions.
  4. trader — had enough coding experience and/or interest to run the repo, but not to make meaningful contributions.
  5. other — anything else

Balance

A key part of achieving success as defined above will be maintaining balance. Balance between

  • Public and private information
  • Incentives for value transfer between actors in the system

Given the zero sum nature of the trading market, the incentive structure of pytrader should be set up to avoid competing with one another.

Given the compounding nature of the collective contributions of pytrader, the incentive structure should be set up to encourage PRs back to the repository.

In Practice

This means that:

  1. code is public, maintained in the main pytrader fork.
  2. data is private, maintained by indivdual contributors and traders.
  3. some data may be made public such that it encourages compounding the value of this repository, such as prices, bid/ask spread, and (in the future) order books, social semantics.

In a way, this mirrors how some hedge funds are structures.  There are various teams with their own code-base and they get a cut of the incentive fee, if a shop is structured so that you’re covered during a bad year when others do well, you end up sharing code.

Perhaps public/private is too binary of a model for a “distributed autonomous hedge fund“. There are pockets of traders that have some incentive (whether theres shared funds, an agreement to share their best code, sharing cpu cycles, whatever), and I think that is a good middle ground

Early Progress

So far, the project has

  • 688 github stars
  • 75 forks
  • 49 slack team members
  • 30 pull requests by 6 different contributors
  • at least 600 CPU cores doing market analysis

I do not know whether this project will continue to make it’s contributors very wealthy or if interest will piddle out over time.  So far, I am compelled by the 30 pull requests (many of them significant value-adds) by those 6 different contributors.

Comments welcome on twitter.

Comments are closed.