/// <summary> /// Berechnet Beta und legt das Ergebnis in einem neuen Datencontainer ab. /// </summary> /// <param name="source">Datensatz, von dem Beta gebildet werden soll</param> /// <param name="reference">Referenz, zu dem Beta gebildet werden soll</param> /// <param name="nRange">Anzahl der einzubeziehenden Daten pro Beta-Berechnung</param> /// <returns>Neuer DatenContainer mit den Ergebnisdaten</returns> public static DataContainer CreateFrom(DataContainer source, DataContainer reference, int nRange) { if (nRange < 1) { throw new ArgumentOutOfRangeException("Range", nRange, "Must be greater than zero."); } DataContainer covariance = CoVariance.CreateFrom(source, reference, nRange); DataContainer sigma = Volatility.CreateFrom(reference, nRange); DataContainer result = new DataContainer(); WorkDate workdate = covariance.OldestDate.Clone(); for (; workdate <= covariance.YoungestDate; workdate++) { double dSigma = sigma[workdate]; double dBeta = covariance[workdate] / (dSigma * dSigma); result[workdate] = dBeta; } return(result); }
/// <summary> /// Berechnet die Korrelation und legt das Ergebnis in einem neuen Datencontainer ab. /// </summary> /// <param name="a">Datensatz A, zwischen denen die Korrelation gebildet werden soll</param> /// <param name="b">Datensatz B, zwischen denen die Korrelation gebildet werden soll</param> /// <param name="nRange">Anzahl der einzubeziehenden Daten pro Korrelationsberechnung</param> /// <returns>Neuer DatenContainer mit den Ergebnisdaten</returns> public static DataContainer CreateFrom(DataContainer a, DataContainer b, int nRange) { if (nRange < 1) { throw new ArgumentOutOfRangeException("Range", nRange, "Must be greater than zero."); } DataContainer covariance = CoVariance.CreateFrom(a, b, nRange); DataContainer sigma_a = Volatility.CreateFrom(a, nRange); DataContainer sigma_b = Volatility.CreateFrom(b, nRange); DataContainer result = new DataContainer(); WorkDate workdate = covariance.OldestDate.Clone(); for (; workdate <= covariance.YoungestDate; workdate++) { double dCorrelation = covariance[workdate] / (sigma_a[workdate] * sigma_b[workdate]); result[workdate] = dCorrelation; } return(result); }