コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: Correlation.cs プロジェクト: lijielife/PerfectTrade
        /// <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);
        }