Back to Hand Evaluation Articles

Binky Points: Optimal Evaluation


In the crudest forms of bidding, the goal is to add the value of your hand to the value of partner's hand and determine what you can make. You make these evaluations independently, sum them together, and that directs you to the appropriate level.

That is, we seek to find a valuation, v, such that:

corresponds to the number of tricks north and south can take.


As with my prior evaluation article, we can seperate out notrump and suit evaluations, as they are quite different. We can also examine offense and defense, (which is fine, but offense is the most interesting, from a bidding point of view.)

Now, let's say we have a valuation v which satisfies the property that v(south)+v(north) is a good estimate of the number of tricks available to the north and south pair. What more can we say about this?

Well, if Tr(south) is the number of tricks south expects to take, total, on average, just looking at his hand, then we'd expect:

Tr(south)=Average(north,v(south)+v(north)) =
    v(south) + Average(v(north))
where the average is taken over all north hands which are disjoint from the south hand.

But Tr is just the values from my prior article. Let's say we restrict ourselves to valuations v which have the following form:

v(hand)=vp(pattern(hand)) + 
      vh(spades(hand)) + vh(hearts(hand)) +
      vh(diamonds(hand)) + vh(clubs(hand))
So we assign a value vp() for each pattern from "13-0-0-0" to "4-3-3-3."

We also assign values vh() to each suit holding, from void to AKQJT to 13-card suits.

If v is of this form - what I called in my previous article a shape-adjusted holding evaluators - then we get that the Tr() function also satisfies the rule:

Tr(hand)=Trp(pattern(hand)) + 
      Trh(spades(hand)) + Trh(hearts(hand)) +
      Trh(diamonds(hand)) + Trh(clubs(hand))
   Trp(pattern(hand))= vp(pattern(hand))+Average(vp(pattern(pard)))

   Trh(holding) = vh(holding) + Average(vh(pardHolding))

Determining v from Tr

The data from the original article is just these Trp and Trh values - that is, we have already values for these functions. Can we then work backwards and construct vp() and vh()?

Yes, we can.

Think of the values of vp() and Trp() as vectors:

VP = [ vp(4-3-3-3), vp(4-4-3-2), vp(4-4-4-1), ... , vp(13-0-0-0)]
TRP = [ Trp(4-3-3-3), Trp(4-4-3-2), Trp(4-4-4-1), ... , Trp(13-0-0-0)]
Then the Avg(vp(partner)) can be expressed as:
VP * A
where A is a relatively simple-to-determine 39x39 probability array (since there are 39 hand patterns.)

Then TRP = VP + VP*A = VP * (I+A) and determining VP amounts to inverting (I+A). If we invert this matrix, we get:

VP = TRP * (I+A)^(-1).
For holdings, we can do a similar computation. If we have 8192 holdings, we have to invert an 8192x8192 matrix, which we don't want to do. But if, instead, we treat cards smaller than 9 as "spots," then we get vectors of size 512, and the Perl package I used to invert matrices was able to invert the 512x512 matrix in a few hours.

[Note: That was on a 2000 model computer. A 2008 recompute of this inverse took under four minutes.]

The resulting values for v(), for offense, defense, notrump and suit, can be found in: and

Those are new values calculated in 2008 from a larger double-dummy dataset. The original data can be seen in patterns.txt and holdings.txt. There are tiny differences - a couple hundredths of a trick here and there, but big differences in the value of wild shapes and very long holdings (9+ card suits.)

Notes on the values

You'll notice that the suit offense value given for the 13-0-0-0 shape is only about 7.68, although you are certain of 13 tricks. Why is that? Because partner always has a void in your suit, so his (shape) value is going to be 5.116, minimum. So the 7.68 automatically takes into account partner's known void, avoiding "double-counting."

Similarly for any long suits, this evaluator takes into account that partner might be holding shortness in the suit and be counting that shortness as a value.

Someone emailed me a pair of hands and asked for an evaluation of the notrump prospects of the two hands:

   KJT Axx KQx AJTx

   A9xx Kxx Axx K9x
My evaluator comes up with slightly more than 13(!) But, since the data driving this evaluator is double-dummy data, that's not too surprising, because double-dummy, I can finesse both black queens, so I can take four spades, four clubs, three diamonds and two hearts. That's the risk of using double-dummy data. Even without the nice nines and tens, my evaluator says these two hands are worth 12.5 tricks. That seems a bit rich - how often can I make 12 tricks, even double dummy?

Still, Binky Points are surprisingly accurate at guessing the appropriate level for a deal.

Suit Values: Losing Tricks, Sort Of

In suit contracts, the maximum and minimum values for any suit length give us a sense of the total value of cards:

     Worst       Best       Difference
         x          A      1.33 Tricks
        xx         AK      2.42 Tricks
       xxx        AKQ      3.06 Tricks
      xxxx       AKQJ      3.30 Tricks
     xxxxx      AKQJT      3.39 Tricks
    xxxxxx     AKQJT9      3.38 Tricks
   xxxxxxx    AKQJT9x      3.17 Tricks

This table is interesting, but I'm not sure what to make of it. It looks somewhat like losers, but the difference in tricks is a bit more than you'd expect.

Another table for suit contracts:

     Worst        Ace       Difference
         x          A      1.33 Tricks
        xx         Ax      1.53 Tricks
       xxx        Axx      1.61 Tricks
      xxxx       Axxx      1.61 Tricks
     xxxxx      Axxxx      1.59 Tricks
    xxxxxx     Axxxxx      1.51 Tricks

Ace with other honors:

     Lower     Higher       Difference
        Qx         AQ       1.64 Tricks
       Qxx        AQx       1.70 Tricks
      Qxxx       AQxx       1.69 Tricks
     Qxxxx      AQxxx       1.68 Tricks
    Qxxxxx     AQxxxx       1.63 Tricks

        Kx         AK       1.47 Tricks
       Kxx        AKx       1.57 Tricks
      Kxxx       AKxx       1.59 Tricks
     Kxxxx      AKxxx       1.60 Tricks
    Kxxxxx     AKxxxx       1.58 Tricks

       KQx        AKQ       1.44 Tricks
      KQxx       AKQx       1.51 Tricks
     KQxxx      AKQxx       1.55 Tricks
    KQxxxx     AKQxxx       1.53 Tricks

       KJx        AKJ       1.48 Tricks
      KJxx       AKJx       1.52 Tricks
     KJxxx      AKJxx       1.56 Tricks
    KJxxxx     AKJxxx       1.55 Tricks

       QJx        AQJ       1.66 Tricks
      QJxx       AQJx       1.70 Tricks
     QJxxx      AQJxx       1.67 Tricks
    QJxxxx     AQJxxx       1.60 Tricks

       KTx        AKT       1.50 Tricks
      KTxx       AKTx       1.56 Tricks
     KTxxx      AKTxx       1.58 Tricks
    KTxxxx     AKTxxx       1.57 Tricks

So, we see the value of an ace is highly variable, anywhere from 1.33 (in the case of a stiff) to 1.7 tricks. If we look above at teh difference between xxxx and AKQJ, we see that ten points is roughly 10/3 a trick, or in other words, one standard Work Point (Ace=4, King=3, Queen=2, Jack=1) is roughly a third of a trick.

Corresponding to Work Point

As noted above, a standard Work Point is worth about a third of a trick in suit contract.

In notrump, the value of a standard Work Point is worth very close to a half a trick.

This correspondence is actually quite nice - it can be used to come up with a different definition of 'point' that is close to Work Point Count, but more discriminating.

comments powered by Disqus
Copyright 1997-2005.
Thomas Andrews (