I know it's possible to efficiently estimate bid/ask spreads from OHLC prices and there are several methods to do so. However I have a data source that contains only bids, asks and close prices, no High, Low or Open prices. Is it possible to do the inverse, estimate the Open, High and Low prices from bids, asks and close prices?
To my knowledge it is not possible to precisely recover the prices. Specifically in your setup, it is not possible to do this for the Open; as recording systems usually measure the Open and the Close as the first, respectively the last traded price, no matter the bid or the ask.
As for approximate estimates, it seems sensible to take an average for the Open and to take the highest bid as the High and the lowest offer as the Low.