How do CFD / spread trading brokers price their cash indices?

CFD and spread bet brokers show a “cash” price for various indices. You may have 5 brokers all with a slightly different price, but they all closely track the price of the underlying index. My question is: what *exactly* is this price based on?

For example, take the S&P 500 index. During a busy period, the price a CFD broker quotes can update 10 times per second. So the broker's price needs to react very fast to any change, to ensure its own price is in step with that of the underlying index. What external price do you suppose the broker is tracking to tell it when to move the price up or down, could it be all, none, or some of the following:

  • The S&P 500 index. This itself isn’t tradeable, and the data provider I looked at (IQFEED) only refreshed that price every second. Perhaps other data providers refresh the official cash price more often, and brokers use that to help drive their own cash price… I'm not sure.
  • The S&P 500 futures market price. This is of course heavily traded and prices refresh multiple times per second, BUT I’m guessing the futures price is driven by the cash price a lot more than vice versa, so I'm skeptical they use that.
  • ETFs? Could brokers be tracking ETFs and using movements in the ETF price as the primary signal for when to move the price of their equivalent cash index?