Why do we really split pulse shaping between the transmitter and the receiver?
There must be something wrong in your code because it's quite straightforward to show that the squared frequency response of a raised cosine pulse does not satisfy the Nyquist criterion.

A raised cosine pulse satisfies the Nyquist criterion simply because a raised (co)sine function and an inverted raised (co)sine function add up to a constant:

$$(1+\sin(x))+(1-\sin(x))=2$$

where one of the two expressions corresponds to the rising edge of the frequency response whereas the other corresponds to the falling edge of a shifted version of the frequency response.

Now if you square the frequency response you get the following expression in the region where two shifted spectra overlap:

$$(1+\sin(x))^2+(1-\sin(x))^2=2(1+\sin^2(x))\neq const$$

which is not constant, and which proves that the squared frequency response of a raised-cosine pulse does not correspond to a Nyquist pulse.