You are using the actual buy price of 109.51 for your calculation. The problem is that the order_target_percent method can't look into the future and know what price you will actually buy at. The best it can do is use the last price. It looks at the last price and uses that price to calculate the number of shares and then simply places a market order for that many shares.
I added some logging to your code (see attached backtest) to show what is actually happening. Here's the log output...
Last price: 109.465 Account cash 1000000.0. Opened order for 9135 shares at 109.465. Total order 999962.775
As you can see, the method used the last price of 109.465 and ordered 9135 shares to order (what it thought) would be 100% of your portfolio value (rounded down to the nearest share). As you noticed however, the market price went up to 109.51 at the next tick when the order executed and you ended up exceeding the amount in your portfolio. There are several posts here in the forums regarding this. I posted one https://www.quantopian.com/posts/backtest-transactions.
In real trading it's best to always use limit orders and maintain a small cash buffer to account for this. Not a big problem with a margin account but for a cash account you don't want to find yourself with negative cash.