I think it is fairly common knowledge that a Basic Strategy player is still at a disadvantage to the house. The purpose of BS is not to get an advantage but to play every hand properly using the given information. Even if you play perfect BS the house still has the advantage. That’s how they make their money. As you've seen, blaying BS only limits your losses.
Although it doesn’t make much of a difference, your simulation used the wrong basic strategy chart. It looks like the chart you used was for six decks, which is slightly different than the strategy for the single-deck game you coded. You can get the proper strategy and house edge for any set of rules from the Basic Strategy Engine on this website:
http://www.blackjackinfo.com/bjbse.php
Also, looking at 400,000 hands is probably not enough to give you very accurate results. I would guess that the standard deviation and standard error of those 400 samples was moderately high. Most people will simulate at least 250 million hands, and often more than a billion, to get more precise results. To be accurate to 2 decimal places takes a lot of samples.
Anyway, good work on coding your own simulator. I’ve written a few and I know how tricky it can be. What RNG did you use?
-Sonny-