Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

partial fill problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    partial fill problem

    I have a problem and I am not sure if it this behavior is to be expected or if it is due to an error in my strategy:

    Almost all stock trades are split up into partial fills/trades, 2 or more, mostly a one digit number like 1,2 or 4 shares and then the rest of the shares.
    Since these orders are market orders, there should be no partial "trades" at all! (several executions or fills OK, but the Number of trades has to be only be one, since it is ONE market order = 1 trade, not many!)

    Is there a way to suppress this behavior ? If I look at the account performance and see 500 trades instead of 100 - how am I supposed to calculate the true order/trade costs to verify the profitability... In backtest with historical data it works "correctly".

    It makes any analysis of a realtime simulation worthless right now, I hope it has only to do with my coding... ?

    #2
    Hello Azuul,

    This is available as a simulator setting. Click Tools > Options, then simulator tab. Uncheck Enforce Partial fills.
    Ryan M.NinjaTrader Customer Service

    Comment


      #3
      Thank you, I read in help about that topic, but I have NOT checked that option, it is /was unchecked and I have the described behavior anyways!

      Comment


        #4
        Do you get better results when checking Enforce Immediate fills?

        Enforce partial fills
        Enables or disables the forcing of partial fills on each order. If enabled, orders will always get filled with partial fills. When disabled orders are filled completely or partially depending on trade volume.

        Enforce immediate fills
        Enables or disables limit orders to fill immediately instead of using NinjaTrader advanced simulation fill engine
        Ryan M.NinjaTrader Customer Service

        Comment


          #5
          Originally posted by NinjaTrader_RyanM View Post
          Do you get better results when checking Enforce Immediate fills?

          Enforce partial fills
          Enables or disables the forcing of partial fills on each order. If enabled, orders will always get filled with partial fills. When disabled orders are filled completely or partially depending on trade volume.

          Enforce immediate fills
          Enables or disables limit orders to fill immediately instead of using NinjaTrader advanced simulation fill engine
          My trade Volume is rather low and tradevolume of the stock very high. My tradesize does not seem to have an influence - over half the trades NT "simulates" a seemingly random 1 - digit numbers of shares + rest of my order (e.g. 994 + 5 +1 ) for a market order of 1000. Or e.g. 6+100+94 for a market order of 200. This is erroneously counted as 3 "trades" in the Trades tab. (commission is normally paid per executed order not per partial fill)

          Do I need to stop / start strategy or is it enough to just check the enforce immediate fills ? I doubt it will work for market orders, since it is explicitely for "limit orders". I will try nevertheless.

          Due to this issue I have about 5-6 times more trades indicated than I really have, rendering all statistics +cost calculations useless. Wondering if other people have the same problem when trying to simulate live stock trades.
          Last edited by azuul; 11-03-2010, 02:05 PM.

          Comment


            #6
            Unfortunately these are the only settings you can set in this area. The simulator will always look at volume to determine fill executions. You might consider scaling back the quantity by a factor of 10, to improve chances of getting all filled at once. Then multiply your performance results by 10.
            Ryan M.NinjaTrader Customer Service

            Comment


              #7
              If this behavior is always the case, I suggest you change it or have at least an option to switch it off completely - in my eyes it is a major problem! What is your definition of a Trade?

              One Market Order can never be more than one trade in any case, unless it triggers a volatility interruption. That means there has to be a distinction between number of filled orders (=trades?) and executions per trade(number of partial fills per trade).
              It works with historical data. One order is one trade.

              You needed to introduce maybe something like Executed Orders instead of Trades for the statistical calculations.
              In any case - if it stays as it is, then the statistics are simply wrong and useless as soon as you trade live or simulate with live data. No trader wants to know how many partial fills you had that day and how those partial fills randomly change your performance figures.

              Number of Executed Orders is important. And this information is totally lost in your statistics? (I always thought a trade is an executed order???? yes / no?) How could this be after such a long time of development... I still think it must be an error in my code...

              scaling down might help, but even small sizes like 10 or 20 will get partial fills eventually. My tradesize is calculated by tradevolume, so for expensive stocks things become problematic in relation to some others, since I cannot trade 0.1 shares.

              I need a solution for this behavior.

              Comment


                #8
                azuul, thanks for the input and suggestions - with which datafeed / broker are you testing here? Unfortunately we could not get into details how the simulation engine would internally work, however we believe getting a feeling how much partials you would get is an advantage rather then a disadvantage.

                Comment


                  #9
                  Hello Bertrand ,

                  I am using e-signal, not sure if that makes a difference. I realized that in the US market data for bid and ask is often shown as a fraction of the true tradeable volume. E.g. if 100 is displayed on aks side it can mean at least 1000 or 10.000 or 100.000. This might contribute/worsen the problem.

                  I agree getting a feeling for partial fills and a realistic average price is a good thing, but not when each partial fill is considered one extra trade. In that case the cost of the extra trades would outweigh the advantages of a slightly changed avg. price. (one can use slippage to adjust that anyways)

                  I am getting 2-6 partial fills = 2-6 extra trades!!!! for a heavily traded stock, e.g. Dow30 when I try to buy or sell 1000 market. Highly unrealistic. I would appreciate if I had an option to make NT consider one executed order as ONE trade, so I can use the trade statistics for analysis. (which i cannot right now)

                  Besides that, I imagine that blowing up the logs / trace and database with that partial fills by factor 2-7 in my case will slow down NT considerably faster for no real informative gain.

                  Slippage could do this much better - (or just calculate profit per trade and subtract 2 cents ) - but if NT shows me 1200 trades (partially filled ) instead of 200 (true trades) - things look different.... I cannot even do my own calculations anymore.

                  regards
                  Last edited by azuul; 11-04-2010, 05:11 AM.

                  Comment


                    #10
                    Hello azuul,

                    I am using e-signal, not sure if that makes a difference. I realized that in the US market data for bid and ask is often shown as a fraction of the true tradeable volume. E.g. if 100 is displayed on aks side it can mean at least 1000 or 10.000 or 100.000. This might contribute/worsen the problem.
                    This most likely explains why you are getting these results. It looks at the current real time bid/ask volume and these values with eSignal are < 1000 for most all the stocks. There was only one (BAC) that resulted in no partial fills.
                    Ryan M.NinjaTrader Customer Service

                    Comment


                      #11
                      Hello Ryan,

                      I tried downsizing my ordersize by factor 20 - resulting in mostly 2 digit trade sizes - and still I am getting 2-3 Trades per executed Order. Even if I downsized my orders to numbers like 5 shares I would very likely still get 2 and more trades per Order.

                      Since you are aware of this issue now, I hope you will provide a fix or an option in NT application to solve the problem.

                      Comment

                      Latest Posts

                      Collapse

                      Topics Statistics Last Post
                      Started by Geovanny Suaza, 02-11-2026, 06:32 PM
                      0 responses
                      598 views
                      0 likes
                      Last Post Geovanny Suaza  
                      Started by Geovanny Suaza, 02-11-2026, 05:51 PM
                      0 responses
                      343 views
                      1 like
                      Last Post Geovanny Suaza  
                      Started by Mindset, 02-09-2026, 11:44 AM
                      0 responses
                      103 views
                      0 likes
                      Last Post Mindset
                      by Mindset
                       
                      Started by Geovanny Suaza, 02-02-2026, 12:30 PM
                      0 responses
                      556 views
                      1 like
                      Last Post Geovanny Suaza  
                      Started by RFrosty, 01-28-2026, 06:49 PM
                      0 responses
                      555 views
                      1 like
                      Last Post RFrosty
                      by RFrosty
                       
                      Working...
                      X