Real confirmed the signing on Monday, several hours after Diaz had completed a medical.
"I have arrived at a club that I dreamed of playing for as a child," an emotional Diaz said. "I could not have received a better Christmas present than wearing the Real Madrid jersey.
"When I decided that it was time to leave Manchester City, I only put three options on the table.
"I never wanted to go anywhere else, it is impossible to go to a better club. I promise to give 100 per cent from the first day and to pay back the faith you have put in me."
The 19-year-old signing a six-and-a-half-year deal, which includes a clause that Manchester City will receive 15 per cent of any future transfer fee, which will rise to 40 per cent if the buying club is Manchester United.