## Oranges Omaha Calculator - User Manual

### About oRanges Omaha Calculator

The program is an analytical tool for analyzing the **Omaha poker** game.
This tool helps **Omaha poker** players better to understand how frequently range hits specific hand ranks and allows you to calculate the probability of starting hand range to fit a given board
and helps to build your own ranges to significantly increase your skill.

A user-friendly interface will help you to understand the structure of players' ranges and calculate equity.

Equity is calculated both using the Monte Carlo method and by brute force complete enumaration at the user's choice (except for pre-flop situations).

There are built-in expression parsers to help you create and filter input ranges, as well as create custom statistics based on the default statistics.
There is an ability to enable or disable hands that fall within certain statistics to fully analyze the narrowing of ranges by street and much more.
At the time of writing this manual the program supports Omaha Hi only.

Compatible operating systems: **Windows** and **MacOS**

The program has a free 5-day fully functional trial period.
How to activate the trial period?

### Board cards selection

In this block, located in the upper left corner of the program window, you can select board cards.

Board cards can be selected one at a time or can be generated randomly using buttons to the right of the block.

Use **F Random, T Random, R Random** buttons for generating random 3, 4 or 5 board cards.

If 3 or 4 board cards have been already selected, you can fix them by checking the corresponding **Fix** checkbox.

When the board cards are fixed, clicking on the **T Random** and **R Random** buttons respectively will generate one random card for the turn or river.

### Dead cards selection

Dead cards block is designed to remove cards from the deck. You can select dead cards in this block.

If you have already selected board cards, then these cards will not be available for selection.

### Range table

There is a possibility to create ranges of two players in the main window of the program. Hands from the ranges are displayed in the respective tables.

Tables have columns - **Rank**, **Hands**, **Weight**, **Distinct rank**, **Hand group**.

All 270,725 possible hands are ranked in descending order by equity value against a random range in a heads-up situation and are ranked accordingly.
So the hand A♣A♦T♣T♦ has a rank - **1**,
and the hand 2♣2♦2♥2♠ has a rank - **270725**.

The **Hands** column lists all hands from the range. If an additional filter is specified or postflop filters are enabled, then hands corresponding
to the selected filters from the initial range will be shown.

The **Weight** column shows the weights of the hands. By default, the weights of all hands are 1 (100%). They can be changed postflop by setting the
percentage of hands used from certain statistics. At the time of writing this document, it is not possible to assign a hand weight preflop.

Many hands are equivalent in suit permutations and order within a betting round. This property has a name - suit isomorphism.
For example, all hands
A♣A♦J♣J♦,
A♣A♥J♣J♥,
A♣A♠J♣J♠,
A♦A♥J♦J♥,
A♦A♠J♦J♠ and
A♥A♠J♥J♠
are mapped to the same preflop index.
A special algorithm calculates the indices of each hand and compares them with a unique index, which is indicated in the

**Distinct rank** column.
There are **16432** unique indices in total.

All suit isomorphic hands can be divided into groups according to the number of suited cards in the hand.
Suited cards in a hand are indicated by square brackets. Suited cards of different suits are marked with different square brackets.

For example, the group **[AJ][AJ]** contains the hands
A♣A♦J♣J♦,
A♣A♥J♣J♥,
A♣A♠J♣J♠,
A♦A♥J♦J♥,
A♦A♠J♦J♠ and
A♥A♠J♥J♠ , and
the group **[AJ]AJ** contains
A♣A♥J♣J♦,
A♣A♠J♣J♦,
A♦A♥J♣J♦,
A♦A♠J♣J♦,
A♣A♦J♣J♥,
A♣A♠J♣J♥, etc.

The **Hand group** column indicates the group to which the hand belongs.

The number of hands and the number of unique hands in the selected range are shown below the table.

### Entering ranges

To enter a range, you can use the Range field, the range assistant that opens when you press the Range button, or the Hand button when you need to enter a single hand.

When you enter a range into the Range field, an expression parser is used that allows you to enter multiple hands according to the rules for composing expressions.

The expression syntax has a set of rules that must be used to efficiently enter ranges.

**Single hand**

To indicate a single hand, directly enter 4 cards that make up the hand into the Range field - **AsKd6h3s**, for example.

**Multiple hands combinations**

To get all 256 hands containing eg A, K, Q and J, enter **AKQJ** without any suits.
Cards in a hand can be specified with suits.

For example, if you enter **AdKQJ**, then we get 64 hands containing Ad and all possible combinations of 3 cards with a rank of K, Q, J of all possible suits.

**Suit specifications**

To indicate cards of the same suit, you must enclose them in **square brackets**.

Examples:

**[AT]**** will give you all hands containing **AT** suited and two other cards.

**[AT][AT]** will give you a pair of suited A and T, and **[QT][87]** will give you all **QT87** hands, where **QT** and **87** are suited and their suits are not the same.

**[***]*** will give you all hands with at least three suits. ***** - denotes any rank A,K,Q, ...,2.

**[***][*]** will give you all hands with three cards of one suit and one other suit.

**[*][*][*][*]** will give you all hands of four different suits (rainbow).

**[Ah][*][*][*]** will give you all hands with **Ah** combined with any cards of three distinct suits (c, d, s).

**Pairs**

**QQ**** gives all hands containing at least two queens.

**[Q*][Q*]** gives all hands with queens of two suits with two other cards of the same suit.

**Percentile**

17.3% will give the best 17.3% of hands, according to hand rank.

10-23.5% will give the best hands from 10% to 23.5%, according to hand rank.

**Cards pattern**

***** = Cards of all ranks: A, K, Q, ..., 2.

**B** = big cards: A, K, Q, J.

**R** = broadway cards: A, K, Q, J, T.

**F** = face cards, K, Q, J.

**M** = medium cards, T, 9, 8, 7.

**Z** = small cards, 6, 5, 4, 3, 2.

**L** = low cards, A, 2, 3, 4, 5, 6, 7, 8.

**N** = no low cards, K, Q, J, T, 9.

**W** = wheel cards, A, 2, 3, 4, 5.

**Y** = baby cards, 2, 3, 4, 5.

**[ ]** = grouping of suited cards.

For each of the four cards, you can enter a range. For example, **A-T***** will give you **A***, K***, Q***, J***, T***** .

For each of the four cards, you can enter an open range. For example, **Q+***** will give you **A***,K***,Q*****.

You can combine ranges for all four cards. For example, **K-TQ+9-73+** will give you hands where the first card has a rank between **K** and **T**,
the second card has a rank greater than or equal to **Q**, the third is between **9** and **7**, and the fourth card has a rank greater than or equal to **3**.

**Additional filters**

Each additional filter must be separated from the main pattern by a slash. Filter syntax: RangePattern/filter.

For example, **BB**/ds/op/sa**.

**Pair filters**

**np** = no pair, unpaired hands (contains XYZR hands).

**nt** = no trips (contanins XYZR,XXYZ,XXYY hands).

**nq** = no quads (contains XYZR,XXYZ,XXYY,XXXY hands).

**op** = one pair, exact pair (contains XXZR hands).

**alop** = at least one pair, one pair or more (contains XXXX, XXXY, XXYY and XXYZ hands).

**tp** = two pair, exactly two pair (contains XXYY hands).

**tr** = trips, exact trips (contains XXXY hands).

**altr** = at least trips (contains hands XXXX and XXXY).

**qu** = quads, exact quads (contains XXXX hands).

**Suit filters**

**rb** = rainbow hands, offsuit hands only (contains xyzr hands).

**ss** = single suited, single suited hands only (contains xxyz hands).

**alss** = at least one suited (contains xxxx, xxxy, xxyz and xxyy combinations).

**os** = one suited (contains hands xxxx, xxxy and xxyz).

**ds** = double suited hands, double suited hands only (contains xxyy hands).

**ts** = three hands of the same suit, hands with exactly three cards of the same suit (contains xxxy hands).

**alts** = at least three hands of the same suit (contains hands xxxx and xxxy).

**mt** = monotone hands, 1-suited hands only (contains xxxx hands).

**Special filters**

**sa** = suited aces.

**sna** = suited hands without an ace.

**Rundown filters**

**rd00** = rundown, hand cards are in consecutive rank order.

**rdAB** = rundown with gaps, hand cards are in consecutive rank order with gaps A and B.

If A = 0 or B = 0, then there is no any gap.

Examples:

**rd01** consecutive cards in a hand with one hole and a gap of 1 rank - **AcKdJdTc, JhTc9c7d.**

**rd03** consecutive cards in a hand with one hole and a gap of 3 ranks - **AcKd9d8c,Jh7h6s5s**

**rd13** consecutive cards in a hand with two holes and gaps of ranks 1 and 3 - **AcKdJd7c, JdTh8s4c**

### Import/Export ranges

To export the range that is selected in the table, you can click on the right small button, select a file name in the pop-up window to save.

Hands from the current range will be saved in the format hand@weight and separated by a comma. Example:
**QhQs3s2s@100,QdQs3s2s@45,QcQs3s2s@100,AhAs3s2s@87,KdAs3s2s@5,...**

To import a range, you can click on the small left button and select the file name in the pop-up window.
You can import both previously saved ranges and ranges in the Monker Solver format.
Ranges from Monker Solver are recognized in the following formats:

**AhAs3s2s@87,KdAs3s2s@5,AdAs3s2s@50,AcAs3s2s@87**

and

**Ah4h3s2s,0.085,8764**

**6h5h3s2s,1,9099**

**Ah5h3s2s,0.025,8893**

### Range Operations

The concept of a set is one of the initial and basic concept of mathematics.

A set is usually presented as an object formed by collecting any objects into a single whole, including, possibly, the sets themselves. A set is nothing more than an unordered collection that has no duplicate elements.

You can perform various operations on sets. Important operations that are performed on sets are union, intersection and subtraction.

Here's an example:

Let us have 2 sets of natural numbers: **A = {1, 2, 3, 4}** and **B = {3, 4, 5, 6}**.

The **Union** of sets **A** and **B** is the set **A | B = {1, 2, 3, 4, 5, 6}**, consisting of elements included in **A** or **B** without repetition.

The **Intersection** of sets **A** and **B** is the set **A & B = {3, 4}**, consisting of elements that appear simultaneously in both **A** and **B**.

The **Subtraction** a set **B** from **A** is a set **A ! B = {1, 2}**, consisting of elements in **A** that are not in **B**.

Considering ranges as sets of hands, one can introduce operations on these sets.

**A | B** = gives you all hands that are in **A OR B (Union Operator)**. It's the same as **A, B**.

**A & B** = gives you all the hands that are in **A AND B (Intersection operator)**.

**A ! B** = gives you all hands that are in **A but NOT in B (Subtraction operator)**.

**()** = Parentheses can be used to group expressions. For example, **A! ((B | C) & D)**.

You can use all operators when creating a complex expression. For example, **(AA, KK | (QQ & dd**)) ! 20%**.

### Filter

The Filter field is intended for filtering the entered range, when it is necessary to find, view a part of the range, calculate the equity of this part,
that satisfies the criteria specified in the field.

When parsing the text entered in this field, an expression parser similar to the Range field is used.
Any valid expression that satisfies the syntax described above is available for this field also.

For example, if you want to check if a range contains a particular hand, just enter it in the Filter field.
If you want to look at all hands from the range containing **A, K**, then just enter **AK**.

In fact, if the Range field specifies range **A** and the Filter field specifies range **B**, and they are both valid expressions,
then you will get a range in the table that is the intersection of sets **A** and **B** and can be written as **A & B**.

You can get the same result if you type **A & B** in the Range field.

The Range and Filter fields have a context menu, which opens when the right mouse button is pressed.

**Undo, Redo, Copy, Paste, Copy Selected** menu options are available for the convenience of working with the expression for the range.

### Range Assistant

When you click on the button Range, a window appears in which you can select ranges in a convenient graphical interface, apply filters
and compose complex expressions for the range.

In the **Range** section, you can use the slider to set the lower and upper limits of the percentile.

In the **Mask** section, you can set ranges of ranks for the cards of the hand and specify their suit in dropdown list.

Use your mouse to include or exclude the ranks of the cards you want hands in your range have.
Ranks can be selected or deselected without releasing the mouse button.
You can also specify a suit pattern using **Distinct suit groups** dropdown list.

In the sections **Pair filters, Suit filters, Rundown**, functionally described above, you can combine existing filters.
When you select filters, an expression is created in the **Hand group** field that matches the selected criteria.

In the **Hand group** field, expressions are created using basic filters.

If you would like to create a complex expression using the operations of union, intersection or subtraction from **Hand group** field,
use buttons **Add, Union, Intersection, Substration** and brackets to transfer the range from the **Hand group** field to the **Final range** field,
creating a new complex expression as needed.

Any expression from range assistant is exported to the main window only from the **Final range** field.
This means that you have to always transfer an expression from **Hand group** field to **Final range** field using at least the **Add** button,
even if it is a simple expression in **Hand group** field, created with basic filters.

If entered expression is incorrect, it will be highlighted in red.
When you click on Ok, the created expression will be exported into the **Range** field of the main window.

If the **Final range** field is invalid or empty, then the import will fail.

### Statictics

The program has two blocks of statistics, which calculate what rank the hands from the ranges receive on current street.
These blocks consist of 4 sections, separated from each other by gaps and marked with different colors and filter activation buttons.

Statistics are divided into 4 blocks: «Made hands», «Draws hands», «Draws and made hands» and «User statistics».

«User statistics» appears only postflop.

The first block is designed to evaluate the rank of 4-card made hands, adopted in Omaha poker. **Marked in blue**.

The second block is for evaluating draws hands from the six 2-card hands that each 4-card hand has.
If at least one 2-card hand forms a draw hand, then the 4-card hand is considered to be a draw hand. **Marked in green**.

The third block is for evaluating draws and made hands you get from the six 2-card hands that each 4-card hand has.

If at least one 2-card hand forms a draws and made hand, then the 4-card hand is considered to be a draws and made hand. **Marked in purple**.

The fourth block is for user statistics, which are created using the **User Statistics** tool. This tool will be described below.

User statistics can be created based on the default statistics by creating expressions. **Marked in red**.

Each statistics from «Made hands» block is a partition of the set of all hands in the selected range and every hand in the range is included in one and only one of the statistics of this block.
In other words, the statisticss from this block do not have shared hands, i.e. the intersection of any two statistics from this block is empty.

Each hand which is included in one of the statistics of blocks «Draws», «Draws and made hands» will be definitely included in some «Made hands» statistics, and possibly in other statistics. The statistics of «Draws», «Draws and made hands» have usually intersections with the statistics of other blocks.

This means that some hands can be included in several statistics of different blocks.

**Statistics is not shown if it doesn't contain any hand. Empty statistics are not shown!**

When you mouse over a bar of any statistics, hands from the range that applicable to this statistics will be shown in the range table and
color bars of other statistics will show the percentage of shared hands with the selected statistics (intersection).

If you mouse away from the statistics, the full selected range will be shown the range table again.

If you right-mouse click on color bar of any statistics, hands from this statistics will be locked and shown in the range table.
Moving the mouse away from this statistics in this case will not show the full range in the range table.

When you have any locked statistics, mouse over any other statistics will show shared hands with the locked statistics in the range table.

To deselect a locked statistics, mouse click on its color bar.

For each statistics, you can set flags , or leave it blank. Above the statistics block there is a button for switching mode or .

The / flag means that the statistics will be added or deleted. If you do not select or , the statistics will be skipped.

Statistics with a are combined and hand repetitions are ignored. Then, statistics with a are deleted from the obtained set.

To activate the selected statistics, you must click on the corresponding main filter button below all statistics.

There are 3 main filter buttons for activating filters on each street postflop. Read below

A weight can be assigned for each statistics postflop. Read below

If you have already selected a turn or river card and you need to change the filters on previous streets,
you can double click on the turn or river card above Board cards in upper left coner.
The turn or river card is moved to Dead cards table and vice versa, the river or turn card is moved back to the Boards cards.
Also double clicking on any flop card allows to edit filters on flop.

Cards with T or R icons in Dead cards table is a clear sign that you are in switched mode.

**If you select any Board or Dead card in this mode, the moved cards will be removed.**

### Main filters

Below all statistics there are main filter buttons which you can use to enable/disable the selected statistics on each street postflop.
The Main filter button will display the percentage and number of hands that passed through the filters.

If you turn filter On, all hands that passed through the filter will be shown in the range table.

The procedure for using these buttons can be described as follows:

On each street you select statistics with hands that the player can presumably take some action with.

When you turn on the filter on any street, you leave in the range only those hands the player is supposedly ready to continue with.

Thus, the turning filters On helps to narrow the range depending on analyzed spot.

### Applying weight to statistics

In some spots it becomes necessary to set up the frequency of opponent's actions with the made or draw hands.

For example depending on how often your opponent makes an action with top pair or middle pair, etc. in a particular situation, you may want to specify the probability of this action.

To set the weight of statistics, click the icon next to the statistics. A pop-up window will appear to set the weight of the statistics.
Press button to close pop-up window.

To reset statistics weights to default values on the current street, press the button above all the weights.

**Tip:** Move mouse over any weight slider and use the mouse scroll to set the value of weight.

### User Statistics

With this tool, user statistics can be created based on the default statistics by composing expressions.
To run the tool, click on the shortcut button labeled **UStats** below the left range table or press **Ctrl+U (Command+U for MacOS)** at the same time.

On the right side there are 3 lists of default statistics for «Made hands», «Draws hands», «Draws and made hands».

If you would like statistics to be contained in the expression for a user filter, double-click on it.
The name of the statistic will appear in the expressions window in curly brackets.

Use the **Union, Intersection, Substraction** and brackets buttons to compose an expression. The integrated expression parser for statistics checks the expression for correctness before storing new statistics. You can check the correctness of the current expression by clicking the **Check Expression** button.

The generated statistics can be saved to the library for future use. Before saving, you must specify the name of the statistics and click on the **Add to Library** button.
To remove statistics from a library, select it with the mouse and click **Remove from Library**.

When you double click on a statistic in the library, its expression will be displayed in the expression window and can be applied to any street postflop or for creating a new expression.

Valid user statistics entered in the expressions window can be applied to any postflop street by selecting the appropriate button
**Add to Flop, Add to Turn, Add to River**.

Up to 10 user statistics can be applied.

All applied user statistics will be shown in the corresponding Flop, Turn, River lists.
To remove user statistics from the list, select it with the mouse and click the **Remove** button.

To apply user statistics, click the **Save** button. After the tool is closed, user statistics will be activated immediately.

**Note that statistics are not displayed if no hand hits it. Empty statistics are not displayed!**

### Equity calculation

The program is able to calculate equity in a heads-up spot using both the Monte Carlo approximation method and full enumeration.

Equity preflop is calculated by the **Monte Carlo** method only, and postflop it is possible to choose the calculation method.

Select the calculation method **Monte Carlo** or **Enumeration** by checking the appropriate radio button and click the **Calculate** button.
You can stop calculation in progress by clicking on the radio buttons for selecting the calculation method - Monte Carlo or Enumeration.

### Flop texture filter

This filter is used to generate random flops with a specific structure. With the help of this filter you can conduct a study how certain ranges fall into the boards with the selected texture.

To open the filter, you can press Ctrl + T or open it using the main menu Tools -> Flop Texture filters

All possible flops are being generated at the opening of the filter window. All cards are taken into account except those selected in Dead cards.
Therefore if you will change the Dead cards, you should reopen the Flop texture filter window,
to generate new flops to avoid discrepancy between previously generated flops and new dead cards selection.

The filter consists of several blocks. By combining filters from different blocks, you can generate almost all kinds of flops.

It should be kept in mind that each of the filter blocks A: Groups by paired, B: Groups by suited, C: Groups by broadway
are the partitions of the set of all possible flops. It means:

{Trips}% + {Overpaired}% + {Underpaired}% + {Unpaired}% = 100% and

{Trips}, {Overpaired}, {Underpaired} and {Unpaired} subsets do not contain common elements.

Every possible flop is included in one and only one of the subsets.

Flops are filtered according to the formula:

Filtered flops = (A ∩ B ∩ C) ∩ (D ∪ E ∪ F), if (D ∪ F ∪ E) is nonempty, and

Filtered flops = (A ∩ B ∩ C), if (D ∪ F ∪ E) is empty.

where ∪ - Union of sets and ∩ - Intersection of sets.

In other words, the flop will be filtered only if it is included to the groups A, B, C simultaneously (when (D ∪ F ∪ E) set is empty) or if it is included to the groups A, B, C and (D ∪ F ∪ E) simultaneously (when (D ∪ F ∪ E) set is nonempty).

Block G: Mask is intended for selection of a flop mask. Since the order of 3 flop cards does not matter, you can choose any. In the program, the order of descending rank is selected. Example: if 3d Js Ac were floped, the AcJs3d flop will be generated.

The first column of the G: Mask corresponds to the flop card with the maximum rank, and the third column to the card with the minimum rank. This means that if the maximum rank in the first column is **K**, then **A**, in columns 2 and 3, will not affect the mask.

To activate the filter, select the «Set flop texture filter» check box and click Ok.

If number of filtered flops is equal to total number of possible flops there is nothing to filter and filter will not be activated.

After activating the filter, the letter F on the random flop generation button will be changed to Red color.

### Next card Equity

Sometimes it's useful to check how the Equity will be changed on the next street.
The tool **Next Card Equity** is designed for these purposes.
Select the Main menu -> Command -> Next card Equity or press **Ctrl + E**.

The table shows all possible cards on next street and how they change the Equity.
Cards marked in green increase Equity of the range, and in red - reduce it.

The cards are clickable (when pressed, the corresponding row in the spreadsheet is highlighted)

This tool works only on flop and turn.

### Multiway Equity Calculator

This tool calculates equity multiway using Monte Carlo simulation.

Range fields are recognized automatically as you enter text. If the range is not recognized, the text will appear red.

Ranges can be entered using the buttons in front of the range text line.

You can use the Range Assistant, similar to the Range Assistant from the main program window, import a range from a previously saved file or enter a specific hand.

Files in Monker Solver format are also recognized and in this case the range text field will be empty and marked in light green.
Also It is possible to view the hands of the selected range.

If you click the arrow button at the end of the text field, you can restore previously entered ranges in that line.

If you click on the Next Card button, a window will open in which you can calculate equity for all possible cards of the next street. This tool only works on the flop and turn.

The calculation time in Multiway Equity and Next Card Equty can be changed in the settings.

### Pot odds calculator

Pot odds are the ratio of the amount currently in the pot compared to the amount of money you must pay, in order to make the call.
When deciding whether or not to call a bet, pot odds will help you make the correct decision.

The tool **Pot odds calculator** is designed to calculate pot odds.

Select the Main menu -> Command -> Pot odds calculator or press **Ctrl + C**.

There is simple math behind the calculation of pot odds.

Let
Pot = Pot size

Call = amount of money you must pay, in order to make the call,

Eq = equity of your hand against your opponent's range and

EV = Expected Value of call.

Then

EV = Eq * Pot - (1 - Eq) * Call

EV >= 0

Eq * (Pot + Call) - Call >= 0

Eq >= Call / (Pot + Call)

Thus, the minimum Equity you must have for a non-negative Expected Value in the spot equals **Call / (Pot + Call)**

**Equity%** field has a value **100 * Call / (Pot + Call)**

**Odds** field has a value ** 100 * (Pot / Call) : 1**

### Settings

You can change the default values for the number of Mote Carlo iterations for calculating preflop statistics and the number of iterations for calculating equity.

Default iterations value for calculating preflop statistics is **100 000 (Min 100 000)**.

Default iterations value for calculating equity is **1 000 000 (Min 100 000)**.

It is also possible to set the calculation time for Multiway Equity Calculator and Next Card Equity.

Default calculation time for Multiway Equity Calculator is **60 sec (minimum 10)**

Default calculation time for Next Card Equity is **120 sec (minimum 10)**

If you press Default button you can resore default values.

For the settings to take effect, press OK button.