ProPokerTools Area Under Graph to Left of Percentage

vinnie

vinnie

Legend
Silver Level
Joined
Apr 12, 2013
Total posts
1,208
Awards
1
US
Chips
50
I don't know if this will help anyone here. But, I was fooling around with it, and it was interesting to me. This is based on stuff I ran across in the "Pot Limit Omaha From Scratch" series. Specifically part 3: http://pl.donkr.com/Articles/plo-from-scratch---part-3-228

It can be useful, in Omaha, to calculate how often you will have enough equity to stack off on the flop, and your average equity in those spots where you do. This can help you determine if calling is profitable. Say you hold KK97:ds and are facing a 4-bet after you 3-bet (let's assume you didn't know to not 3-bet this hand). The player you are against almost certainly has AA. How often will you be able to continue against AA on the flop?

If you raised to 12xbb on the Button after a CO open (a pot sized raise after a pot-sized open), it folds back to the CO who 4-bets to 37.5xbb. You have to call 25.5xbb to see the flop. On the flop, the pot will be 76.5xbb and your stack will be 62.5xbb. Getting 2.224:1 you will have to stack off with 31% equity or more.

The graph of our equity on the flop looks like this.
1oIEhGO.png


You can visually see we have 31% or more about 50% of the time. We can use that to find our average equity. The article I posted gives you some strategies for using this to calculate our EV in this spot. I am not going to recreate it. You can read that. In short, the EV is:

EV = ( 1 - %_of_flops)(cost) + (%_of_flops)((average_equity *201.5) - 100)
EV = (1 - 50.52%)(-37.5) + (50.52%)((57.76% * 201.5) - 100)
EV = -18.555 + 8.278
EV = -10.277xbb

The trick is getting those numbers (50.52% and 57.76%). We can estimate them by looking and breaking the graph into little segments. Then adding up the segments and doing a little math. Or, you can open up a javascript console in your browser and use the following to do it for you.

Code:
/*
 * save the raw data as
 * var graph = ["0","1", ..., "3"]
 * 
 * It should be noted that the raw data is usually 100 buckets long representing 0-1%, 1-2%, ..., 99-100%
 * so the equity in each bucket is roughtly 0.5%, 1.5%, ..., 99.5%
 * This assumption is represented in the below.
 */

function sum_Graph() {
	var sum = 0;
	for(var n = 0; n < graph.length; n++) {
		sum += graph[n] * 1;
	}
	return sum;

}

function UnderGraph( min_percentage ) {
	var total_graph = sum_Graph();
	var amount_under = 0;
	var weight_under = 0.0;
	var offset = (100 / graph.length) / 2;
	for( var n = min_percentage; n < graph.length; n++) {
		weight_under += (n + offset) * graph[n] / total_graph;
		amount_under += graph[n] * 1;
	}
	console.log( "Total points: " + total_graph );
	console.log( "Points over %: " + amount_under );
	console.log( "Percentage of flops: " + 100 * amount_under / total_graph);
	console.log( "Weighted % under: " + weight_under );
	console.log( "Weighted equity: " + weight_under / (amount_under / total_graph) );
}

Then, just copy the raw data from below your graph on propokertools into a new variable called graph. Call UnderGraph( ) with your min-percentage, and it works.

Example:
Code:
var graph = ["144","28","102","120","117","85","96","91","128","136","91","126","142","149","244","230","200","195","267","285","184","156","149","139","157","148","158","186","238","266","191","179","196","195","171","136","127","102","76","104","103","108","101","134","159","140","119","95","77","81","59","66","65","94","91","97","81","66","48","75","54","37","58","57","59","47","34","35","21","21","21","19","27","21","32","40","62","36","29","12","20","19","28","38","51","72","99","75","140","98","164","69","28","31","24","61","79","47","2","40"]

UnderGraph(31)

And it will spit out:
Total points: 10000
Points over %: 5052
Percentage of flops: 50.52
Weighted % under: 29.179300000000012
Weighted equity: 57.75791765637374

And, there are your numbers. I get slightly different numbers from the PLO From Scratch article, but essentially identical within a reasonable margin of error. And, it speeds up the hardest part of this process. PPT already provides the data needed to do this calculation. This javascript just makes use of it.

Note: I am sure there is a way to make this a little extension onto your browser and have it automatically read the raw data and calculate this given a number. But, I haven't invested the time to learn how to write extensions. This method is crude, but workable for me.
 
vinnie

vinnie

Legend
Silver Level
Joined
Apr 12, 2013
Total posts
1,208
Awards
1
US
Chips
50
I made it almost automatic now.

You still need to open a javascript console when using the propokertools website, and then copy and paste this into it. After that, you generate a graph, view the raw data, and can type "UnderGraph(48)" (replacing 48 with your cutoff point) and it will do the rest for you. Once you have this in place, you can rapidly check a bunch of different scenarios.

Code:
/*
 * You need to create the graph and view the raw data for this to work correctly.
 */

var graph;

function get_raw() {
	var x = document.getElementsByClassName("inlineSimulationData");
	var raw = JSON.parse(x[0].defaultValue);
	graph = raw.results[0][1];
	if( 100 != graph.length ) {
		console.log("ERROR: Raw graph data likely incorrect");
	}
}


function sum_Graph() {
	var sum = 0;
	for(var n = 0; n < graph.length; n++) {
		sum += graph[n] * 1;
	}
	return sum;

}

function UnderGraph( min_percentage ) {
	get_raw();
	var total_graph = sum_Graph();
	var amount_under = 0;
	var weight_under = 0.0;
	var offset = (100 / graph.length) / 2;
	for( var n = min_percentage; n < graph.length; n++) {
		weight_under += (n + offset) * graph[n] / total_graph;
		amount_under += graph[n] * 1;
	}
	console.log( "Total points: " + total_graph );
	console.log( "Points over %: " + amount_under );
	console.log( "Percentage of flops: " + 100 * amount_under / total_graph);
	console.log( "Weighted % under: " + weight_under );
	console.log( "Weighted equity: " + weight_under / (amount_under / total_graph) );
}

I did look into making an extension, for Chrome. It looks trivially easy, actually. I might contain this beast in one. But, I would rather play poker most of the time. I only played with it this morning because both mega-fish at my 25cPLO table quit on me.
 
A

AviCKter

Visionary
Silver Level
Joined
Aug 14, 2013
Total posts
781
Chips
0
You Devil!

You :evil:, you!
Every time, I go through one of your posts I get the urge to learn PLO.
But then I remember, I'm suc*ing at NLHE and all my urges go away.
:sheep:
 
Top