I think your algo is doing exactly what you want it to and actually matches up with portfoliovisualier pretty well. Good work. Nice elegant algo.
One major reason you may see a difference in returns is that the above backtest starts on Jan 1 2012 so the first trades are on Jan 31, 2012. The portfoliovisualier backtest seems to start on Dec 30, 2012. Change the start date of the backtest and the cumulative returns will be 92.3% - that compares well with 92.89% from the other site.
The other major difference is drawdown. The algo looks at daily prices while it appears the other tool only looks at month end prices. The algo sees the max drawdown from a high on 2015-05-21 to a low on 2016-02-11. This is roughly the same as the other, however because of the daily resolution, the intra-month value on 2015-05-21 was a little higher than the month end value, and the 2016-02-11 was a little lower. This caused the drawdown to measure higher.
There are a lot of other reasons why the two probably won't match. The Q algorithm includes commissions and 'slippage' and trades with pricing as of 2 hours after market open. The other tool probably doesn't include any costs and uses daily close prices. The Q algorithm also includes reinvested dividends which the other tool may not. And then there is the issue of fractional shares. Not big in the long term but every bit counts. The Q algorithm only buys and sells whole shares which sometimes leaves some (positive or negative) cash in the portfolio. That cash isn't making any money. The other tool probably just assumes a percentage of the dollar amount is invested.
Anyway, here is the algo starting at an earlier date and it looks pretty similar.