looks like there are some conflicting opinion on curve fitting, but in the end i think the way i modified it seems ok. Whether it is actually called curve fitting or not, doesnt really matter.
Mike, i dont mind sharing details. The system and its signals are generated from point figure charting technicals (support/resistance etc..). I like point-figure because i can take tick data(the most granular datafeed) yet the actual signal generation is based of a much higher level data. This way i can mimic production as closely as possible in term of fast volatile moves / slippage.
The bad part is there are no existing pf backtesting system available, so the whole thing was built from scratch using java - real time pf engine, order/position management module, datafeed module, blackbox, etc..
each entry involves 3*X contract at market, 3*X stop loss, and 3*X limit. As either stoploss or limit is hit, the other side will get canceled. I think IB actually has a order entry for this (dont remember the name) to actually make it even simpler in production.
About 15 days a month have trading going on that averages 1-2 entries. So that's about 30 trades a month?
The profit/loss are above $150 per entry. It's not one of those systems that make tons trade scalping pennies.
Well there is no software, everything is custom coded by myself. The backtesting is just a while loop, each iteration reads 1 es tick data from the database. So interation1 i submit limit order, interation2 i check the limit order vs the new tick price, if it's equal or over, the limit order is filled.
I thought about this problem, ES at 1000, i create:
1) long market order
2) limit order 1004
3) stoploss order 996
but market is very volatile, so by the time i submit ES already moved to 1005. So what that means is now my long order got filled at market 1005, and instantly my limit order got filled too at 1005. So a winning trade now turns into a loser due to slippage.
Really cant think of a way to deal with this other than rely on the fact that my system reaction is faster than the es movement, my limit/stoploss is at least 3-6 pts from last tick, and eat up the rare(hopefully) slippage due to this.
Yeah i figured as much, after analyzing the winners i realized if didnt strictly use limit orders to take profit, instead leaving 1 out of 3 contracts as a trailing order, similar to letting the winner run, profit will be even higher. But then that means curve fitting the system even more.
Guess not much left to do but to hook it up to IB's api. Another fun weekend ahead
Mike, i dont mind sharing details. The system and its signals are generated from point figure charting technicals (support/resistance etc..). I like point-figure because i can take tick data(the most granular datafeed) yet the actual signal generation is based of a much higher level data. This way i can mimic production as closely as possible in term of fast volatile moves / slippage.
The bad part is there are no existing pf backtesting system available, so the whole thing was built from scratch using java - real time pf engine, order/position management module, datafeed module, blackbox, etc..
1. How many trades (what is your sample size?). For an intraday model over 10 years I'd like to see 500 trades or more.
each entry involves 3*X contract at market, 3*X stop loss, and 3*X limit. As either stoploss or limit is hit, the other side will get canceled. I think IB actually has a order entry for this (dont remember the name) to actually make it even simpler in production.
About 15 days a month have trading going on that averages 1-2 entries. So that's about 30 trades a month?
2. Average profit per trade. Minimum $25 per trade for the ES AFTER COMMISSION AND SLIPPAGE. Use $2.5 for commission and $6.25 slippage per trade.
The profit/loss are above $150 per entry. It's not one of those systems that make tons trade scalping pennies.
3. Did you use limit orders? Do not use limit orders unless you have software that can look forward one bar and simulate a fill only when the future price crosses one full tick under or over your limit price.
Well there is no software, everything is custom coded by myself. The backtesting is just a while loop, each iteration reads 1 es tick data from the database. So interation1 i submit limit order, interation2 i check the limit order vs the new tick price, if it's equal or over, the limit order is filled.
I thought about this problem, ES at 1000, i create:
1) long market order
2) limit order 1004
3) stoploss order 996
but market is very volatile, so by the time i submit ES already moved to 1005. So what that means is now my long order got filled at market 1005, and instantly my limit order got filled too at 1005. So a winning trade now turns into a loser due to slippage.
Really cant think of a way to deal with this other than rely on the fact that my system reaction is faster than the es movement, my limit/stoploss is at least 3-6 pts from last tick, and eat up the rare(hopefully) slippage due to this.
Generally, year end lossess are not acceptable, especially for an intraday model.
Yeah i figured as much, after analyzing the winners i realized if didnt strictly use limit orders to take profit, instead leaving 1 out of 3 contracts as a trailing order, similar to letting the winner run, profit will be even higher. But then that means curve fitting the system even more.
Guess not much left to do but to hook it up to IB's api. Another fun weekend ahead
Quote from Mike805:
I don't think you need tick data to do what you're doing. Minute bars should suffice.
Adjusting exits is not curve fitting in the destructive sense, it is optmization of you model, which is fine. As long as the model concept is sound then the parameters that dictate profit/loss stops are relatively insignificant. In fact, the best thing you can do is walk forward test your targets/stops and see what happens.
Here are the important questions:
1. How many trades (what is your sample size?). For an intraday model over 10 years I'd like to see 500 trades or more.
2. Average profit per trade. Minimum $25 per trade for the ES AFTER COMMISSION AND SLIPPAGE. Use $2.5 for commission and $6.25 slippage per trade.
3. Did you use limit orders? Do not use limit orders unless you have software that can look forward one bar and simulate a fill only when the future price crosses one full tick under or over your limit price.
Generally, year end lossess are not acceptable, especially for an intraday model.
Without giving away the method, what is the market movement you are trying to capture?
Mike