Dear All!
I’ve seen that the spread used to calculate COLVA is different from the spread in the netting Agreement:
Parameter “CollateralCompoundingSpreadReceive/CollateralCompoundingSpreadPay” from netting.xml: used in OREAnalytics/collateralaccount.cpp
// apply “effective” accrual rate (i.e. adjust for spread specified in netting set definition)
Real accrualRate = (accountBalances_.back() >= 0.0) ? (annualisedZeroRate – csaDef_->collatSpreadRcv())
: (annualisedZeroRate – csaDef_->collatSpreadPay());
// bring collateral account up to margin payment date (note accrual rate is assumed to be compounded
// daily)
accountBalances_.push_back(accountBalances_.back() * std::pow(1.0 + accrualRate / 365.0, accrualDays) +
marginCalls_[i].marginAmount());
Parameter “collateralSpread” from ore.xml: used in OREAnalytics/postprocess.cpp
Real colvaDelta = -balance * collateralSpread_ * dcf / samples;
Real floorDelta = -balance * std::max(-indexValue, 0.0) * dcf / samples;
colvaInc[j + 1] += colvaDelta;
It would be great to have the same Parameter(s) CollateralCompoundingSpreadReceive/CollateralCompoundingSpreadPay being used for COLVA calculation as well, now we have to set the collateralSpread for each counterparty separately.
-regards,
Roland