Market making often requires placing and canceling a lot of orders. You have to buy and sell nearly simultaneously, so you need to move orders pretty often to beat other traders. But I would like to optimize my strategy, minimizing the number of orders placed while maximizing the total volume of deals. Otherwise I will pay for each unmatched order. Are there any well-known optimizations? I've invented several optimizations myself. For example, one technique is to ignore orders with volume less than certain amount. But I'm sure there are a lot of optimization techniques already invented by someone else and I just need to find them.

  • 1
    $\begingroup$ Hi javapowered, welcome to quant.SE and thank you for your question. $\endgroup$ – Tal Fishman Sep 4 '11 at 14:40
  • $\begingroup$ What do you mean by 'buy and sell simultaneously at the best price'? Are you talking about grid-trading? Or are you talking about broker arbitrage? What markets, specifically? $\endgroup$ – Mike Furlender Sep 4 '11 at 16:13
  • $\begingroup$ @Mike Furlender Sorry 'buy and sell simultaneously at the best price' is not quite right. I'm talking about classical market making en.wikipedia.org/wiki/Market_maker it's applicable to almost any market. The price of the market maker is not mandatory to be the best, but it tend to be one of the best, so market maker need to beat other traders to win a "deal" :) However other traders also move their orders as a result a lot of useless movement produced, like 100.01 100,02, 100,03 100,04 100,05 100,06 then back to 100,01 and again... $\endgroup$ – javapowered Sep 4 '11 at 16:24
  • $\begingroup$ Are you the market maker or one of the "other traders?" I also do not understand what you mean by "the best" price... do you simply mean "lowest spread?" $\endgroup$ – Mike Furlender Sep 4 '11 at 17:21
  • 1
    $\begingroup$ I just want to clarify some terms here. Spread trading generally refers to simultaneous trading in different but related names and/or contracts. Market making generally involves trading the same exact name and contract in an attempt to earn the bid-offer spread. They are 2 different strategies. $\endgroup$ – Tal Fishman Sep 5 '11 at 14:24

I don't know if you can really improve, the point of Market Making is that you don't know when you'll be executed.

It also depends a lot on the type of product you're trading, it's not the same business Market Making far from the money options (where you will never be executed but just offer a reference price and answer traders phone calls) and MM on Bonds/ETF/Futures....

You could : - Stop moving price if price moves too often without actual trades - Move the price only when the Mid moves significantly (refer to the Bid Price if you want to specify an Ask price) - Move the price only if a certain amount (say more than 1000 lots) is better priced than you

There is no magic, either you filter market moves and get less executions or you prefer making trade volume and lose margin by cancelled orders or prices too close to the mid. The closer you want to be to the mid the less margin you will have.

  • $\begingroup$ "Stop moving price if price moves too often without actual trades" - then likely my price will be beat by other trader. for example if I buy 1000 lots by 100.01, another trader immediately buys by 100.02... but thanks for these advices anyway, probably I will use them somehow $\endgroup$ – javapowered Sep 9 '11 at 19:05
  • $\begingroup$ @javapowered Frequent re-quoting with no participation may simply be indicative of a market state in which you cannot profitably participate with your models and/or current parameterisations (incl. spread), i.e. your expected value of a quote update, inclusive of costs, is negative. Simply identifying this fact (state) and avoiding losses can be useful. $\endgroup$ – afekz Dec 30 '15 at 6:21

It sounds like you're trying to filter your input event stream so as to reduce noise. By reducing noise you'll reduce the number of cancel/replace's you're doing and, hopefully, have a better order-to-fill ratio.

  • I would investigate algorithms from control theory, in particular dynamic linear models like Kalman. The problem with denoising is you want to do it without introducing an arbitrary lag in your input event stream.

  • In dealing with order book events you might want to consider how long an order has been present at a given level. This might carry with it an information advantage if that order was subsequently canceled.

  • In calculating fair price consider how you might dampen the movement of your perceived fair value by adding some stable dampening series.


Actually depends on the kind of market you are trying to make, if you are a authorized MM some markets/exchanges have special structure for market makers so they don't really pay for every quote that they send to the system, instead they pay a fixed amount of fee to have certain rights and responsibilities for a particular bin(set of instruments) of the market.

  • $\begingroup$ i am not authorized MM $\endgroup$ – javapowered Sep 9 '11 at 18:57

You can avoid cancel/replace using pegged orders. Depending on your model that could be very useful.

  • $\begingroup$ I would not recommend pegged orders, but it's better than nothing . Nasdaq implements this externally just like any other cancel/replace algo rather than inside the matching engine where it would perform better and make more sense $\endgroup$ – crow Jan 26 at 17:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.