Matchstick Men

Roy Waller (Nicolas Cage) is a con artist residing in Los Angeles who has severe obsessive-compulsive disorder. Alongside his partner and protÃ©gÃ© Frank Mercer (Sam Rockwell), Roy operates a fake lottery, selling overpriced water filtration systems to unsuspecting customers. After Roy experiences a violent panic attack, Frank suggests he see a psychiatrist, Dr. Harris Klein (Bruce Altman).
Klein provides Roy with medication, and in therapy has Roy recall his past relationship with his ex-wife, Heather (Melora Walters), who was pregnant during the time of the divorce. At Roy's behest, Klein informs Roy that he called Heather and found out that Roy has a 14-year-old daughter, Angela (Alison Lohman). Roy and Angela meet, and her youthful energy rejuvenates him. Roy thus agrees to work with Frank on a long-term con: their target is Chuck Frechette (Bruce McGill), an arrogant businessman whom the duo decides to con with the Pigeon drop.
One night, Angela unexpectedly arrives at Roy's house, saying that she has had a fight with her mother, and decides to stay for the weekend before returning to school. She explores his belongings and causes him to rethink his life, which he mentions during therapy with Klein. Angela returns home late one night, leading to an argument between the two. During dinner, Roy admits that he is a con artist and reluctantly agrees to teach Angela a con. The two of them go to a local laundromat and con an older woman into believing she has won the lottery, and she shares half of her expected winnings with Angela; however, Roy then forces Angela to return the money.
Roy goes bowling with Angela but is interrupted when Frank reveals that Chuck's flight to the Caymans has been updated to that day instead of Friday as planned. With little time left, Roy reluctantly decides to let Angela play the part of distracting Chuck midway through the con; however, after the con is finished, Chuck realizes what has happened and chases the two into the parking lot before they escape. Roy then learns that Angela was arrested a year ago, and asks that she stop calling him.
Without Angela, Roy's myriad phobias resurface, and during another panic attack, he ultimately learns that the medication given to him by Klein is a placebo, proving that he doesn't actually need his pills to be happy. He decides that he needs Angela in his life but that he would have to change his lifestyle, much to Frank's disappointment. Roy and Angela return from dinner one night to find Chuck waiting for them with a gun, alongside a badly beaten Frank. Angela shoots Chuck and Roy sends her off with Frank into hiding until the matter can be sorted out. As Roy prepares to take care of Chuck's body, Chuck suddenly springs to life and knocks Roy unconscious.
Roy awakens in a hospital, where the police inform him that Chuck eventually died from the gunshot and Frank and Angela have disappeared. Klein appears and Roy gives him the password to his bank account, ordering him to give the money to Angela when she is found. Later, Roy awakens to find that the "police" have disappeared, his "hospital room" is actually a freight container on the roof of a parking garage, "Dr. Klein's" office is vacant, and essentially all of his money has been taken. As he begins to realize that Frank pulled a con on him, Roy drives over to Heather's (whom he hasn't seen for years) looking for Angela. While speaking with Heather, Roy learns the truth: Heather miscarried their child. There is no "Angela": the young girl he thought was his child was actually Frank's accomplice.
One year later, Roy has become a salesman at a local carpet store, which Angela and her boyfriend one day wander into. Roy confronts Angela but ultimately forgives her, realizing that he is much happier as an honest man. Angela reveals that she did not receive her fair share of the cut from Frank, and that it was the only con she ever pulled. Angela and her boyfriend depart and Roy returns home to his new wife Kathy, who is now pregnant with his child.

Question: Who pulled the con on Roy?
Answer: Frank