Do algorithmic traders make money from short-term or long-term gains?
Algorithmic trading essentially banks on the fact that a price will fluctuate in tiny amounts over short periods of time, meaning the volatility is high in that given time frame. As the time frame increases the efficiency of algorithmic trading decreases and proper investment strategies such as due diligence, stock screening, and technical analysis become the more efficient methods.  Algorithms become less effective as the time frame increases due to the smoothing effect of volatility over time. Writing an algorithm that could predict future long-term prices would be an impossible feat because as the time frame is scaled up there are far less price fluctuations and trends (volatility smooths out) and so there is little to no benchmark for the formulas.  An algorithm simply wouldn't make sense for a long-term position. A computer can't predict, say, the next quarter, an ousted CEO, a buyout, or anything else that could effect the price of the security, never mind the psychology behind it all. Vice versa, researching a company's fundamentals just to bank on a 0.25% daily swing would not be efficient. Tax advantages or not, it is the most efficient methods that are preferred for a given time-scale of trading.
I'm talking about day trading here. Automated day trading never worked for me. But I will also admit I am terrible at automated day trading. I'm sorry if the premise of my post sounds off. I know it sounds like I'm being an idiot by not going the automated route, but it works for me and that's why I'm going to stick with my own techniques. Why change it if it's working? Candlesticks and TA are a relic of pre-computer trading, period. Market makers use sophisticated algorithms not for trading, but manipulations. "It's a matter of social policy. The government wants people to make long term investments because that would lead to other long-term government goals: employment, manufacturing, economical growth in general. While speculative investments and day-trading are not in any way discouraged, investments that contribute to the economy as a whole and not just the investor are encouraged by the lower tax rates on the profits. While some people consider it to be a ""fig leaf"", I consider these people to be populists and dishonest. Claiming that long term social goals are somehow bad is hypocrisy. Claiming that short-term trading contributes to the economy as a whole is a plain lie." "Yes, Interactive Brokers is a good source for live data feeds and they have an API which is used to programmatically access the feeds, you will have to pay for data feeds from the individual data sources though.  The stock exchanges have a very high price for their data and this has stifled innovation in the financial sector for several decades in the united states. But at the same time, it has inflated the value and mystique of ""quants"" doing simple algorithms ""that execute within milliseconds"" for banks and funds.  Also RIZM has live feeds, it is a younger service than other exchanges but helps people tap into any online broker's feeds and let you trade your custom algorithms that way, that is their goal." I think it's because there are people who build entire wealth-gain strategies around certain conditions.  When those conditions change, their mechanism of gaining wealth is threatened and they may take a short term loss as they transform their holdings to a new strategy. Machine learning is definitely applied to trading, but I have not tried it myself. For now I've been focused on figuring out the platforms and how they work; I have not been trying out other strategies besides a SMAC strategy. The most machine learning-like application I've attempted was cross-validation by walk-forward analysis (I'm publishing that post on Monday).  I know nothing about TensorFlow other than it's used for deep learning and that it doesn't work on Windows and thus would not work on my more powerful gaming computer, and like I said above, I have not been exploring machine learning right now. Neural networks are on my radar, on the list of things I need to read, but there was a topic on r/algotrading recently where most users said that deep learning has not demonstrated better performance than more traditional ML techniques and looks like a fad. I want to convince myself of that first, though.  I'm glad you enjoyed the post and my site! Thank you! "....causes loses [sic] to others. Someone sells you a stock.  The seller receives cash.  You receive a stock certificate.  This doesn't imply a loss by either party especially if the seller sold the stock for more than his purchase price. A day trading robot can make money off of the price changes of a stock only if there are buyers and sellers of the stock at certain prices.  There are always two parties in any stock transaction: a buyer and a seller.  The day trading robot can make money off of an investment for 20 years and you could still make money if the investment goes up over the 20 years.  The day trading robot doesn't ""rob"" you of any profit." "Of course, which is why you need to have a scoring function / utility function for the ""filters"", i.e. Are you going to value it by rate of accuracy hor by a metric where wins = +2, losses = -1, such that it uses a criteria like that to decide whether or not a filter adds value, (some even use a compound effect i.e. wins = 2+e^(1+w) where w is the consecutive wins).  A metric like the above would capture the trade off between predictive power and profit. Also some traders watch their Max DD very carefully so they may be very risk averse." This has never really adequately explained it for me, and I've tried reading up on it all over the place. For a long time I thought that in a trade, the market maker pockets the spread *for that trade*, but that's not the case.  The only sensible explanation I've found (which I'm not going to give in full...) is that the market maker will provide liquidity by buying and selling trades they have no actual view on (short or long), and if the spread is higher, that contributes directly to the amount they make over time when they open and close positions they've made.  It would be great to see a single definitive example somewhere that shows how a market maker makes money. "Algorithmic trading doesn't necessarily require live feeds. It is a very generic term describing trading based on the decisions made by a machine and not a person. One very prominent type of algo-trading is ""high frequency trading"". For HFT to be effective, not only do you need live feeds (which are provided by the exchanges electronically), you need them before others get them. That's why HFT traders put their machines as close as possible (physically) to the exchange data centers, sometimes even renting racks at the same datacenters from the exchanges themselves." "In US public stock markets there is no difference between the actions individual retail traders are ""permitted"" to take and the actions institutional/corporate traders are ""permitted"" to take.  The only difference is the cost of those actions.  For example, if you become a Registered Market Maker on, say, the BATS stock exchange, you'll get some amazing rebates and reduced transaction prices; however, in order to qualify for Registered Market Maker status you have to maintain constant orders in the book for hundreds of equities at significant volumes.  An individual retail trader is certainly permitted to do that, but it's probably too expensive. Algorithmic trading is not the same as automated trading (algorithmic trading can be non-automated, and automated trading can be non-algorithmic), and both can be anywhere from low- to high-frequency.  A low-frequency automated strategy is essentially indistinguishable from a person clicking their mouse several times per day, so: no, from a legal or regulatory perspective there is no special procedure an individual retail trader has to follow before s/he can automate a trading strategy.  (Your broker, on the other hand, may have all sorts of hoops for you to jump through in order to use their automation platform.) Last (but certainly not least) you will almost certainly lose money hand over fist attempting bid-ask scalping as an individual retail trader, whether your approach is algorithmic or not, automated or not.  Why?  Because the only way to succeed at bid-ask scalping is to (a) always be at/near the front of the queue when a price change occurs in your favor, and (b) always cancel your resting orders before they are executed when a price change occurs against you.  Unless your algorithms are smarter than every other algorithm in the industry, an individual retail trader operating through a broker's trading platform cannot react quickly enough to succeed at either of those.  You would have to eschew the broker and buy direct market access to even have a chance, and that's the point at which you're no longer a retail trader. Good luck!" "If i do this, I would assume I have an equal probability to make a profit or a loss. The ""random walk""/EMH theory that you are assuming is debatable. Among many arguments against EMH, one of the more relevant ones is that there are actually winning trading strategies (e.g. momentum models in trending markets) which invalidates EMH.  Can I also assume that probabilistically speaking, a trader cannot do worst than random? Say, if I had to guess the roll of a dice, my chance of being correct can't be less than 16.667%. It's only true if the market is truly an independent stochastic process. As mentioned above, there are empirical evidences suggesting that it's not.  is it right to say then that it's equally difficult to purposely make a loss then it is to purposely make a profit?  The ability to profit is more than just being able to make a right call on which direction the market will be going. Even beginners can have a >50% chance of getting on the right side of the trades. It's the position management that kills most of the PnL." In the short term the market is a popularity contest In the short run which in value investing time can extend even to many years, an equity is subject to the vicissitudes of the whims by every scale of panic and elation. This can be seen by examining the daily chart of any large cap equity in the US.  Even such large holdings can be affected by any set of fear and greed in the market and in the subset of traders trading the equity. Quantitatively, this statement means that equities experience high variance in the short rurn. in the long term [the stock market] is a weighing machine In the long run which in value investing time can extend to even multiple decades, an equity is more or less subject only to the variance of the underlying value. This can be seen by examining the annual chart of even the smallest cap equities over decades.  An equity over such time periods is almost exclusively affected by its changes in value. Quantitatively, this statement means that equities experience low variance in the long run. "Largely, because stock markets are efficient markets, at least mostly if not entirely; while the efficient market hypothesis is not necessarily 100% correct, for the majority of traders it's unlikely that you could (on the long term) find significant market inefficiencies with the tools available to an individual of normal wealth (say, < $500k). That's what frequent trading intends to do: find market inefficiencies.  If the market is efficient, then a stock is priced exactly at what it should be worth, based on risk and future returns.  If it is inefficient, then you can make more money trading on that inefficiency versus simply holding it long.  But in stating that a stock is inefficient, you are stating that you know something the rest of the market doesn't - or some condition is different for you than the other million or so people in the market.  That's including a lot of folks who do this for a living, and have very expensive modelling software (and hardware to run it on).  I like to think that I'm smarter than the far majority of people, but I'm probably not the smartest guy in the room, and I certainly don't have that kind of equipment - especially with high frequency trading nowadays. As such, it's certainly possible to make a bit of money as a trader versus as a long-term investor, but on the whole it's similar to playing poker for a living.  If you're smarter than most of the people in the room, you might be able to make a bit of money, but the overhead - in the case of poker, the money the house charges for the game, in the case of stocks, the exchange fees and broker commissions - means that it's a losing game for the group as a whole, and not very many people can actually make money.  Add to that the computer-based trading - so imagine a poker game where four of the eight players are computer models that are really good (and actively maintained by very smart traders) and you can see where it gets to be very difficult to trade at a profit (versus long term investments, which take advantage of the growth in value in the company). Finally, the risk because of leverage and option trading (which is necessary to really take advantage of inefficiencies) makes it not only hard to make a profit, but easy to lose everything.  Again to the poker analogy, the guys I've known playing poker for a living do it by playing 10-20 games at once - because one game isn't efficient enough, you wouldn't make enough money.  In poker, you can do that fairly safely, especially in limit games; but in the market, if you're leveraging your money you risk losing a lot.  Every action you take to make it ""safer"" removes some of your profit." "What do I mean by infrastructure? Well, if you're doing algorithmic trading, you have to have something monitoring data and making decisions on its own, presumably. How do you set that up? There are many ways, and some are better than others.  First is a problem of scale. If you're a newbie starting out with some small set of equity tick data, perhaps just trades for instance, you can whip together something that can handle that pretty easily. Check out http://www.marketdatapeaks.com/ though. That's your messaging rates you have to deal with once you go full data feeds direct from all the exchanges. 6.65 million messages/events per second. That's a lot. And if you fall behind, you lose your lunch.  Building a robust system that allows you to easily backtest and deploy strategies is crucial as well. The speed at which you're able to conduct the backtest matters a lot. Doing that rapidly, and accurately is not easy. For a broad market-data handling algo design (and now, clearly, for very specific things you can design one that'll handle stuff better for that one corner case, but this is for general algo trading), optimally you have some sort of setup where you have a:  [feed handlers] -&gt; [tickerplant] -&gt; [mkt data subscribers/CEP] -&gt; [order management system] -&gt; [broker]   in this setup you have feed handlers that are taking the raw exchange feeds and pushing them to a consolidated tickerplant, where CEP subscribers can come through and sub to the data they want (perhaps I just want ES futures on one, and only want to arb CMCSA and CMCSK on another -- you dont want each CEP subscriber getting your full feed for all tickers all the time, its a waste). so more or less, each independent strategy is its own subscriber to the tickerplant, taking whatever data it wants and only that data (could be ""give me all the trades and quotes for all nasdaq stocks, but not book depth"" for instance).  your CEP does whatever maths it has to do to figure out trading decisions, and when it does, it sends it to your order management system which does your risk checks, etc (""do you have enough money to place this trade?"" ""do you already have a position in this?"" ""are you trading against yourself?"" ... million other things). your OMS knows how to talk to your broker/directly to the exchange depending on your setup. Assuming all your risk checks pass, off the order goes to the exchange, and it deals with the fill msgs, etc.  Now, as far as speed is concerned - try to do all of this at 6.5 million events/second. It's hard. Some strats/cep subscribers will run faster than others, some are slower, some need to keep a full book to work while some work on just trades. Your OMS depending on if youre using only market data sources may need to keep its own book to place orders on behalf of your subscribers if they lack information about various markets (think all the twitter trading bots these days for instance), etc.  If you look back at the above setup as well, you'll notice some interesting things. [tickerplant] -&gt; [cep subscriber] portion can stay the same for live trading or backtesting. This is huge. The only thing that changes here for backtesting is that if you're trying to backtest, you can take historical data (query it out of your hopefully column-store database) and push it into your tickerplant rather than having it come from a live feed through the feed handler. Your tickerplant and cep subscriber will never know the difference, so you can use the same exact code for backtesting as you can for live. On the other end, you obviously cant send historical orders to your live broker, so you need to code a simulated OMS that does the backtest simulation (another huge piece of software to code that is hard to do well). But, for backtesting, your setup is staying largely the same except those two end pieces. This means that testing/deving/deploying strats can be pretty rapid, and uses the same code base for live and historical, which helps you eliminate bugs and have to code everything twice.  Backtesting design: [historical mkt data db] -&gt; [tickerplant] -&gt; [mkt data subscribers/CEP] -&gt; [order management system simulator/backtester]  These are just a few of the many problems that you hit when trying to dev good infra. There are like a million more. Point was simply, it's complicated. And C++ is a good lang. I use a wide variety of languages depending on exactly whats going on and how fast the code needs to be. With a proper tickerplant design, youre using some ipc protocol so a subscriber can be coded in any language. Check out http://www.zeromq.org/ -- thats an excellent piece of software to use to make a tickerplant out of, think they even have a design for one in the docs if I recall. With that, your CEP subscribers can be in any language - perhaps pure C if you need the speed, perhaps .NET or Java if you dont (check out http://esper.codehaus.org/ for a Java implement of a CEP subscriber, nEsper for the C# port of that I believe). But I use C, C++, C#, python, R, x86 asm for a few very minor things, and a lang or two I can't mention here."