Portal
Sign In Console

Strategy Profiles

Shifts the strategy based on a profile. Strategy profiles define how the API shapes player behavior, allowing you to select different play styles such as tight, loose, aggressive, or passive.

The default profile is GTO. Any request that does not specify a profile will automatically use the GTO baseline. Each strategy profile is defined by how its expected win loss, VPIP, and PFR, and every profile is tied to a specific game format.

Profiles affect only preflop behavior, and only in situations where there is at most one raise.

Profile names

You can find all profiles and statistics in the section Profiles list at the bottom of this document. Profile names are only a representation of their statistical characteristics, and the characteristics are also explained in the section Profiles list. The name notation is a combination of the following characteristics:

  • Tight: Plays few hands and selects starting hands carefully.
  • Loose: Plays many hands with wider ranges.
  • Aggressive: Frequently bets and raises to apply pressure.
  • Passive: Tends to call rather than bet or raise.

Understanding the game formats

Game format notation 3-50: the first number references the number of blinds in the game. The second number shows a percentage relation between the ante and the big blind. Please note that each game format has its own strategy profile list; some profiles might not be available for all game formats.

  • Example:

    • 2-100 means 2 blinds, 100%bb ante (ante is equal to the big blind).
    • 3-50 means 3 blinds, 50%bb ante (ante is half of the big blind).
    • 2-0 means 2 blinds, 0%bb ante (ante is zero).
  • Game formats by game type:

    • MTT games are supported and have a specific format for it: 2-15.
    • All other formats are supported for standard holdem games.

Validation

  • The field request.strategy_profile.target_profile_name must contain a valid profile name.
  • The profile must match an existing config by game format and the requested game must match the game format.
  • The game must be in preflop street with at most one raise so far.

Building the request

The request keeps the same request.hand structure. To select a strategy profile, include request.strategy_profile.target_profile_name using one of the names from the Profile List section. See the example below:

{
  "request_id": "example-01",
  "hand": {(...)},
  "strategy_profile": {
      "target_profile_name": "tight2-aggressive8"
  }
}

Analyzing the response

When the profile is applied, the strategy will contain the actions with the biased results. Also, inside the response.solution_information.strategy_profile_config you can find all the information from the profile processing. It will show all matching information with the Profile List section by matched_profile_name (game format, expected win loss, VPIP and PFR). It also shows the GTO VPIP and PFR for reference, and each action probability from the strategy before and after the profile adjustment.

{
    "request": {},
    "strategy": {<result biased actions based on profile>},
    "solution_information": {
        (...),
        "strategy_profile_config": {
        "expected_win_loss": -25.930000305175781,
        "game_format": "3-50",
        "matched_profile_name": "loose8-aggressive12",
        "profile_pfr": 44,
        "profile_vpip": 44,
        "reference_gto_pfr": 16,
        "reference_gto_vpip": 23,
        "strategy_after_adjust": "fold:0.000000|call:0.000000|allin9900:0.000000|raise2100:0.976671|raise3000:0.023328|raise3100:0.000000|raise4600:0.000000|raise6500:0.000000|raise6400:0.000000|",
        "strategy_before_adjust": "fold:0.000004|call:0.375964|allin9900:0.000000|raise2100:0.609474|raise3000:0.014557|raise3100:0.000000|raise4600:0.000000|raise6500:0.000000|raise6400:0.000000|"
    },
}

Strategy-profile response when no profile is applied

If no profile is applied in the request the response will contain:

{
    "request": {},
    "strategy": {<default results>},
    "solution_information": {
        (...),
        "strategy_profile_config": {
            "game_format": "no_profile_applied",
            "matched_profile_name": "no_profile_applied",
            "strategy_after_adjust": "no_profile_applied",
            "strategy_before_adjust": "no_profile_applied"
        },
    }
}

Standard Holdem Game Example:

Notice that the game is in preflop street with exactly one raise so far. The game is a 3-blind game, since straddle_seat has a valid seat value. Since the big blind is 200 and the ante is 100, the game format is 3-50. If you check the profiles list, you will see that the profile loose8-aggressive12 is available for the game format 3-50. By checking the table you will see that this profile has an expected_win_loss of -25.93 relative to GTO, a 44 VPIP and a 44 PFR.

{
    "request_id": "1",
    "hand": {
        "gameuuid": "hand-example-067",
        "game_type": "nlhe",
        "game_mode_code": "normal",
        "players": [
            { "seat_no": 0, "stack": 10000},
            { "seat_no": 1, "stack": 10000},
            { "seat_no": 2, "stack": 10000},
            { "seat_no": 3, "stack": 10000},
            { "seat_no": 4, "stack": 10000},
            { "seat_no": 5, "stack": 10000},
            { "seat_no": 6, "stack": 10000, "hole_cards": "AhAd"},
            { "seat_no": 7, "stack": 10000}
        ],
        "actions": {
            "entries": [
                { "action": "fold" },
                { "action": "fold" },
                { "action": "raise", "amount": 1000 }
            ]
        },
        "big_blind": 200,
        "ante": 100,
        "dealer_seat": 7,
        "sb_seat": 0,
        "bb_seat": 1,
        "straddle_seat": 2,
        "post_seats": []
    },
    "strategy_profile": {
        "target_profile_name": "loose8-aggressive12"
    }
}

Profiles List

Each profile is defined by its expected win loss, VPIP and PFR deltas relative to the GTO profile.

  • Expected win loss: is a numerical estimate of how much EV (expected value) this profile loses or wins compared to GTO. The magnitude correlates with how exploitable the profile is. Note that GTO will have an expected win loss of close to 0.
  • VPIP: is the percentage of preflop hands that the player plays.
  • PFR: is the percentage of preflop hands that the player raises.

Standard Holdem Game Formats

Game format: 2-0

Game TypeGame FormatProfile NameExpected Win LossVPIPPFR
standard2-0loose7-aggressive8-40.296363
standard2-0loose6-passive2-12.69612
standard2-0loose6-passive4-15.63610
standard2-0loose5-aggressive5-17.134931
standard2-0loose4-aggressive7-26.914242
standard2-0loose4-aggressive6-22.334241
standard2-0loose3-aggressive2-5.233223
standard2-0loose2-passive2-2.72312
standard2-0loose2-passive4-7.56310
standard2-0loose1-aggressive4-15.583030
standard2-0loose1-aggressive3-11.933029
standard2-0loose0-aggressive3-17.642929
standard2-0gto-0.371813
standard2-0tight0-aggressive1-9.031717
standard2-0tight0-aggressive0-5.151716
standard2-0tight1-passive3-0.42131
standard2-0tight2-passive4-6.39120
standard2-0tight3-passive1-1.4975
standard2-0tight4-passive0-8.8066

Game format: 2-50

Game TypeGame FormatProfile NameExpected Win LossVPIPPFR
standard2-50loose9-passive3-11.45633
standard2-50loose9-passive5-19.45631
standard2-50loose9-passive6-25.63630
standard2-50loose8-aggressive1-12.285716
standard2-50loose7-aggressive10-20.765349
standard2-50loose6-aggressive12-24.945252
standard2-50loose6-aggressive11-22.945251
standard2-50loose5-passive3-2.32443
standard2-50loose5-passive5-12.41441
standard2-50loose5-passive6-17.94440
standard2-50loose4-aggressive0-2.204015
standard2-50loose3-aggressive7-11.403935
standard2-50loose2-aggressive9-19.323838
standard2-50loose2-aggressive8-16.563837
standard2-50loose1-passive3-0.49313
standard2-50loose1-passive5-17.48311
standard2-50loose1-passive6-29.36310
standard2-50loose0-aggressive6-19.923030
standard2-50loose0-aggressive5-14.183029
standard2-50loose0-aggressive4-7.603028
standard2-50gto-0.192913
standard2-50tight0-aggressive3-29.842424
standard2-50tight0-aggressive2-7.712423
standard2-50tight1-passive0-7.061810
standard2-50tight2-aggressive1-32.741616
standard2-50tight2-passive4-29.73162
standard2-50tight3-aggressive0-18.051515
standard2-50tight3-passive6-49.65150
standard2-50tight4-passive1-45.0777
standard2-50tight5-passive2-43.2366

Game format: 2-100

Game TypeGame FormatProfile NameExpected Win LossVPIPPFR
standard2-100loose6-passive5-10.94665
standard2-100loose6-passive8-24.64662
standard2-100loose6-passive10-35.52660
standard2-100loose5-aggressive1-13.466213
standard2-100loose4-aggressive11-22.565242
standard2-100loose4-passive8-15.93522
standard2-100loose3-passive6-1.06514
standard2-100loose3-passive10-28.62510
standard2-100loose2-aggressive13-28.384848
standard2-100loose2-aggressive12-25.064847
standard2-100loose2-aggressive0-3.184812
standard2-100loose1-passive6-0.64414
standard2-100loose1-passive8-25.19412
standard2-100loose0-aggressive8-13.784030
standard2-100loose0-passive10-44.22400
standard2-100gto1.593812
standard2-100tight0-aggressive10-26.503636
standard2-100tight0-aggressive9-21.583635
standard2-100tight1-aggressive7-10.663326
standard2-100tight2-aggressive8-31.143030
standard2-100tight3-aggressive5-10.672724
standard2-100tight3-passive0-7.092711
standard2-100tight4-aggressive7-49.722626
standard2-100tight4-aggressive6-28.642625
standard2-100tight4-passive7-38.31263
standard2-100tight5-passive9-78.45251
standard2-100tight6-aggressive4-59.711919
standard2-100tight7-aggressive3-54.551818
standard2-100tight7-aggressive2-30.881817
standard2-100tight8-passive1-82.401010
standard2-100tight9-passive2-80.7699
standard2-100tight10-passive3-76.7188
standard2-100tight11-passive4-94.5177
standard2-100tight11-passive6-66.3074

Game format: 3-0

Game TypeGame FormatProfile NameExpected Win LossVPIPPFR
standard3-0loose10-passive5-41.28661
standard3-0loose10-passive6-47.08660
standard3-0loose9-passive2-32.89646
standard3-0loose8-aggressive6-35.105738
standard3-0loose7-aggressive8-32.294949
standard3-0loose7-aggressive7-29.614948
standard3-0loose6-passive5-17.32411
standard3-0loose6-passive6-21.23410
standard3-0loose5-passive2-9.42406
standard3-0loose4-aggressive3-10.793726
standard3-0loose3-aggressive5-20.473333
standard3-0loose3-aggressive4-14.953332
standard3-0loose2-aggressive1-2.042620
standard3-0loose1-aggressive2-7.572524
standard3-0loose0-aggressive2-16.492424
standard3-0loose0-passive3-2.13245
standard3-0loose0-passive5-8.67241
standard3-0loose0-passive6-11.95240
standard3-0gto-0.071814
standard3-0tight0-aggressive0-20.961717
standard3-0tight1-passive4-0.94144
standard3-0tight2-passive5-11.12131
standard3-0tight2-passive6-18.93130
standard3-0tight3-passive1-2.64107
standard3-0tight4-passive0-19.4999

Game format: 3-50

Game TypeGame FormatProfile NameExpected Win LossVPIPPFR
standard3-50loose11-passive6-41.47612
standard3-50loose11-passive7-52.29611
standard3-50loose10-passive3-31.17607
standard3-50loose9-aggressive7-25.465330
standard3-50loose8-aggressive12-25.934444
standard3-50loose8-aggressive11-22.414443
standard3-50loose8-aggressive10-21.044442
standard3-50loose7-passive6-18.09422
standard3-50loose7-passive8-28.65420
standard3-50loose6-passive4-8.72416
standard3-50loose5-aggressive3-9.753722
standard3-50loose4-aggressive9-18.313232
standard3-50loose4-aggressive8-16.203231
standard3-50loose4-aggressive7-10.303230
standard3-50loose3-passive4-0.23306
standard3-50loose3-passive6-11.09302
standard3-50loose3-passive8-22.04300
standard3-50loose2-aggressive0-1.822819
standard3-50loose1-aggressive6-21.802626
standard3-50loose1-aggressive5-12.562625
standard3-50loose1-aggressive4-7.782624
standard3-50gto1.392316
standard3-50loose0-passive4-0.28236
standard3-50loose0-passive6-20.44232
standard3-50tight0-aggressive1-5.252220
standard3-50tight0-passive8-37.69220
standard3-50tight1-aggressive2-37.692121
standard3-50tight2-passive2-3.611712
standard3-50tight3-passive0-43.641515
standard3-50tight3-passive1-20.011514
standard3-50tight4-passive5-32.71123
standard3-50tight5-passive8-65.19100
standard3-50tight6-passive4-53.6066

MTT

MTT game format: 2-15

Game TypeGame FormatProfile NameExpected Win LossVPIPPFR
mtt2-15loose7-passive2-10.65613
mtt2-15loose7-passive4-17.14611
mtt2-15loose7-passive5-19.54610
mtt2-15loose6-aggressive8-33.895959
mtt2-15loose6-aggressive7-29.705958
mtt2-15loose5-aggressive2-12.415127
mtt2-15loose4-aggressive6-20.744141
mtt2-15loose4-aggressive5-15.444140
mtt2-15loose3-passive3-2.72372
mtt2-15loose3-passive5-8.84370
mtt2-15loose2-aggressive1-3.893521
mtt2-15loose1-aggressive3-7.963129
mtt2-15loose0-aggressive4-16.243030
mtt2-15gto0.292314
mtt2-15tight0-aggressive1-17.402121
mtt2-15tight0-aggressive0-4.052120
mtt2-15tight0-passive3-0.71212
mtt2-15tight0-passive5-10.72210
mtt2-15tight1-passive5-15.60200
mtt2-15tight2-passive1-4.30128
mtt2-15tight3-passive0-15.881111
mtt2-15tight4-passive4-17.8371
mtt2-15tight4-passive5-24.6970

MTT request example

Notice it is a 2-blind game, since straddle_seat is -1. Also, the big blind is 100 and the ante is 15, so the game format is 2-15, matching the MTT game format listed above.

{
  "request_id":"1",
  "hand":{
    "gameuuid":"hand-example-073",
    "game_type":"nlhe",
    "game_mode_code":"mtt",
    "actions":{
        "entries":[]
    },
    "players":[
        {"uid":"34574158", "seat_no":0, "stack":8360},
        {"uid":"34574162", "seat_no":1, "stack":13235},
        {"uid":"34574161", "seat_no":2, "stack":9235,"hole_cards":"AsAd"},
        {"uid":"34574159", "seat_no":3, "stack":10235},
        {"uid":"34574160", "seat_no":4, "stack":7235},
        {"uid":"34574164", "seat_no":5, "stack":10235},
        {"uid":"34574169", "seat_no":6, "stack":11000},
        {"uid":"34574163", "seat_no":7, "stack":11500}
    ],
    "big_blind":100,
    "ante":15,
    "dealer_seat":7,
    "sb_seat":0,
    "bb_seat":1,
    "straddle_seat":-1
  },
  "mtt":{
    "prize_pool":10000.0,
    "total_registered_players":16,
    "current_level":1,
    "players":[
        {"stack":13235, "rank":1},
        {"stack":11500, "rank":2},
        {"stack":11250, "rank":3},
        {"stack":11000, "rank":4},
        {"stack":10500, "rank":5},
        {"stack":10235, "rank":6},
        {"stack":10235, "rank":7},
        {"stack":9235, "rank":8},
        {"stack":9000, "rank":9},
        {"stack":8360, "rank":10},
        {"stack":7235, "rank":11},
        {"stack":7000, "rank":12},
        {"stack":6500, "rank":13}
    ],
    "payout_structure":[
        {"position":1, "prize_value":5000.0},
        {"position":2, "prize_value":2500.0},
        {"position":3, "prize_value":1000.0},
        {"position":4, "prize_value":500.0},
        {"position":5, "prize_value":300.0},
        {"position":6, "prize_value":200.0},
        {"position":7, "prize_value":200.0},
        {"position":8, "prize_value":200.0},
        {"position":9, "prize_value":100.0},
        {"position":10, "prize_value":0.0}
    ],
    "blind_structure":[
        {"level":1, "ante":15, "big_blind":100, "small_blind":50}
    ]
  },
    "strategy_profile": {
        "target_profile_name": "loose7-passive2"
    }
}