Charting Enhancements

You’ll notice we’ve enhanced the charts available on the System Details page.

Major changes:

First, we default to an “Intraday Equity Snapshot” chart. The old default chart showed average daily equity, which tended to obscure very significant (and very important) intraday drawdowns. The new charts are more helpful in this regard, but still not perfect. The thing that limits even intraday charts’ usefulness is that snapshots of intraday equity must be taken at various times during the day. Until recently, the number of snapshots that got taken for each system was fairly small. I have recently improved the scheduling algorithm so that snapshots become more frequent for systems with open positions, etc. Only time will tell if this in fact makes the charts more useful.

Second, you can now pan and zoom within the chart. Just click the chart on any spot to center on that spot and “zoom in” to get finer detail. You can scroll left and right, too.

I threw this together in a weekend, so hopefully you’ll find it more helpful than troublesome. Let me know if you have any problems or suggestions. I’m curious if there are browser quirks I should be aware of. I have tested on IE, Firefox, and Safari, but haven’t gotten around to Opera.

Oh, and finally – now that you can examine the charts in more detail, no doubt you’ll be able to see small but annoying errors in the intra-day equity data. If you notice weird outliers in your data (i.e your equity suddenly drops to minus $20 million dollars during the day, but then rockets back to $124,000), don’t freak out. Please no angry emails about what a jerk I am. Instead, simply email me the system name/id number, the approximate date of the incorrect equity, and a description of the general problem. I’ll clean up the data as best I can.

Hope you like. Enjoy!


It works fine here. Thanks. The display of intraday variation is particularly important. It reduces a major limitation of the charts when evaluating daytrading systems.

Interesting to see that the in some cases (e.g. Big Cat) the intraday variation is much smaller than I expected.

I think the zooming is great! I would suggest to decrease the linesize (it’s very thick right now).

I agree with ST. Thin is better. Thx.



Is it possible to have the green equity graph (the big picture) appear first when you click on any system rather than the intraday graph first? Also, wouldn’t it be nice if we have the graph in a bar format (O,H,L,C) for daily, weekly, and monthly data so subscribers can quickly see if they profited (or lost) for the week. It also shows clearly to potential subscribers how many months the system have stayed profitable. Because if you click on Pinnacle or any system that has been with you for 4 years, you’ll see the red graph quite dotty and blurry.


I think I’m familiar with the reasons that C2 equity charts to date used a an average of daily equity snapshots.

I think everyone would be better served if the graph actually showed the LOWEST equity point for each day. This number needn’t be the function of a snapshot, but could be calculated nightly to find the lowest equity point each day for each system (say, on a 5-minute basis).

I’m sure many vendors would scream about it, but it would give an actual representation of the equity dips an account trading a C2 system faces. I know C2 has two sides to its business (vendors and subscribers). This one might be too hard on vendors.

This solution would certainly end the intra-day averaging down that has been so prevalent to date.

Better yet, this would seem to offer the best of both worlds:

Keep the “main” equity chart the same. For the second equity chart, rather than attempt to show intra-day ranges via snapshot (which DOESN’T work, see ‘Slow And Steady’ which lost 30%+ account equity in less than 1 hour and this isn’t shown in your new intra-day chart at all), do what I said above. Let those interested see a “lowest equity per day chart”. Make it real, on a 5-minute basis, and not subject to equity snapshots.

Thanks. Some suggestions (before this gets too far in the wrong direction).

1. Please make the green equity graph the default.

2. Please make the graph in a daily/weekly/monthy bar format (O,H,L,C).

3. Please make a closed equity graph on the same charts (maybe as a dotted line). This would clearly show both the unrealized and realized losses the system/method had on any given day/month/week and thereby would not mislead viewers as to how much equity they actually lost/gained during that day/month/week.

Bingo. The new charts don’t show the intraday drawdowns. I thought

that was the whole point.

As I said in my first post, the new "intraday" charts show intraday snapshots of total account equity. The calculations are done periodically during the course of the day. The usefulness of these charts depends on how frequently the snapshots are taken. I have recently (in the past couple days) improved the scheduling algorithm to increase frequency during periods when systems have open trades. Thus you should see some improvement in the usefulness of the charts going forward, but they still will not be perfect.

If you wonder why C2 does not simply calculate minute-by-minute (or bar-by-bar) intraday drawdown data after the fact, the reason is that each system has multiple positions and there are thousands of trading systems. Thus it is a computationally intensive task and not trivial to perform. It will require some thought as to how best to accomplish it. I agree it will be a very useful feature, and will do my best to work on it.

> If you wonder why C2 does not simply calculate minute-by-minute (or bar-by-bar) intraday drawdown data after the fact, the reason is that each system has multiple positions and there are thousands of trading systems. Thus it is a computationally intensive task and not trivial to perform.

I can only imagine and I appreciate the effort at any rate. Nonetheless,

check out “slow and steady”. See the trade on 8/9 into 8/10 (details below). This trade spent the overnight and several hours the next day way under water (see C2’s Maximum Adverse DD data) and yet there

is no sign whatsoever of the DD on the “intraday” equity chart. Even an hourly “snapshot” would have caught a chunk of this.

27565160 BTO 10 @ESU7 @ LMT 1460 DAY 8/9/07 16:04 8/9/07 16:05 1458.75

27565216 BTO 5 @ESU7 @ LMT 1458.5 DAY 8/9/07 16:05 8/9/07 16:06 1458.5

27565936 BTO 10 @ESU7 @ MKT DAY 8/9/07 17:43 8/9/07 17:43 1458.5

27565947 BTO 10 @ESU7 @ MKT DAY 8/9/07 17:45 8/9/07 17:45 1458.5

27565955 BTO 5 @ESU7 @ MKT DAY 8/9/07 17:48 8/9/07 17:48 1458.5

27566635 BTO 5 @ESU7 @ MKT DAY 8/9/07 19:47 8/9/07 19:47 1452

27567283 BTO 5 @ESU7 @ LMT 1445.5 DAY 8/9/07 21:40 8/9/07 21:41 1445.5

27569889 STC 10 @ESU7 @ LMT 1452 DAY 8/10/07 0:26 8/10/07 3:00 1452

27569913 STC 10 @ESU7 @ LMT 1455 DAY 8/10/07 0:26 8/10/07 4:25 1455

27569921 STC 10 @ESU7 @ LMT 1458 DAY 8/10/07 0:27 8/10/07 4:33 1458

27579764 BTO 5 @ESU7 @ LMT 1442 DAY 8/10/07 8:42 8/10/07 8:43 1442

27579800 BTO 5 @ESU7 @ LMT 1441 DAY 8/10/07 8:44 8/10/07 8:44 1440.75

27582158 BTO 10 @ESU7 @ LMT 1440 DAY 8/10/07 10:07 8/10/07 10:28 1440

27579998 BTO 10 @ESU7 @ LMT 1435 DAY 8/10/07 8:54 8/10/07 10:38 1435

27583180 STC 10 @ESU7 @ LMT 1444 DAY 8/10/07 10:39 8/10/07 11:02 1444

27583393 STC 10 @ESU7 @ LMT 1446.75 DAY 8/10/07 10:48 8/10/07 11:04 1446.75

27579989 STC 10 @ESU7 @ LMT 1452 DAY 8/10/07 8:54 8/10/07 11:06 1452

27590055 STC 10 @ESU7 @ LMT 1452 DAY 8/10/07 11:58 8/10/07 11:58 1452

27590392 STC 10 @ESU7 @ LMT 1455 DAY 8/10/07 12:00 8/10/07 12:07 1455

Another option if intraday equity charts are not doable is a field

in the stats that showed the worst intraday DD and the date. Again

that data is already computed and shown in the trade by trade, but

can easily get buried after a few hundred trades.

I suggest to extend the snapshot to at least those timepoints at which the intratrade drawdowns were observed.

Perhaps you could tie the snapshot to when the system actually iniates a trade?. Some systems only make a couple of trades a day.

Mathew have we lost the ability to compare signals in the charting area? If not how do we do it now? Thanks

Click the Interactive Charts radio button (below the chart).

A graph of the daily/weekly/monthly/quarterly/yearly bar format (O,H,L,C) would show not only the Max. Adverse Excursion (MAE) but would also show the Max. Favorable Excursion (MFE) which are industry standards. It is far less computationally intensive and conveys more information. But it will always be misleading about the unrealized and realized losses/gains without the closed-equity graph overlay.

> If you wonder why C2 does not simply calculate minute-by-minute (or bar-by-bar) intraday drawdown data

Perhaps an heuristic iterative search algorithm can make the process more efficient. Something like this, applied for each system at each day:

1. Divide the day in equal intervals that are small enough to get a rough idea of where the minimum and the maximum must be. I guess 15 minute intervals would be small enough.

2. Compute the account value at the close of each interval.

3. Within the list of account values that resulted from step 2, find the time at which the minimum value occured.

4. Next, narrow the search to the intervals immediately before and after this minimum value.

5. Divide this interval again in smaller intervals. For example intervals of 5 minutes each.

6. Repeat step 2 - 5 with these 5 minute intervals. Next, repeat these steps with 1 minute intervals. This is probably sufficiently accurate.

For example, suppose you start with 15 minute intervals. For a stock system this would mean that you compute the account values at 9:30, 9:45, 10:00,…, 16:00. Suppose the minimum of these account values is found at 14:15, then you narrow the search to the interval between 14:00 and 14:30. This is then divided into 6 intervals of 5 minutes each. So you compute the account values at 14:00, 14:05, 14:10,…, 14:30. Suppose you find the minimum value of this list at 14:25. Then the search is narrowed to the interval between 14:20 and 14:30. This is divided into 10 intervals of 1 minute. So you compute the account values at 14:20, 14:21, 14:22, …, 14:30. Suppose you find the minimum value of these at 14:22. Then you use this as estimate for the minimum account value of the day.

Of course you cannot be entirely sure that you find the true minimum value, but my guess is that it can work reasonably well in most cases. Perhaps you can try it out with some systems for which you computed the true minimum and see if this algorithm yields an estimate that is close enough to the true value.

And perhaps you need to adjust the parameters of the interval lengths. With the choice in this example (15 min, 5 min, 1 min) you obtain an estimate for the miminum by computing the account value at 27 + 5 + 9 = 41 time points. To obtain the maximum too, you can re-use the first 27 values and you need an additional 5 + 9 = 14 time points. In total you would compute the account values at 55 time points. A full search at 1 minute intervals would require 390 time points.

I am not specialized in this kind of algorithms, so if someone has a better idea: go ahead.

I don’t think such an algorithm is really necessary. I assume there is no need to show the low of the day during the course of the trading day, i.e. all computations can be done off-line and nothing needs to happen in real-time.

Also, once you have determined the low for a specific system on a certain day, you can store it and don’t have to calculate it again in the future.

Thus, all you need to do is calculate an intraday equity curve on a daily basis for all active systems (602 currently, according to the grid).

This would be a very easy task for a system that held just one position during the day and made no trades, as the extremes are readily available by multiplying the quote-vector for that instrument by the position size.

It’s also easy for a system holding multiple positions during a day, that doesn’t make any trades, because at any point during the day the equity can be obtained by multiplying the position size by the quote-vector and taking the sum across all instruments in the portfolio.

It gets a little more difficult when a system makes a couple of trades during the day, in which case you’d have to split the day in x segments (where x is the number of trades+1), and then apply either one of the previous methods to each segment.

Of course, it requires a fair amount of programming. But in a sufficiently fast language like C++, java or python, I guess calculating the low for the day would take less than a second for a system; Perhaps a little longer depending on how fast you can access the quote data.

This seems to be true, although I am a self-taught programmer and not an expert in any way. I also have no idea of C2 server loads.

I think we all agree we aren’t requesting anything like real-time charts. I honestly don’t care if the chart we’re talking about (lowest-equity-value-per-day) isn’t available for several days after the fact. I want it to evaluate systems I’m considering, not systems I’m subscribed to.

Again, I do understand if C2 decides this value would just be too harsh to display, being that the site consists of two profit centers that are in some cases diametrically opposed.