Ejemplo n.º 1
0
void BetaShifted_HGVolatilityParam::initializeShiftMatrix(
	LMMTenorStructure_PTR        pLMMTenorStructure, 
	const LowerTriangularMatrix& betas, 
	const std::vector<double>&   liborsInitValues)
{
	assert(betas.size1() == betas.size2() && betas.size2() == liborsInitValues.size() && pLMMTenorStructure->get_nbLIBOR());

	//unused first column, first row is automatically null since it is lower triangular matrix
	LowerTriangularMatrix m(betas.size1(), betas.size2());

	for(size_t k=0; k<m.size1();++k)
	{
		shift_matrix_(k,0) = 1.0e100;	
	}

	for(size_t liborIndex=1; liborIndex<m.size1();++liborIndex)
	{
		for(size_t timeIndex=1;timeIndex<=liborIndex;++timeIndex)
		{
			double beta = betas(liborIndex,timeIndex);
			double liborInitValue = liborsInitValues[liborIndex];
			shift_matrix_(liborIndex,timeIndex) = 1+ (1-beta)/beta*liborInitValue;
		}	
	} 
}
Ejemplo n.º 2
0
void Shifted_HGVolatilityParam::reset_g_matrix(const LowerTriangularMatrix& other_g)
{
	assert(other_g.size1() == g_matrix_.size1() );
	assert(other_g.size2() == g_matrix_.size2() );

	for(size_t indexLibor=1; indexLibor<g_matrix_.size1();++indexLibor)
	{
		for(size_t indexTime=1; indexTime<=indexLibor; ++indexTime)
		{
			g_matrix_(indexLibor,indexTime) =  other_g(indexLibor,indexTime);
		}	
	}
}