The correct options are
B must have been
D ought to be
The context refers to a lovely carpet being bought at some expense. Here, options C and D both are suitable.
Option C "must have been" indicates a matter of fact that has been deduced. As the carpet is lovely, it follows that it must be expensive.
I option D "ought to be" expresses an objective truth.
Option A "should've been" is incorrect as it expresses an obligation. It is not the obligation of an article to be expensive because it is lovely.
Option B "has been" indicates the past perfect and this is incorrect in this context.
Thus, both options C and D are correct.