Define the BitAsset's price (in BTS) as P(t). Define the price of USD (in BTS) as D(t). Define the price (in USD) of a pre-defined weighted basket of goods and services as B_n for natural number n. Let us say the price of that basket is reevaluated every month at time T_n = T_0 + n*(1 month), where T_0 is the time the first price for the basket was published on the blockchain (and the first time that people are allowed to short the BitAsset). Then the formula for P(t) can be given by:
P(t) = ((x)*B_{n-1} + (1-x)*B_{n-2}) * D(t) for T_{n-1} <= t < T_{n} for n >= 2
where x = (t - T_{n-1})/(T_{n} - T_{n-1})
and
P(t) = B_0 * D(t) for T_0 <= t < T_1
So, then the delegates need to provide and vote for a new basket price once a month. The blockchain takes the most recently approved basket price and counts that as the new official basket price B_n at time T_n. If a basket price was not provided, the blockchain takes the last official basket price as the new one. There is some lag time in this process. One month of trading activity needs to happen to generate the goods/services prices that will then be analyzed to get the next basket price, some time needs to pass until this data can be analyzed to get a new basket price for that month period, additional time has to pass before the delegates can agree to put that price into the blockchain and vote to approve it as the next official price, and then finally another month goes by for those changes to actually be reflected (in a linear manner) in the BitAsset price. However, since the basket price change is slow and the conversion from the USD basket price to the BTS basket price uses the fast (1 hour time scale) D(t), the lag should not have a significant effect on the purchasing power of the BitAsset. USD is price stable in the short-term, it is only in the long-term that it loses its value and that is corrected for using this basket price mechanism.
Finally, the delegates need some source from which they can actually get these basket prices. The sources for these prices (and in fact the definition of the weighted basket itself) can change over time to meet the goals of the price stable BitAsset. For now though, I think using something like the CPI from BLS as the source of these basket prices could work pretty well. If it later becomes necessary to switch to a different source or change the basket, there could be mechanisms to smoothly transition (and perhaps even get the majority approval of the change from the BitAsset holders through voting) while avoiding discontinuous jumps in the value of the BitAsset.
Now, in some distant future time when goods and services are priced in this BitAsset and we are in the saturation stage where there isn't any additional fiat currency to transition over to the BitAsset, I am having trouble imagining how this price stable BitAsset system could even work. It gets really confusing.