/// <summary>
        /// Berechnet die ReturnRiskRatio und legt das Ergebnis in einem neuen Datencontainer ab.
        /// </summary>
        /// <param name="source">Datensatz, von dem die ReturnRiskRatio gebildet werden soll</param>
        /// <param name="nRange">Anzahl der einzubeziehenden Daten pro Berechnung</param>
        /// <returns>Neuer DatenContainer mit den Ergebnisdaten</returns>
        public static DataContainer CreateFrom(DataContainer source, int nRange)
        {
            //DataContainer sourceperf   = RelativePerformance.CreateFrom(source);
            DataContainer sourcechange = RelativeChange.CreateFrom(source);
            DataContainer changemovavg = MovingAverage.CreateFrom(sourcechange, nRange);
            DataContainer volatility   = Volatility.CreateFrom(sourcechange, nRange);
            DataContainer result       = new DataContainer();

            //WorkDate historydate = volatility.OldestDate.Clone() - (int)nRange;
            WorkDate workdate = volatility.OldestDate.Clone();

            for (; workdate <= volatility.YoungestDate; workdate++ /*, historydate++*/)
            {
                double dReturn = changemovavg[workdate]; //sourceperf[workdate] - sourceperf[historydate];
                double dRisk   = volatility[workdate];   // Standardabweichung
                //result[workdate] = dReturn  / (dRisk + 1.0);
                result[workdate] = dReturn - dRisk;
            }

            return(result);
        }
Example #2
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);
        }
Example #3
0
        /// <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);
        }