I am interested in building an implied volatility surface for a given ETF given a set of option prices for several combinations of (call/put,strike,expiry). I am interested in different ways to arrive at the ETF forward price (assume value date = expiry+2)
The forward price is a function of spot, discount rate, and implied dividend yield. I can easily access spot, and have my own USD discount curve based on SOFR. I am struggling with the dividend yield component.
Current Approach: I back out the synthetic forward rate using the prices of the call and put struck at the closest strike to current spot. From that rate I adjust for spot and my own discount rate for that value date, and that leaves me with the implied dividend yield.
Drawbacks of current approach: The more illiquid the ETF, and/or the longer dated the expiry, the wider the streaming bid/offer for the options. This leads to much more noise in calculating the synthetic forward rate as I am assuming there is no skew in the bid/offer when taking the averages. Secondly, this approach also seems a bit hacky as I am not explicitly sourcing a dividend yield from some other asset, rather I am using my estimate of risk-free rate (which could be well off from market implied rate) and also assuming no other drivers of the synthetic forward price.
Available Data Sources: I am using IBKR to stream the prices, and have access to BBG. BBG provided an "Indicative Yield" data field as well as a BDVD forecast, but I am not sure if this is market implied. It also does not support some relatively liquid and popular ETFs.
Summary: How are you arriving at the forward price of an ETF for pricing purposes? How are you splitting the option implied synthetic forward into its subcomponents?
Edit:
As suggested by AKDemy in the comments, his answer to another question is helpful: