Yeah, I think you're right, my model doesn't match reality.
I wrote another program, this one takes a normal holdem deck, and deals out every possible pair of holdem hands. If both hands aren't pairs, it throws them out. If they are, it counts them and checks if they're the same pair. It gets the same number as you - 1.36986%
Code:
#!/usr/bin/env python
from collections import defaultdict
import itertools
count = 0
match = 0
deck = [
'2c', '2h', '2s', '2d',
'3c', '3h', '3s', '3d',
'4c', '4h', '4s', '4d',
'5c', '5h', '5s', '5d',
'6c', '6h', '6s', '6d',
'7c', '7h', '7s', '7d',
'8c', '8h', '8s', '8d',
'9c', '9h', '9s', '9d',
'Tc', 'Th', 'Ts', 'Td',
'Jc', 'Jh', 'Js', 'Jd',
'Qc', 'Qh', 'Qs', 'Qd',
'Kc', 'Kh', 'Ks', 'Kd',
'Ac', 'Ah', 'As', 'Ad',
]
for i in itertools.permutations(deck, 4):
if i[0][0] != i[1][0] or i[2][0] != i[3][0]:
continue
count += 1
if i[0][0] == i[2][0]:
match += 1
print match, count, 100.0*match/count