I had the same problem. Because by default will cause the difference between the measured values to exceed 10%.
So try setting this value to a higher number… like 50%.
virtual-wan-link config system
set link-cost-threshold 10 /// change to 50
Set SD WAN rules where traffic is generated. So if the traffic goes only from the branches to the HQ and not vice versa then it is unnecessary to set it at the HQ. Because FortiGate is a state firewall and writes interfaces to the session table where the traffic comes from, the return traffic also leaves the same interface and there is no asymmetric routing.