For the top schools, including “Stanford, Princeton, Yale, and Caltech”, we really can only split students roughly into two groups (with many students sort of in the middle). There are students with superb stats who have a chance, and students who really do not have a chance.
You have superb stats. You have a chance. However, these schools are high reaches for everyone.
By the way, I was a math major with an informal computer science minor. There are a lot of schools that have great programs in this area. The ones you mentioned do, but so do quite a few others.
I think that it is worth your sending in an application to these schools when the time comes. However, you also need to find two solid safeties that you would be happy to attend and that you know that you will be able to afford.
You also should think quite a bit about what you want in a university, and you should visit a few schools. You also need to find out what your budget is and run the NPCs unless you and your parents are fine with your being full pay.