MidPoint statistics - surprising results!

never design a trading system without proper prior analysis. post your market statistics here

Moderator: moderators

aspTrader
rank: 50+ posts
rank: 50+ posts
Posts: 57
Joined: Fri May 19, 2006 5:05 am
Reputation: 0
Gender: None specified

Postby aspTrader » Fri Jun 09, 2006 12:12 pm

A window snapshot of NeoTicker's Grid Optimizer 3d Display tab...

The system is the demonstration system coming with the Grid Optimizer applied to the euro futures contract.
Attachments
GridOptimizer3dSnapshot.gif

Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.

User avatar
michal.kreslik
rank: 1000+ posts
rank: 1000+ posts
Posts: 1032
Joined: Sat May 13, 2006 2:40 am
Reputation: 0
Location: Monte Carlo, Monaco
Real name: Michal Kreslik
Gender: Male
Contact:

CRB overlap/overhead

Postby michal.kreslik » Mon Jun 12, 2006 11:57 pm

aspTrader wrote:"Bar Overlap" is a term I made up to describe cases where:

High[0] > High[1] and Low[0] < High[1]

"Bar Overlap" is the difference specified in the equation:

High[1] - Low[0]


aspTrader,

I've been thinking about your idea of CRB overlaps.

I guess you made a typo and you meant

High[0] > Low[1] AND Low[0] < High[1]

instead of

High[0] > High[1] and Low[0] < High[1]

First of all - correct me if I'm wrong, but to me a definition of overlap is when two or more entities do have something in common. Your definition would exclude the cases where the two CRBs have only one price level in common. But I think that an overlap is valid if the two CRBs have at least one price level in common, thus:

High[0] >= Low[1] AND Low[0] <= High[1]

Then there is a problem with the very term of "overlap". Using the above condition we could define an overlap as a positive number only. But what if the CRBs don't overlap at all? Assuming that CRBs indeed are of constant height, there might be a wide, void gap between one CRB's close and the following CRB's open. The overlap between such bars then would be 0% no matter what the difference between the close and the following open is. Certianly, the overlap should be measured in a different way.

Instead of measuring the overlap in the range of 0% to 100%, we should measure it in the range of -infinity to +100%. Unfortunately, we can't go beyond 100% since the two CRBs just can't overlap themselves more than being at the very same place :) The -infinity measure is defined as the situation where the CRBs are infinitely distant from each other.

But even this improved method would leave us with no directional information. For example, the negative overlap value doesn't mean that the following bar is shifted down. It only means it is shifted completely outside the preceding bar's range. This way, the overlap value only tells us how much the CRB is shifted against the preceding CRB, but doesn't provide information on which way it is shifted (for instance, the overlap of +30% is the same regardless of the CRBs' mutual position).

Thus, I would rather suggest using a term overhead. You can define overhead in the range of -infinity to +infinity. Overhead indicates the extent to which the two bars overlap each other and also the mutual position (direction) between the two bars.

Obviously:
- negative overhead indicates that the CRB is shifted down in relation to the preceding CRB
- positive overhead means the CRB is shifted up in relation to the preceding CRB
- If the two bars overlap perfectly each other, the overhead is 0%

Also, I would suggest measuring the overhead in units of price levels rather than in an absolute price difference. Mathematically it is a prerequisite for being able to define the two CRBs as overlapping themselves even if they only overlap at one single price level. Without using this method, one would get an overlap of zero in this case:

low[0] - high[1]

and yet, if these prices were the same (low[0] = high[1]), the overlap wouldn't in fact be zero, but exactly one price level.

For this to work properly, we must first define a variable named MinimumPriceMove. It is the smallest measure of price movement of the particular security of our interest. In Tradestation, this variable would be defined as MinMove / PriceScale. For example, in Forex EURUSD pair, the smallest measure of price movement is 0.0001. In a nutshell, price can't go anywhere between 1.2312 and 1.2313.

Subsequently, we must define the CRBPriceLevels variable. It is a measure of how many price levels there are in one CRB. For example, if we defined the CRB range for EURUSD forex pair as 5 points, the CRBPriceLevels will be 6, since the smallest measure of price movement in EURUSD is exactly one point and there are 6 price levels within the 5 points range (1.2000, 1.2001, 1.2002, 1.2003, 1.2004, 1.2005 = 6). The simple formulae:


- CRB height:

CRBheight = high[0] - low[0]


- number of price levels:

CRBPriceLevels = 1 + CRBheight/MinimumPriceMove


- overHead measured in number of price levels:

overHeadPriceLevels = (high[0] - high[1])/MinimumPriceMove


- overhead in percentage:

overHeadPriceLevels% = overHeadPriceLevels/CRBPriceLevels


- overlap in price levels:

overLapPriceLevels = CRBPriceLevels - AbsValue(overHeadPriceLevels)


- overlap in percentage:

overLapPriceLevels% = overLapPriceLevels/CRBPriceLevels



Picture is worth a thousand words, so have a look at the attached figures - I used these initial values:
- CRB height = 0.80
- MinimumPriceMove = 0.20
- CRBPriceLevels = 1 + CRBheight/MinimumPriceMove
= 1 + 0.80/0.20
= 1 + 4
= 5


Michal














Lawrence Chan
rank: <50 posts
rank: <50 posts
Posts: 41
Joined: Sat Jun 24, 2006 1:20 pm
Reputation: 0
Location: Toronto
Gender: Male
Contact:

Postby Lawrence Chan » Tue Jul 11, 2006 10:02 pm

I have done this type of test on S&P data from 5-min all the way upto 135-min bars many years ago. The basic comparison was close > close of 1 bar ago.

You will find the results are vrey similar to what Michal did. And the interesting thing is, you can pretty much describe the distributions with basic binomial distribution.

The edge happens when the distribution of say the last 100 bars or so formed a curve that biased towards one side. I forgot exactly what I did with the work afterwards :)
Lawrence Chan
TickQuest Inc.
http://www.tickquest.com

User avatar
michal.kreslik
rank: 1000+ posts
rank: 1000+ posts
Posts: 1032
Joined: Sat May 13, 2006 2:40 am
Reputation: 0
Location: Monte Carlo, Monaco
Real name: Michal Kreslik
Gender: Male
Contact:

Postby michal.kreslik » Tue Jul 11, 2006 10:39 pm

Lawrence,

I've got many other interesting statistical studies I've done on market data in my drawer. I'll post them here on the forums gradually.

The puzzling point is that nearly all examined concepts show a strong tendency towards statistical symmetry and gaussian-shaped normal distribution with increasing number of observations. In some instances I've been astonished to find a Fibonacci sequences in the values of the observations' occurences.

Michal

Lawrence Chan
rank: <50 posts
rank: <50 posts
Posts: 41
Joined: Sat Jun 24, 2006 1:20 pm
Reputation: 0
Location: Toronto
Gender: Male
Contact:

Postby Lawrence Chan » Tue Jul 11, 2006 10:49 pm

The key factor is time. When we collect the stats, notice that the data is partitioned by time.

If the data is not partitioned by time, I think the stats will not show the same behaviour at all.
Lawrence Chan

TickQuest Inc.

http://www.tickquest.com

Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.

User avatar
christhlo2
rank: <50 posts
rank: <50 posts
Posts: 25
Joined: Thu May 18, 2006 7:03 am
Reputation: 0
Gender: None specified

Postby christhlo2 » Wed Jul 12, 2006 1:12 am

Hi Lawrence,

Just curious, if data is not partitioned by time, what would be the behaviour of the stat, and what other means/method of partition you think to be useful or interesting.

By the way, have you heard of prosticks.com, what do you think of their method of plotting the candlestick, it seems to be quite good at spotting support and resistance level ?

Thanks !

Chris
O:)

User avatar
michal.kreslik
rank: 1000+ posts
rank: 1000+ posts
Posts: 1032
Joined: Sat May 13, 2006 2:40 am
Reputation: 0
Location: Monte Carlo, Monaco
Real name: Michal Kreslik
Gender: Male
Contact:

Postby michal.kreslik » Wed Jul 12, 2006 9:15 am

We can partition the data based on:
  1. time (traditional time-range bars)
  2. tick count (tick-based bars)
  3. price (constant range bars)
  4. internal condition (for instance, construct a new bar every time the data reaches highest high/lowest low of the last 30 minutes)
  5. external condition (construct a new EURUSD bar every time USDCHF makes 40 ticks)
  6. mixed conditions - the combination of the above (like bars that span <= 5 min AND <= 20 ticks)
The often neglected aspect of data partitioning is what I call an X axis shift. X axis shift determines which set of partitioned data you get according to the starting tick selection.

If, for instance, you choose for your starting tick on a 15-min chart the tick that occured at 3:08:05 AM, then your next 15 min candle will start at 3:23:05, the next at 3:38:05 etc. This way, you certainly get a different view on the market data than if you select your first tick to be the one that occured at 3:00:00.

The same applies to the rest of the partitioning schemes listed above.

A question for Lawrence: is it possible to construct a mixed-type bars in Neo? As I pointed out above, let's say we would like to experiment with the bars that span <= 5 min AND <= 20 ticks AND <= 10 price points.

Michal

Lawrence Chan
rank: <50 posts
rank: <50 posts
Posts: 41
Joined: Sat Jun 24, 2006 1:20 pm
Reputation: 0
Location: Toronto
Gender: Male
Contact:

Postby Lawrence Chan » Wed Jul 12, 2006 1:27 pm

christhlo2 wrote:Hi Lawrence,

Just curious, if data is not partitioned by time, what would be the behaviour of the stat, and what other means/method of partition you think to be useful or interesting.

By the way, have you heard of prosticks.com, what do you think of their method of plotting the candlestick, it seems to be quite good at spotting support and resistance level ?

Thanks !

Chris
O:)



The extra dot produced in the prostick chart is simply an indicator based on tick data.

In NeoTicker, you can plot this type of indicators using the tick precise technology - which replay tick data onto a chart to generate the historical data as required.
Lawrence Chan

TickQuest Inc.

http://www.tickquest.com

Lawrence Chan
rank: <50 posts
rank: <50 posts
Posts: 41
Joined: Sat Jun 24, 2006 1:20 pm
Reputation: 0
Location: Toronto
Gender: Male
Contact:

Postby Lawrence Chan » Wed Jul 12, 2006 1:34 pm

michal.kreslik wrote:A question for Lawrence: is it possible to construct a mixed-type bars in Neo? As I pointed out above, let's say we would like to experiment with the bars that span <= 5 min AND <= 20 ticks AND <= 10 price points.


Using Managed Series, you can generate series with complex bar generation rules easily.

The downside is, they are not a visible series and only exists within an indicator. If we do find a solution, then we will allow the display of the managed series.
Lawrence Chan

TickQuest Inc.

http://www.tickquest.com

User avatar
michal.kreslik
rank: 1000+ posts
rank: 1000+ posts
Posts: 1032
Joined: Sat May 13, 2006 2:40 am
Reputation: 0
Location: Monte Carlo, Monaco
Real name: Michal Kreslik
Gender: Male
Contact:

Postby michal.kreslik » Wed Jul 12, 2006 2:02 pm

Lawrence Chan wrote:If we do find a solution, then we will allow the display of the managed series.


It would be cool to allow the Neo users for programming their own condititions based on which the real-time bars would be generated.

That's great we're discussing this type of issue when at the same time Tradestation developers don't even know what an alternative bar creation is :)

Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.


Return to “statistics”