Complex Filter

Complex Filter groups several simple filters together so that they can be applied in a single step. Complex Filters also allow combining of simple filters together using AND/OR logical operators. Complex Filters can be saved to a file on your disk and reopened on next application startup.

To create a new Complex Filter, click menu File - New - Complex Filter. To open an existing Complex Filter click menu File - Open File and select Filter Files in Files of type combo box at the bottom of file browser window that opens from that menu command.

 You can also drag and drop a complex filter file into the main application window to open that filter. Complex Filter files have .filter extension.

You can reuse Complex Filters in various lotteries installed on your computer. The following rules apply:

Complex Filter window has four different modes. You can switch between the modes by clicking at appropriate buttons at the top of the Complex Filter window.

Design

In Design mode you construct and customize your complex filter. The Design screen is divided into three parts. At the top there is Name & Description pane where you can enter the name and a short description of your complex filter. The pane is collapsible by clicking on its header. The middle part of the Design screen is the actual filter hierarchy. At the bottom of the screen there is collapsible Preview pane.

hint You can collapse Name & Description and Preview panes to maximize the screen area available for the filter tree.

hint You can change the layout of split windows using menu View - Split orientation.

Creating Complex Filter

When creating a new Complex Filter its filter hierarchy is initially empty. To add a new filter to your complex filter, click button Add filter at the top-right corner of Complex Filter window. This opens Select Filter window listing all available filters. Select the filter you wish to add and click Select button. The filter is added to the complex filter hierarchy and its settings are available at the lower part of filter hierarchy area. Repeat the same steps to add another filter to the complex filter.

Another way of adding a filter is using Filters window - simply drag the desired filter from Filters window and drop it into the Complex Filter window. Note that there's a visual hint when dragging a filter over complex filter hierarchy indicating where the filter can be dropped.

If you have other Complex Filters stored on your disk you can drag them from e.g. Windows Explorer window and drop them into Design tab. Dropped filters will be added as references. It is even possible to drag and drop a folder with Complex Filters. Each folder and sub-folder will be added as a group of filter references.

To customize the settings of any filter in the hierarchy, click the filter in the table first. The lower part of the Designer window will then show controls for the modification of the settings of the selected filter. Note that filter's description updates automatically in the Description column as you make changes to filter's settings.

 You can drag the divider between filters table and filter settings area to enlarge the upper or the lower part of the Designer window as needed.

If you wish to remove a filter from complex filter hierarchy select the filter using your mouse then press Delete key. You can also use menu Edit - Delete or right-click the filter in the list and select Remove from its popup menu. 

Note: Removing a Filter Group (see below) also removes all filters belonging into that group.

The complex filter hierarchy is shown as a table with several columns:

Clicking a table column sorts the table in ascending or descending order which makes it easier to find a particular filter in a deep complex filter hierarchy. Table columns are resizable by dragging their border.

You can reorganize the filters within complex filter hierarchy using mouse drag and drop. It is also possible to copy selected filter(s) using Ctrl+C keyboard shortcut and paste them as copy to a different place in filter hierarchy using Ctrl+V shortcut.
It is strongly recommended to place the more expensive filters to the bottom of each filter group to increase the filtering speed. For example a filter checking the sum of ticket numbers is very fast and doesn't consume that many computational resources. However a filter which compares each ticket with other tickets in a file is very expensive and much more CPU time is needed for its execution. So if complex filter rejects a ticket because its sum is outside allowed range then there is no point comparing that with other tickets from a file and the whole complex filter is executed much faster.

Right-click any filter or any filter group in the hierarchy to open its popup menu. You can use it to preview, run, back-test, or analyze performance of the selected filter instead of the whole complex filter hierarchy. Select Disable from the popup menu to turn the filter off. Disabled filters, displayed using strike-through font, are not applied when the complex filter is being executed. Select Enable from disabled filter's popup menu to turn that filter on again. This way you can fine-tune your complex filter

tip You can select multiple items in the filter hierarchy and right-click them to get the following choices in popup menu:

Note: When the filter is being executed in a Preview pane or Run mode you can still make changes to the complex filter however those changes are not propagated to the already running filter. You must execute the filter again to have the changes reflected in the filtered tickets.

Note: Red color in Filters column denotes filters that failed one or more draws in a back-test.

Filter Groups

Filters at the same level of complex filter hierarchy are organized into filter groups. A filter group is basically a filter condition applied to tickets being filtered - filter group accepts a ticket if sub-filters within the group accept the ticket. By default the filter group condition is that all filters within the group must accept the ticket. However it's possible to customize the count of filters required to pass which allows various logical operators to be applied on filters within the group.

For example let's assume that a filter groups has sub-filters called A, B and C:

All of the above can be combined with Matching Tickets: Accept/Reject option for group filters, which is the equivalent of logical operator NOT. Filter groups can contain other filter groups so it's possible to build very rich logical constructs that should fit any filtering needs.

Each complex filter has at least one filter group which is the root of the complex filter hierarchy. To add another filter group click Add group button at the top-right corner of the designer window. To add a filter to a group, first select the group in the table then click Add filter button or simply drag a filter from Filters window and drop it to the filter group row in the table. The dropped filter will be added to the end of filter list within that group. You can also move filters between the groups using mouse drag and drop. Select the filter group in a table to adjust its settings in the lower pane.

Filter Preview

Filter preview shows how many tickets the filter accepts and rejects. It should be used frequently when designing a complex filter to ensure that the selected filter settings are correct and that no filter in the hierarchy rejects all filtered tickets.

To preview the complex filter, first expand the Preview pane at the bottom of the designer screen by clicking its header. Then click Select button to open popup menu to choose the tickets the filter will be applied to:

Then click button Preview to execute the filter on the selected tickets. While the filter is running you can see a progress bar in the Preview pane and at the bottom right corner of the main application window where you can abort the filter preview. The count of tickets accepted/rejected so far is available in the Preview pane. Also the filters table shows the count of tickets accepted/rejected by individual filters. Use the ticket counts in Accepted and Rejected columns to identify possible problems in your filter hierarchy - for example filter accepting all or too many tickets or a filter rejecting all tickets.

You can also preview an individual filter in the complex filter hierarchy or an individual filter group with all its sub-filters. To do so, right-click the filter or the filter group in the table and choose Preview from its popup menu. Alternatively make sure the filter/filter group is selected in the table and then click the little down arrow on Preview button. It opens a popup menu where you can choose whether the whole complex filter is to be previewed or just the selected filter/filter group. The name of the filter being previewed is shown at the top of the Preview pane.

Run

Click Run button at the top of Complex Filter window to switch to Run mode where you can apply the complex filter on selected tickets and see a table of tickets the filter accepted. First click Select button to choose the tickets to be filtered. The options are the same as described in Filter Preview section above. Select option Matching Tickets: Accept if you wish to see tickets accepted by the filter or click button Reject if you wish to obtain tickets rejected by the filter. Then click Run button to execute the filter. While the filter is running, you can see a progress bar at the top of Complex Filter window and also at the bottom right corner of the main application window where you can abort the filter execution. The filtered tickets will show in the table in the middle of the Complex Filter window.

 Click any filtered ticket in the table to see its statistical properties in Ticket Properties window and its number layout in Ticket Panel window.

When the filtering is finished you can use toolbar at the bottom of the Complex Filter window to process the filtered tickets:

You can also execute an individual filter in the complex filter hierarchy or an individual filter group with all its sub-filters. To do so, right-click the filter or the filter group in the table and choose Run from its popup menu. Alternatively make sure the filter/filter group is selected in the table, switch to Run mode and then click the little down arrow on Run button. It opens a popup menu where you can choose whether the whole complex filter is to be executed or just the selected filter/filter group. The name of the filter being executed is shown at the top of the Run pane.

tip Use menu Edit - Find to search for a ticket with given numbers in the list of filtered tickets.

Back-test

Back-testing a filter means that the filter condition is applied on past winning numbers to check that the filter accepts Jackpot winning tickets. Click Back-test button at the top of Complex Filter window to switch to Back-test mode, click Select button to choose past draws for back-testing and then click Back-test button. While the filter is running you can see a progress bar at the top of Complex Filter window and also at the bottom right corner of the main application window where you can abort the filter execution. The filtered draws will show in the table in the middle of the Complex Filter window. Draws rejected by the filter are displayed in strike-through font. You can also see the count of draws accepted by the filter and the count of draws the filter rejected at the top of the Complex Filter window.
The last two columns in the Back-test results table show the name and the description of the filter that rejected the given draw. You can double-click the row with reject draw to switch to Design tab and have the filter node selected. This way you can quickly fine-tune your Complex Filters.

 Click any draw in the table to see its statistical properties in Ticket Properties window and its number layout in Ticket Panel window.

When the filtering is finished you can use toolbar at the bottom of the Complex Filter window:

You can also back-test an individual filter in the complex filter hierarchy or an individual filter group with all its sub-filters. To do so, right-click the filter or the filter group in the table and choose Back-test from its popup menu. Alternatively make sure the filter/filter group is selected in the table, switch to Back-test mode and then click the little down arrow on Back-test button. It opens a popup menu where you can choose whether the whole complex filter is to be back-tested or just the selected filter/filter group. The name of the filter being back-tested is shown at the top of the Back-test pane.

Note: Even when a filter rejects all past draws then it doesn't necessarily mean that it's a bad filter. The filter may not yield Jackpot winning numbers but it can still be profitable by generating a lot of  lower-division prizes.

Note: When a filter is being back-tested you cannot make any changes to the complex filter hierarchy. When the filter is finished then the editing of filter settings is enabled again.

 Use menu Edit - Find to search for a draw with given numbers.

If you play a lottery that draws one or more bonus numbers from the same pool as the main numbers you can tick option Merge bonus to main numbers in Draw Selection window. That option changes the behavior of filters that compare the filtered ticket/draw with past winning numbers draws, it does not affect in any way filters that do not use past winning numbers to accept/reject filtered tickets.

For example in Expert Lotto 6/49 demo lottery the latest winning numbers are 23-29-36-42-44-47 and bonus number 7. The previous winning numbers are 6-13-14-19-41-42 and bonus number 29. If you back-test for example filter Match Winning Numbers with settings Match 2, 1 latest draw you will see that back-test rejects the latest draw 2010/28 Sun 2nd because there's a match in a single number only (42) when compared with the previous draw 2010/28 Sun 1st. However if you press Select button in Back-test tab and tick option Merge bonus to main numbers the latest draw will be accepted. It is because the latest draw 2010/28 Sun 2nd with winning numbers 23-29-36-42-44-47 and bonus number 7 is actually compared with merged draw 2010/28 Sun 1st that has seven main numbers 6-13-14-19-29-41-42. And there is a match in two numbers (29 and 42).

Performance

Filter performance shows how many actual winning numbers can be found in the best ranked numbers in filtered tickets:

  1. Filter is applied on selected tickets, for example tickets in the Package or full wheel of all possible combinations.
  2. Pool numbers are sorted into ranks according to their occurrence in the tickets accepted by the filter. The most frequent number(s) is in the first rank, less frequent numbers are in lower ranks. Please note that numbers with the same occurrence are placed into the same rank.
  3. Actual winning numbers from a given draw are compared with number occurrence ranks. The more winning numbers in the highest ranks, the better the filter performance is.
  4. The steps above are repeated for another past winning numbers draw.

Example

The picture below shows the performance results for Match Winning Numbers filter in the demo Expert Lotto 6/49 lottery. This filter accepts only tickets that match any of the five latest draws in 3 or 2 numbers.
performance1.png
During the performance test the filter was applied to all 13,983,816 tickets in the Package - see the Tickets field. Because 10 latest draws are selected for performance testing - see the Draws field - the filter was actually executed 10 times - once for each of the selected draws. 

Interpreting the results

The results table shows the dates of selected past draws. Column Accepted shows how many tickets the filter accepted in the given run. Column % Rejected shows the percentage of rejected tickets in each filter run. A well performing Complex Filter rejects a lot of tickets while still accepting the Jackpot one, or at least the tickets that yield a lot of lower level prizes.
Column Profit gives the total balance as if all tickets accepted by the filter were played for the given draw. Hovering mouse cursor above any cell in this column shows a tooltip with the total cost of such a bet and its total winnings. The values in the example above are based on the following payouts: Jackpot: $2,000,000, 2nd Prize: $100,000, 3rd Prize $1,000, 4th Prize $100, 5th Prize $5 and the cost of a single ticket is $1.

The following columns show the break-down of all winnings. The columns are labeled Jackpot, 2nd Prize, 3rd Prize etc (according to your lottery setup). The columns give the count of winning prizes found in each test run.

The rest of the table columns are labeled e.g. Best 6, Best 10, Best 15 etc - depending on your lottery settings. These columns show how many winning numbers from the given draw fall into the best 6/10/15 number ranks. Click any draw date to see detailed number statistics for the given draw.

The last table column Match Count shows how many pool numbers were left after the given filtering run and how many winning numbers were found in that pool. For example value 5/37 means that tickets accepted in the filtering run consisted of 37 unique numbers and there were 5 winning numbers among those 37 numbers.

The picture above shows number statistics for draw 2010/26 Sun 1st. The filter accepted 8,206,950 tickets in this performance test step and the most frequent numbers are: 12 and 35. So the highest number rank consists of numbers 12 and 35. Numbers 25 and 46 are less frequent creating the second rank. The third rank includes numbers 10,15,28,30,36 and 43. The whole number pool is divided into 6 ranks. The actual winning numbers for the selected draw are highlighted with black border. So winning number 43 falls into the third rank, winning numbers 5 and 31 fall into the fifth rank and the rest of the winning numbers fall into the lowest, sixth rank. Therefore the results table shows that 6 winning numbers fall into the 6 best numbers ranks in column Best 6.

Note: To achieve valid back-test results the winning numbers database automatically excluded draw 2010/26 Sun 1st and all following draws to simulate the state that winning numbers for draw 2010/26 Sun 1st haven't been drawn yet when testing the filter performance for this draw. The same applies when executing the filter for other selected draws.

The second picture shows number statistics for draw 2010/27 Wed 1st:
performance2.png
In this case the filter accepted 7,931,687 tickets and the best ranking number is 18, the second ranking number is 36, the third rank has only number 43 etc. There are only two actual winning numbers in the best 6 ranks: number 11 in rank 4 and number 26 in the sixth rank. The best 10 ranks include three actual winning numbers: 11, 26 and number 8 in ninth rank.

On average this filter yields 3 winning numbers in the best 6 ranks and even all 6 numbers in the best 10/15 ranks - see the last Average row in the results table. It may seem as a very good result, however this filter generates only a few ranks for the whole number pool so naturally there's a bigger chance the winning numbers will fall into higher ranks. But if you manage to design a complex filter that on average yields e.g. four or more winning numbers in the first 15 ranks and there are not too many numbers in each rank then it might be a good idea to filter a full package with such a filter and then setup a wheel of the 15 most frequent numbers from the filtered package.

You can also calculate the performance of an individual filter in the complex filter hierarchy or an individual filter group with all its sub-filters. To do so, right-click the filter or the filter group in the table and choose Performance from its popup menu. Alternatively make sure the filter/filter group is selected in the table, switch to Performance mode and then click the little down arrow on Calculate button. It opens a popup menu where you can choose whether the whole complex filter is to be tested for performance or just the selected filter/filter group. The name of the filter being evaluated is shown at the top of the Performance pane.

Note: When a filter is being executed in Performance mode you cannot make any changes to the complex filter hierarchy. When the filter is finished then the editing of filter settings is enabled again.