We are not unique in our choice to use Clojure. Please check out a list of similar pieces at the bottom of this article.
Our decision to go with Clojure happened by accident. Unlike most companies that use a niche technology, the founders had never even heard of Clojure before, much less had any experience with it. While only time will tell if this choice was truly a good one, so far the benefits have been greater than we expected and the cons (heh) have been smaller.
On the backend side we care more about accuracy than raw speed (~100ms per backtest is good enough for us). For this reason, we place heavy emphasis on unit testing to make sure our backtesting engine doesn't have the same issues as bt. Pure functions are incredibly easy to unit test. We rarely have to mock anything and there's no boilerplate.
Clojure effortlessly straddles both backend and frontend. Using a single language would allow our engineers to flow between the two functions as needed, eliminating unnecessary overhead.
Our biggest risk was, and is, hiring but we concluded that companies at our stage should focus on minimizing false positives over reducing false negatives.
Around July 2020, we decided to take the plunge.
- Experienced engineers with a love of functional programming will come to you! It turns out, people want to spend most of their time doing something they enjoy 🙂
- Clojure engineers are 5-10x more productive so a tiny team of 2 is at least equivalent to 10!
- Clojure enthusiasts are willing to walk off the beaten path. Most did not choose Clojure for economic reasons. They genuinely enjoy programming and expanding their horizons.
- Paul Graham's Beating the Averages (endorsing Common Lisp, which he has since updated to Clojure in this tweet)
- "Uncle Bob" Martin's Why Clojure
- How We Built Whimsical
- Working with Clojure at Nubank
- State of Clojure 2021, which surveys Clojure users and aggregates their reasons for picking the language
If you read the above articles you'll notice the following patterns:
- An emphasis on simplicity, which means your codebase is easy to learn and easy to remember.
- Concise code without sacrificing readability, which means it's easier to learn and maintain.
- Consistent syntax, which - once again - means it's easy to learn.
- Did I already mention easy to learn?
- Powerful. In fact, many existing languages and frameworks are still trying to incorporate features already in Lisp/Clojure.
Investing in securities involves risks, including the risk of loss, including principal. Composer Technologies Inc., is an SEC Registered RIA. The SEC has not approved this message.
Certain information contained in here has been obtained from third-party sources. While taken from sources believed to be reliable, Composer has not independently verified such information and makes no representations about the accuracy of the information or its appropriateness for a given situation. In addition, this content may include third-party advertisements; Composer has not reviewed such advertisements and does not endorse any advertising content contained therein.
This content is provided for informational purposes only, as it was prepared without regard to any specific objectives, or financial circumstances, and should not be relied upon as legal, business, investment, or tax advice. You should consult your own advisers as to those matters. References to any securities or digital assets are for illustrative purposes only and do not constitute an investment recommendation or offer to provide investment advisory services. Furthermore, this content is not intended as a recommendation to purchase or sell any security and performance of certain hypothetical scenarios described herein is not necessarily indicative of actual results. Any investments referred to, or described are not representative of all investments in strategies managed by Composer, and there can be no assurance that the investments will be profitable or that other investments made in the future will have similar characteristics or results.
Charts and graphs provided within are for informational purposes solely and should not be relied upon when making any investment decision. Past performance is not indicative of future results. The content speaks only as of the date indicated. Any projections, estimates, forecasts, targets, prospects, and/or opinions expressed in these materials are subject to change without notice and may differ or be contrary to opinions expressed by others. Please see Composer's Legal Page for additional important information.
With any investment, your capital is at risk. The value of your portfolio with Composer can go down as well as up. Past performance is no guarantee of future results.