Tuesday, March 16, 2010

Stoxtrader Nick Grudzien cheating scandal updates


Update: We have developed a script (it is at the bottom of this post) that allows uses to analyze Holdem Manager Data with set criteria.  We should be able to modify it as needed.

Update: Stoxpoker released this statement on 2+2

"In the last few days various allegations have been made that I have played on multiple accounts on FTP and Stars and that by doing so I have violated the terms and conditions of the sites and also cheated in ways including colluding. The relevant facts are:

 

(1) At no point have I ever colluded. This is a categorical denial without exceptions. 

(2) I played on a single account on FTP and a single account on PokerStars for the previous four year period through January 2010. The only exception to this was when I made instructional videos.

(3) In January 2010 I created one new account on FTP and one new account on Stars. I played on these accounts for roughly one month and have not used them since. During that time these were the only accounts on which I played at these sites. I have not played poker since March 7th, and will not play again until I receive communication from a pokersite that I am able to do so.

Since I have admitted to breaking the TOS of stars and ftp I don't plan on playing any poker until I receive communication from the pokersites that it is ok to do so, and at that time I can share the details of any information I recieve from them. FTP and pokerstars are aware of the allegations and I have encouraged them to do a full and thorough investigation to confirm that what I say is completely accurate. I would like to have the opportunity to continue to be a contributing member of both stoxpoker and 2+2, I ask for your patience while these matters are sorted out over the next few days."

Mason Malmuth within minutes of the post temporarily suspended their relationship with both Stoxpoker and Cardrunners.  It's pretty clear at this point that some of the accounts in question were colluding (though after many emails and an investigation the online poker sites have not seen it this way).  I would expect that more and better information will be coming out soon but it should be clear to almost everyone that if someone stood to lose their business and bring down all of their friends that the simplest solution would be to get everything out in the open as it is really the only option at this point.

 

We developed this script as a means of addressing the colluding issues involved. While there is a lot of data it is the analysis of that data that was becoming difficult. We can add additional parameters as needed. On a personal note I would like to say that I hope Nick did not collude and I hope this analysis exonerates him. To tarnish the reputation of an innocent person is not something I want to be party to. That said though, this should help both sides to see things a bit clearer.

(text from original post)

 

Let's be honest if you are playing High Stakes right now you are being cheated.  If people are not colluding against you they are buying hand histories or multi-accounting.  We are talking about big money so the incentive for people to gain an edge is huge.  Which brings us to the current allegations involving Nick Grudzien (stoxtrader on stoxpoker.com).  Nick wrote one of the defining books for limit hold em (published by 2+2 not so ironically), while it is apparently up for debate whether Nick could still beat those games or not now that book and stoxpoker.com has cemented him as a key figure in poker training.  

The accusations and a few facts

Yesterday a post showed up on 2+2, apparently by a banned user, making various allegations regarding shady activity and Nick.  That post was deleted because they have a policy to delete content from banned users.  Then David Peat (Viffer online, took up the cause, he will be appearing on Donkdown Radio tomorrow night to discuss) because he thought the allegations were serious enough to warrant inspection by the high stakes online community.  The first of which is that Nick was involved in collusion (which Nick flatly denies) and the other involves him multi-accounting.  He seems to admit that he made more than two accounts but he says that he had a personal reason for doing so and described it as "serious".  Viffer was later put on a 3 day ban for re-posting the original contraband post twice.  The two biggest allegations as I recall from memory was that Stoxpoker.com (and therefore Cardrunners.com) would create accounts specifically to be paid for free training from Full Tilt Poker (stox and cardrunners have a site called trulyfreepokertraining.com that offers free training in exchange for time at the FTP tables), this allegation is obviously hard to prove and stoxpoker denies it.  The other allegation was that Cardrunners owner Taylor Caby sat in a game where a friend was losing to mix up the play and gain an edge on an unsuspecting opponent.  Both are likely the reasons the posts were removed because they are hard to prove and appear to be smears in an attempt to gain shock and awe from the poker community.

Even "kind of" cheating is cheating

Still, at the base of these allegations is yet another multi-accounting problem within the stoxpoker and cardrunners family.  Both of which benefit greatly from their sponsorship from Full Tilt Poker.  You might also recall that Brian Hastings who beat Isildur1 for 4.2 million dollars in one day, was reprimanded from FTP for apparently using a shared database that Brian Townsend had collected.  

So the scoreboard looks like this:

Stoxtrader admits to multi-accounting (which violate the terms and conditions of Full Tilt Poker)

Brian Townsend multi-accounted and used a shared database (two violations)

Brian Hastings used a shared database.

Representing others holds you to a higher standard

All of these allegations are cheating to gain an edge.  While we all wish it did not happen daily sadly it does and often.  The real difference here though is the edge is being gained by representatives of Full Tilt Poker and the training sites the represent.  Which is about the dumbest thing someone can do since the money derived from these companies often can supercede the money they can make at poker.  So any cheating allegation jeopardizes that money.  Also creating training material puts a big bullseye on your ass from players because it makes potential opponents better but also from their competition who do not typically have online poker sponsorships that pay for their users memberships.  So cheating of any sort is flat out stupid because many people have a big incentive to bust you.

 

I talk to Taylor Caby once or twice a week and I am friendly with Brian Hastings.  So I say this to them as a friend, if you need to be involved with marginal bullshit get out of the training business or at the very least drop your deal with Full Tilt Poker.  This is no longer 2005 when a lot of this stuff was being figured out, fact is that your opponents are in a better position than you to gain an edge in the games you play because there are few repercussions that will come back on them if they multi account or share databases.  Every time something like this comes up it eats at the core of what little integrity poker has left.  

#
                                                                          # (c) Bluff.com / Bluffware, LLC 2010 all rights reserved
                                                                          #
                                                                          # "Then you will know the truth, and the truth will set you free" -- John 8:32
                                                                          #
                                                                          # dependencies:
                                                                          #   Ruby (developed on Windows version) http://www.ruby-lang.org/en/downloads/
                                                                          #   PostgresPR "gem install postgres-pr" -- http://raa.ruby-lang.org/project/postgres-pr/
                                                                          
                                                                          require 'postgres-pr/connection'
                                                                          
                                                                          # CHANGE THESE TO SUIT
                                                                          
                                                                          DB_NAME = 'HoldemManager'
                                                                          USER = 'postgres'
                                                                          PLAYER_B = '40_putts'
                                                                          PLAYER_A = 'kinetica'
                                                                          
                                                                          c = PostgresPR::Connection.new(DB_NAME, USER)
                                                                          playera_id = c.query('SELECT player_id from players where playername = \'' + PLAYER_A + '\'').rows[0][0]
                                                                          playerb_id = c.query('SELECT player_id from players where playername = \'' + PLAYER_B + '\'').rows[0][0]
                                                                          
                                                                          puts PLAYER_A + " has id: " + playera_id
                                                                          puts PLAYER_B + " has id: " + playerb_id
                                                                          
                                                                          
                                                                          # get all hands which Player A and Player B both played in
                                                                          mutual_hands = c.query("SELECT pha.pokerhand_id, pha.preflopaction_id, pha.didvpip, pha.didpfr, phb.preflopaction_id, phb.didvpip, phb.didpfr FROM playerhandscashkeycolumns pha, playerhandscashkeycolumns phb WHERE pha.player_id = #{playera_id} AND phb.player_id = #{playerb_id} AND pha.pokerhand_id = phb.pokerhand_id").rows
                                                                          
                                                                          
                                                                          # indexes to returned row array
                                                                          PREFLOPACTION_FACING_A = 1
                                                                          PREFLOPACTION_FACING_B = 4
                                                                          PLAYER_A_PFR = 3
                                                                          PLAYER_B_PFR = 6
                                                                          PLAYER_B_VPIP = 5
                                                                          
                                                                          # see http://forums.holdemmanager.com/custom-reports/4168-cygnus-project-playerhandscashkeycolumns-table.html
                                                                          UNRAISED_POT = '0'
                                                                          ONE_RAISER = '3'
                                                                          RAISER_PLUS_CALLERS = '4'
                                                                          
                                                                          
                                                                          analyzed_hands = 0
                                                                          
                                                                          playerb_folds = 0
                                                                          playerb_calls = 0
                                                                          playerb_reraises = 0
                                                                          
                                                                          
                                                                          mutual_hand_ids = []
                                                                          
                                                                          mutual_hands.each do |h|
                                                                            mutual_hand_ids << h[0]
                                                                            if ((h[PREFLOPACTION_FACING_A] == UNRAISED_POT) and
                                                                                (h[PLAYER_A_PFR] == 't') and
                                                                                ((h[PREFLOPACTION_FACING_B] == ONE_RAISER) or (h[PREFLOPACTION_FACING_B] == RAISER_PLUS_CALLERS))) then
                                                                              analyzed_hands += 1
                                                                          
                                                                              if (h[PLAYER_B_PFR] == 't') then
                                                                                playerb_reraises += 1
                                                                              elsif (h[PLAYER_B_VPIP] == 't')
                                                                                playerb_calls += 1
                                                                              else
                                                                                playerb_folds += 1
                                                                              end
                                                                          
                                                                            end
                                                                          end
                                                                          
                                                                          fold_pct = format("%.2f", playerb_folds.to_f / analyzed_hands.to_f * 100)
                                                                          call_pct = format("%.2f", playerb_calls.to_f / analyzed_hands.to_f * 100)
                                                                          raise_pct = format("%.2f", playerb_reraises.to_f / analyzed_hands.to_f * 100)
                                                                          
                                                                          puts "#{PLAYER_B} played #{mutual_hands.length} hands with #{PLAYER_A}"
                                                                          puts "In #{analyzed_hands} of these hands, #{PLAYER_A} opened an unraised pot with a raise which was folded or called around to #{PLAYER_B}"
                                                                          puts "#{PLAYER_B} acted accordingly:"
                                                                          puts "  Folded: #{playerb_folds} times (#{fold_pct}%)"
                                                                          puts "  Called: #{playerb_calls} times (#{call_pct}%)"
                                                                          puts "  Raised: #{playerb_reraises} times (#{raise_pct}%)"
                                                                          
                                                                          # compare with typical results (everyone else)
                                                                          other_hands = c.query("SELECT pokerhand_id, preflopaction_id, didvpip, didpfr FROM playerhandscashkeycolumns WHERE player_id = #{playerb_id} AND (preflopaction_id = #{ONE_RAISER} or preflopaction_id = #{RAISER_PLUS_CALLERS})").rows
                                                                          
                                                                          playerb_typical_calls = 0
                                                                          playerb_typical_reraises = 0
                                                                          playerb_typical_folds = 0
                                                                          
                                                                          # filtered hands is scrubbed of the mutual hands identified earlier
                                                                          filtered_hands = other_hands.select { |r| !mutual_hand_ids.include?(r[0]) }
                                                                          filtered_hands.each do |h|
                                                                            if (h[3] == 't') then
                                                                              playerb_typical_reraises += 1
                                                                            elsif (h[2] == 't')
                                                                              playerb_typical_calls += 1
                                                                            else
                                                                              playerb_typical_folds += 1
                                                                            end
                                                                          end
                                                                          
                                                                          fold_pct = format("%.2f", playerb_typical_folds.to_f / filtered_hands.length.to_f * 100)
                                                                          call_pct = format("%.2f", playerb_typical_calls.to_f / filtered_hands.length.to_f * 100)
                                                                          raise_pct = format("%.2f", playerb_typical_reraises.to_f / filtered_hands.length.to_f * 100)
                                                                          
                                                                          puts "#{PLAYER_B} played #{filtered_hands.length} hands without #{PLAYER_A}"
                                                                          puts "Some player opened for a raise which was folded or called around to #{PLAYER_B}"
                                                                          puts "#{PLAYER_B}'s typical actions are:"
                                                                          puts "  Folded: #{playerb_typical_folds} times (#{fold_pct}%)"
                                                                          puts "  Called: #{playerb_typical_calls} times (#{call_pct}%)"
                                                                          puts "  Raised: #{playerb_typical_reraises} times (#{raise_pct}%)"
                                               


Tags: stoxpoker   cardrunners   nick   grudzien  

10 responses to Stoxtrader Nick Grudzien cheating scandal updates

HolyCow says:
Saturday, April 24, 2010

Having lived in Las Vegas for a number of years, hanging around the WSOP tourneys at the old HorseShoe back when, Bennie then Jack and finally his Sister had the reins, and still the Home of The Great, "Johnny Moss",you learn a smidgen of a thing or two and surely, I can never learn it all.

Those named above are ledgendary and good people. I liked them all, they were and I'd just bet those still living are still good honest people.

But for the most part everyone wants to be slick and those slicker than the rest are called sharks.

So calling player data bases for what they are,ie:crooked most horse players call it "past posting" the exception and exclusive power of money and information dissimination for a price means your playing against a stacked deck and the outcome was decided before the cards were dealt, it is a good thing their servers are located offshore because the Secret Service would have closed their doors along time ago, and these slick hustlers that play astounding poker on line are Con-men or soon to be located at a prison not so near you, hell play on NLOP pay the membership monthly and record the hands on their offered TV Channel. They have a few prizes that are pretty good as long as you don't get a substitution as I did for a watch I won.

Just don't play online for your real hardearned green backs, this is one instance that Our U.S. Federal Government has taken the correct posture for enforcement just to keep your taxable money's with in reach.


Beanie says:
Wednesday, March 17, 2010

I just had that very conversation with a friend of mine looking for a new site. It reminds me of the old "where is the eye in the sky pointed", it is pointed at the dealer. FTP is not alone on this one BTW but obviously they are front and center on this one. It seems like for most sites if it messes with their money they fix it. If it messes with our money there is little they can do. There are so many things about online poker that should be more transparent and aren't. It's very annoying.


Fox
Wednesday, March 17, 2010

Some of the blame here must rest on Full Tilt. They do very little to prevent this sort of thing, they do basically nothing when Hastings takes $4 million from Isildur1 while breaking the rules, and they continue to associate themselves with these players and allow them to get away with murder at times. Eventually this will come back to bite them in the ass when people start to wonder about the safety of their site and whether they are being cheated by playing there.


Beanie says:
Wednesday, March 17, 2010

It's not the only reason but this is why I don't venture above 5-10 too much. In fact, I think the limits online are way too high, it basically encourages people to be underhanded. I still think that the biggest issue here isn't that he multi-accounted and possibly worse, it's that he did so as the figurehead of his company while taking money from FTP. Even if he didn't collude IMO the mult-accounting is enough for condemnation. When you represent something you need to have a higher standard for your actions.


Trifen22 says:
Wednesday, March 17, 2010

very intresting read.

I totally agree with Ray :-)


Beanie says:
Wednesday, March 17, 2010

I could have posted the original post by Viffer but if you honestly look at it most of it was just stuff to embarass people. Frankly I think that detracts from the real discussion at hand (though I don't mind you linking to it for people that are curious).


Conan776
Wednesday, March 17, 2010

Oops, I thought that would be a hotlink, lemme try again:

Viffer banned from 2+2


Conan776
Wednesday, March 17, 2010

I have a .jpg on my blog (linked above) of the deleted post, if anyone is curious.


Beanie says:
Wednesday, March 17, 2010

I doubt it since you would be making them more money.


PRESUM3VIL says:
Tuesday, March 16, 2010

Nice read Beanie, the high stakes community is a different animal then us poor micro-mid stake players. The BS that goes on with multi-accounts just because they play nose bleed stakes and pay a lot of rake. They tend to get away with bending the rules that average players would have accounts frozen/locked for breaking the TOS.

Thanks for reporting on this. Hell FT won't even retrack my account but I'm sure if I was a high stakes player they would accommodate my wishes.


Download and run Bluffware to have your hands automatically uploaded to your personal Bluff.com database.

Watch this video to see how.

Recent Player Blogs