We're telling stories. Stories are about change.
....
Sure - You can tell a story about Captain America, or Superman. They're good from the start, and the changes in their stories (usually) are external changes while the heroes try to be true to who they are, even when it is hard.
...
Or, you can tell stories about messed up people becoming better people. Tony Stark was a war profiteer. Peter Parker let a burglar go - and that cost him his Uncle Ben.
So, let us note a couple things. For one - we note that in the story of Tony Stark and Peter Parker, the character change is part of becoming a hero, but it happens fast and early - it is part of the "origin story", not an ongoing struggle. In fact, in Parker's case, it is pretty clear he's not actually a bad kid to start - he lets a crook go in a moment of bad decision that isn't actually how he normally operates.
For another, there's a world of difference between "flawed" and "bad person". Being flawed does not necessarily keep you from being a hero, but being a bad person does.
In the comics, even after he stops selling weapons, Tony Stark is flawed - specifically, he's an alcoholic. His issues lead to bad decisions that hurt people, but it is because he's struggling with things, not because he actually
intends bad things.
If you are bringing a "bad person" into a campaign, and intending a redemption arc, that's awesome. Since it is part of your
intent, there's no reason to not mention this before play. "Folks, so you know, this character may act like a jerk, and make decisions that aren't good for everyone all the time, but I intend that to decrease over time, is that okay?"