code: public RandomVariableInterface getCovariance(int timeIndex, int component1, int component2, RandomVariableInterface[] realizationAtTimeIndex) {
  
  		RandomVariableInterface[] factorLoadingOfComponent1 = getFactorLoading(timeIndex, component1, realizationAtTimeIndex);
  		RandomVariableInterface[] factorLoadingOfComponent2 = getFactorLoading(timeIndex, component2, realizationAtTimeIndex);
  
  		// Multiply first factor loading (this avoids that we have to init covariance to 0).
  		RandomVariableInterface covariance = factorLoadingOfComponent1[0].mult(factorLoadingOfComponent2[0]);
  
  		// Add others, if any
  		for(int factorIndex=1; factorIndex<this.getNumberOfFactors(); factorIndex++) {
  			covariance = covariance.addProduct(factorLoadingOfComponent1[factorIndex],factorLoadingOfComponent2[factorIndex]);
  		}
  
  		return covariance;
  	}
docs: Returns the instantaneous covariance calculated from factor loadings.
  
  @param timeIndex The time index at which covariance is requested.
  @param component1 Index of component <i>i</i>.
  @param component2  Index of component <i>j</i>.
  @param realizationAtTimeIndex The realization of the stochastic process.
  @return The instantaneous covariance between component <i>i</i> and  <i>j</i>.