This is a really cool project! But alas I couldn't use it as I'm not in the US, and I don't trade with Alpaca. And I feel like this plays into a negative trend I'm seeing.
The retail brokerage market right now is treading on similar 'mistakes' in institutional markets 15ish years ago. Proprietary APIs were prolific, and therefore increased switching costs and lock-in (looking at you, Reuters and Bloomberg).
On the one hand, retail brokers need to support popular programming languages and paradigms to gain traction. So, they are releasing http-based APIs, or popular language-specific libraries/bindings for their proprietary APIs. But, they are doing this instead of pushing well-publicised battle-tested standards such as FIX, that would normalise the playing field across brokers. So my gut feel is that they are banking on users coding against their APIs and having some lock-in effects. Notable exception is that any broker that supports cTrader will have a FIX API, because cTrader provides that for them.
The problem is: if I write a bunch of code to work against Alpaca, TD Ameritrade, or whoever, that code will likely need to be revisited for some other broker like Robinhood. Granted, market connectivity code _should_ be well abstracted from my model if I'm following good design principles. But at least with FIX, the core concepts, fields, and messages remain the same across most FIX endpoints (NOS, ExecRpt, etc), allowing for a more uniform code holistically.
BTW, I love working on this stuff and swapping notes with other people. Drop me a line (email in profile) if you want to talk anything related to FIX!
Whilst there will be differences, you can rely on a surprising amount being uniform. The general session/authentication flow and serialisation mechanisms will be largely the same. Or the use of standard fields ClOrdID, or OrderQty. Or the "general" meaning of the messages NewOrderSingle or ExecutionReport.
It's somewhat predictable where the differences are going to be: identifying securities (different codes, etc), expressing order types and algo parameters, and subtle differences to order lifecycles.
Again this is a gut feel, but I doubt that if you take 2 proprietary APIs, you'll get that level of uniformity.
Unambiguous, no transcription errors from an obnoxious PDF, none of FIX’s stupid design.
Nonetheless, it'd be great to see brokers in the retail space normalise toward a uniform API. Even if that is a standardised HTTP interface with good WS support for streaming data, or a standardised binary interface. My feel is that FIX is the closest thing we have now that would get us most of the way there, even for all its warts. But of course, I'd be equally keen on anything standardised.
> custom delimiters
Surely you mean custom _message_ delimiters, not field delimiters?
In any case I think it's a foolish endeavour to think that if a broker says "we conform to FIX4.4" to ever take that at face value. Agree that the conformance test always reveals the true extent of conformity.
But zooming out a little, despite these challenges, I'd say you're still in a better position than having N endpoints where 1 gives you a Java library with its own ridiculous threading model, another gives you a Python library that calls a HTTP endpoint (that you need to provide an OAuth token for), and yet another that only has a hosted C# interface. That's where we're headed towards.
I agree somewhat, but I think the protocol needed to come first. Can you honestly say that in its absence, multiple clients would be able to implement these behaviours in a uniform manner?
The fact that there's a concept of a "session" demarcated with LOGON/LOGOUT, sequence numbering, resend semantics, heartbeating - all this had to come from... somewhere.
Put another way: if you get 10 brokers developing their own REST/HTTP API's, what is the chance they'll normalise on a similar set of core concepts?
Oh, you need another week or two with the other broker? Why? We spent so much just to get the industry standard API.
Sorry I'm too jaded to appreciate sequence numbering and the industry standard logout message format that fix provides at the given time.
About your point on rest, I do acknowledge the difficulties you're mentioning, of every broker requiring different rest messages to do the same thing. I've come across brokers which accept single orders and grouping in different messages. The delay and errors it causes is insufferable.
The problem is, there has not been a body enforcing unity across brokers. Fix is a nice try, but it is left alone in the woods without any restrictions as to what brokers can or cannot alter. I would like this pointed out and heard of more and that's it.
The use case would be to have only one application to watch/place orders simultanously on 2-3(...multiple) broker accounts. To spread risk of losing funds in case a broker goes bankrupt (or whatever reason).
But I can't speak for Rust or Go. If there isn't one already, there really should be...
"...MetaTrader 4 (MT4) is the FIX application that BlackBull Markets uses."
Unfortunately I wasn’t allowed to open source it, and it’s now lost in the void after a takeover. :(
Good luck to you. It’s not an impossible project. :)
It's a shame that you couldn't open source it. If you're open to it, I'd appreciate any feedback, thoughts or code review you could offer. You can get to it (and my email) with the second link in my profile.
Edit: typo, and point about Java/C++ dominance.
Dutch source, do use a translator https://www.tijd.be/markten-live/nieuws/algemeen/nieuwe-eige....
"Is it easier for a pan European company to keep big US competition like Robin Hood and Ameritrade out?
Niehage: 'The companies you name are very badly positioned for Europe. Their economic model is based on two pillars. Firstly, they want to offer everything for free. But if you offer all services for free, you have to earn money with the capital in the investors' accounts. That is possible in the US, where you can still get 2% of interest. In Europe, with zero interest rates, that's very different.'
And the second pillar of their economic model?
Niehage: 'That's the high frequency traders. As far as I know, Robin Hood sells its customer orders to this kind of parties. They are prepared to pay good money for that. According to the European MiFID II-regulation, that is illegal. Those two examples show that the US and EU markets are totally different. That's why American brokers have difficulties breaking into the EU market.' "
They found a third way of financing themselves: just support one marketplace which kicks back some money to them on each trade, which they in turn earn from the spread between buy and sell prices.
I thought the US predecessors of this kind of broker (Robin Hood comes to my mind first) which is still pretty new in Europe would have basically the same business model - earning some money with each trade by scraping off a few cents (or a good bunch of cents for stocks with low liquidity) from the spread?
Freetrade, Trading212, both registered in the UK. (And I don't think 'transition period' would make a difference, but they're both years older than that.)
Freetrade are now charging £3 a month for ISAs (tax free wrapped accounts) so it might be free but it's not completely free.
Broker offerings here seem a few "paradigm shifts" behind the US. Zero commissions are unheard of last I checked. Also, if you approach some brokers here and ask for an API or a FIX endpoint, you're either told to go away, or you're effectively ushered into a luxurious room, poured some exquisite scotch, and asked about how many millions of AUD you're looking to trade per month. And _then_ told to go away.
Edit: disambiguate "Aus" :-)
> Broker offerings here seem a few "paradigm shifts"
> behind the US. Zero commissions are unheard of last
> I checked.
A key to understanding the US system is something
called Regulation National Market System (RegNMS). Loosely, if you are filling an order for someone, it must be at a price that is at least as good as the best price available on any US market at that time. [Anecdotally, if the NYSE receives an order, and there is a better price available for the same stock on Nasdaq at the same time, NYSE can't fill it at their inferior price.]
This creates a hyper-competitive single market. At any one time, you can know the bid/ask spread for any stock, nationally. And, it's a tight spread.
Market makers compete here. But a market maker would prefer to interact with retail orders. Because what a typical retail participant cares about is getting an immediate execution at the best price currently in the market, in order to make a long-term investment.
So a market sprung up: market-makers pay brokers to send these benign orders to them directly, without going through the public market. The market maker fills these order at a price that satisfies RegNMS. [Some of them might even distinguish themselves by giving the consumer a better price than they would have got on the public market. Your broker might send you a report with your trade saying how much "price improvement" you got compared to what you would have got at the same time on the public market.]
The reason the trade is "zero commission" is because the market maker is paying your broker for the privilege of interacting with you directly, because you don't have a view on where the market is going to be in five seconds' time.
Australia has not developed anything equivalent to RegNMS. Without that, there is no foundation for the zero-commission trades (there is no national best price to protect consumers with). In Australia, the typical situation is retail orders being sent directly to the book on the ASX (a pseudo-monopoly exchange), where they are directly interacting with the most sophisticated houses.
If you google, you can find an ASIC paper trumpeting that Payment for Order Flow has been banned. In my view, the real story is a lack of innovation by Australia's regulators.
I lived on the JVM for quite some time (and still do), and I wanted to explore other ecosystems out of sheer curiosity. Got to playing with Lisp/SBCL, some initial tests showed it was pretty quick, and was impressed that I could disassemble functions in the REPL and iterate rapidly. Then a while later... I noticed there wasn't a FIX library at around the same time I was exploring creating my own trading models.
So I can't say there was a lot of analysis across the different Lisps, etc. Had the coin flipped a little differently a while back this might have been in Racket. Also the choice of language in the book Professional Automated Trading did influence me somewhat.
It's one of the few books (perhaps the only one I've found) that approaches this subject matter from the perspective of an engineer wanting to architect their own system from the ground up, and potentially work for themselves or in a firm. But, going in, you should know that it focusses less on trading techniques and more on software architecture. What data structures you might use, and one potential approach that's laid out in the book.
Whilst some areas in the book are light (for example, the performance section), I'd recommend it if you're interested in ground-up building a trading system. If you work in the space already, you'll know the parts that are misaligned with majority of systems out there (choice of language being one). If you don't, and are looking to enter the space, it'll increase familiarity with core concepts (for instance, before I read this book, I had no distinction between "model" and "algo").
It's also refreshing that it stands out from the pack of books that aim to make you zillions of dollars just by using "these 10 key trading secrets!".
I used it a bit for fun, seemed legit and worked fine.
There are plenty of successful quantitative algorithms that are in use by non HFT firms
> so basically anything with a proprietary API
If you’re not a direct market participant, colocated in the exchange, you’re not in a position to be talking about speed at all. Also most exchanges optimising for speed are not using FIX.
> is solely for amateurs
You’re not necessarily an amateur, you’re just leaving money on the table for someone else as you’ve not optimised that area of your trading infra yet.
Is there a way to get access to the order books on Nasdaq or other exchanges?
I'm working on a script that can run stock trading algorithms (and hopefully see some profit).
My first trading experience was with crypto on GDAX (now Coinbase Pro). The order book on GDAX is basically available via their API. I've been looking at various stock trading APIs (Alpaca looks interesting as well) and it seems like the only thing that's available are broker APIs that don't share the order book.
Is the order book on Nasdaq and other exchanges unavailable to regular folks like me? Is it hidden, available to institutions only, or to some sort of registered brokers?
Having first dealt with GDAX and now looking at stocks, it all seems so ambiguous and hidden behind 3rd parties, unclear order execution, etc. (not that gdax was perfect - it has its issues), so I'm just generally confused as to how things work.
 - http://www.nasdaqtrader.com/Trader.aspx?id=DPUSdata
There’s a process where you certify that you are a non-professional trader and they give you access to the data feeds for a reasonable price.
I’m working on a similar project, in case you’re interested in swapping notes (contact info in profile)
The code is just Go, using the cobra library.
I know this because I wrote an app that connects to Alpaca accounts (as well as other brokerages) to help people build their own custom index funds . It only took a few weeks to build our Alpaca integration, whereas other brokerages often take months/years just to get access to their APIs.
You specify pies of funds with weights.
They automatically allocate funds and dividends to the underweight entries, and have 1 click for rebalancing.
It's not made for single-real time trading, there's one trading window each day.
Sure beats the spreadsheet and whole-share issues when I did it for free with Robinhood.
I feel like their UX priorities are screwed up big time. But as a platform, they're my favorite as far as concept/functionality.
They list several ways in which they "will" make money. My (possibly unkind) reading is that currently they're burning investor money.
Now robin hood _did_ get fined for "not perform[ing] systematic best execution reviews of several order types". If that's what you were referring to then fine. But if your complaint is just about selling order flow you should better understand what that means. Maybe start with patio11's How Brokerages Make Money.
Or through what mechanism do commissioned trades get lower prices?
Generating and visualizing alpha with Vectorspace AI datasets and Canvas https://www.elastic.co/blog/generating-and-visualizing-alpha...
Generating Alpha from Information Arbitrage in the Financial Markets with NLP Datasets: 水涨船高
algo guys take
Using them for anything beyond entertainment budget is very scary - you may incur substantial tax liability if e.g. they ever go out of business or you choose to use a different brokerage.
Any insight here? Am I missing something? Is there any way to transfer holdings out without incurring the cap gains?
long story short, they all have to implement a system to move out and in (well they all want your assets so this part is obvious).
Same here, if I understood the grandparent they were saying you lose 0.04% on every trade (from spread) and "in a year" that is 10% (250 trades?).
If you have a strategy that has expected returns of x bips per trade then you make an expected x-4 and with leverage 4 * (x - 4). Both have the same "sign", so if x-4 is expected positive, leverage just makes it higher risk-reward.
In fact with leverage you also have to pay interest on the loan, which seems to be at least ~18 bips (or 3/4 of that since the returns are on 4 * cash and interest is on 3 * cash) for a single day loan (far exceeding the "spread cost"):
It seems the only way leverage would help is if there were fixed costs to trading (which I assume there are but the GP does not mention).
Let's say you have have a strategy that has 7% return and 3% volatility. That's a pretty fucking amazing strategy. So you lever up to 4x and now you have 28% return and 12% vol. With your spread tax, you now have 18% return and 12% vol. Using their 2x leverage, you'll have a 14% and a 6% vol. So while your Sharpe ratio will be lower, your max return will be higher. And since you can't eat risk-adjusted returns, the tradeoff could very well be worth it.
Freetrade, 212 Trading and soon Robinhood offer commission free traedes in the UK but no API
Different market and laws.
High-frequency trading firms aren't in the business of stocks, they are in the business of building the fastest tech on the planet to connect buyers with sellers, therefore making markets more efficient.
Interesting timing :-)
Your order gets routed, delayed, placed differently, and while you may not immediately see it, your trades are getting a different result than if you explicitly paid a brokerage who charges a commission on it.
Learn about "payment for order flow".
First paying a commission is not correlated with participation in order flow payment. Commissioned brokers also get paid for order flow.
Second if you interact with an internalizer your order will execute faster not slower. And you will usually be getting better price execution than if you try to route manually.
Third all brokerages have routing tiers that involve self matching/dark pools/contractual discounts etc. Most of them will let you pay for the privilege of using the same router the non-premium orders go through.
At the end of the day if your trade is that sensitive to execution you are not a retail customer and should not be using a retail brokerage.
Yes...the average retail customer submitting a market order will generally get a better fill with PFOF. This is what most people don't usually mention when talking about those terrible high-frequency trading firms.
E.g. if a stock is trading at 10.00x10.10 and I submit a market buy via Robinhood. Citadel or someone else is going to pick that up and sell it to me for, probably, 10.08 or 10.09. Not the 10.10 I would've paid on the open market hitting the offer. It's in fact illegal for me to get a worse (higher) fill than 10.10.
If you mean brokerages that advertise no fees to trade, they make money by loaning the cash in customers' accounts.
Which to me begs the question: do you actually own the shares when you buy them with those brokers? What happens if supply is limited and the loaned shares actually have to be sold?
*edit: Apart from that: is that actually an event covered by SIPC? Essentially it is a bad investment decision. You agreed to lend out those shares so you have to bear the consequences.
And I'm also interested in the answers to your questions :)
>Trades, quotes and minute bars are supported.
IBS does live tick data for around $10 a month, smaller than 1sec. I hate IBS, but I hate paying $200 a month more, especially when I'm backtesting most months.
I feel like a clueless person who lives in the year 2004, wondering why internet services are offered for free.
Interest, payment for order flow, and securities lending (but mostly interest)
As mentioned, Sharesies plan to allow US market access: https://app.sharesies.nz/us-equities-register They do seem to have a private API at least: https://app.sharesies.nz/api/fund/list
https://www.revolut.com/en-NZ have plans to expand to NZ, I don't know much about their services though.
Tradier Brokerage (https://brokerage.tradier.com) can open individual accounts for New Zealand residents and API access comes standard with every account (including market data). You can place orders for US-based equities and options and we offer competitive pricing models for all traders.
If you have any questions, you can email email@example.com or call 980-272-3880.
Full disclosure, I work at Tradier.