public void MaxSharpeRatioPortfolioTest()
        {
            // Create new portfolio
            var portf = new Portfolio("TestPortfolio");

            // Create instruments from data
            var instruments = from k in cov.Keys
                              select new Instrument(k, mean[k], cov[k]);

            portf.AddRange(instruments);

            // Add portfolio constraints
            portf.AddAllInvestedConstraint();
            portf.AddLongOnlyConstraint();

            //
            double rf      = 0.05 / 12;
            var    res     = PortfolioOptimizer.CalcEfficientFrontier(portf, rf, 50);
            var    metrics = (from p in res
                              let sharpe = PortfolioAnalytics.SharpeRatio(p, rf)
                                           select new { p.StdDev, p.Mean, sharpe });

            foreach (var m in metrics)
            {
                Console.WriteLine("Risk {0}, Return {1}, Sharpe {2}, Sharpe Ratio {3} ", m.StdDev, m.Mean, (m.Mean - rf) / m.StdDev, m.sharpe);
            }

            var maxsharpe = (from p in res
                             let sharpe = PortfolioAnalytics.SharpeRatio(p, rf)
                                          select sharpe).Max();

            Console.WriteLine("Max Sharpe Ratio Portfolio {0}", maxsharpe);
        }
        public void ZeroChangeData()
        {
            var ts = TimeSeriesFactory <double> .Create(Enumerable.Repeat(10.0, 100), 1, DataFrequency.Daily);

            var sd = PortfolioAnalytics.AnnualisedStdDev(ts);

            Assert.AreEqual(0, sd);
        }
        public void ItRuns()
        {
            ITimeSeries <double> asset = TimeSeriesFactory <double> .SampleData.Gaussian(mu_a, sigma_a, numperiods : elements, freq : DataFrequency.Daily);

            var res = PortfolioAnalytics.SortinoRatio(asset, benchmark);

            Console.WriteLine(res);
        }
        public void ResultDailyData()
        {
            var riskfree = 0.05;
            var res      = PortfolioAnalytics.RealisedAlpha(asset, benchmark, riskfree);
            var ralpha   = CAPM.Alpha(timeSeries.Create(asset), timeSeries.Create(benchmark), riskfree).First();

            Assert.AreEqual(ralpha, res, 0.001);
        }
Exemple #5
0
        public void CorrelatedDataResultInRange()
        {
            ITimeSeries <double> asset = TimeSeriesFactory <double> .SampleData.Gaussian(mu_a, sigma_a, numperiods : elements, freq : DataFrequency.Daily);

            var res = PortfolioAnalytics.ActivePremium(asset, benchmark);
            var rap = (mu_a - mu_b) * 252;

            Assert.AreEqual(rap, res, sigma_a * Math.Sqrt(252));
        }
Exemple #6
0
        public void ItRuns()
        {
            TimeSeriesFactory <double> .SampleData.RandomSeed = 11;
            ITimeSeries <double> asset = TimeSeriesFactory <double> .SampleData.Gaussian(mu_a, sigma_a, numperiods : elements, freq : DataFrequency.Daily);

            var riskfree = 0.05;
            var res      = PortfolioAnalytics.ResidualRisk(asset, benchmark, riskfree);

            Console.WriteLine(res);
        }
        public void Result()
        {
            TimeSeriesFactory <double> .SampleData.RandomSeed = 8;

            ITimeSeries <double> asset = TimeSeriesFactory <double> .SampleData.Gaussian(mu_a, sigma_a, numperiods : elements, freq : DataFrequency.Daily);

            var res = PortfolioAnalytics.TrackingError(asset, benchmark);
            var te  = (asset.AsTimeSeries() - benchmark.AsTimeSeries()).AnnualisedStdDev();

            Assert.AreEqual(te, res, 0.001);
        }
        public void ResultDailyData()
        {
            // Data
            int elements = 100;

            TimeSeriesFactory <double> .SampleData.RandomSeed = seed;

            // Monthly data test
            var sdm = PortfolioAnalytics.AnnualisedStdDev(monthlySampleTS);

            Assert.IsNotNull(sdm);
            Assert.AreEqual(sigma * Math.Sqrt(12), sdm, sigma);
        }
        public void SimpleRegression()
        {
            var riskfree = 0.04;
            var capm     = PortfolioAnalytics.CAPModel(asset, benchmark, riskfree);

            var ralpha = CAPM.Alpha(timeSeries.Create(asset), timeSeries.Create(benchmark), riskfree).First();

            Assert.AreEqual(ralpha, capm.Alpha, 0.001);

            var rbeta = CAPM.Beta(timeSeries.Create(asset), timeSeries.Create(benchmark), riskfree).First();

            Assert.AreEqual(rbeta, capm.Beta, 0.001);
        }
        public void ResultMonthlyData()
        {
            // Data
            int elements = 100;

            TimeSeriesFactory <double> .SampleData.RandomSeed = 5;

            // Monthly data test
            var returns1 = Normal.Samples(new Random(5), 0.01, 0.02).Take(elements);
            var sdm      = PortfolioAnalytics.AnnualisedStdDev(monthlySampleTS);

            Assert.IsNotNull(sdm);
            Assert.AreEqual(Statistics.StandardDeviation(returns1) * Math.Sqrt(12), sdm, 0.001);
        }
 public void LargeRiskfreeRate()
 {
     var res = PortfolioAnalytics.RealisedAlpha(asset, benchmark, 1.05);
 }
 public void NegativeRiskfreeRate()
 {
     var res = PortfolioAnalytics.RealisedAlpha(asset, benchmark, -0.04);
 }
 public void LargeRiskfreeRate()
 {
     // Should throw exception for a risk-free rate larger than 1
     var res = PortfolioAnalytics.RealisedBeta(asset, benchmark, 1.05);
 }
 public void NegativeRiskfreeRate()
 {
     // Should throw exception for a risk-free rate smaller than 0
     var res = PortfolioAnalytics.RealisedBeta(asset, benchmark, -0.04);
 }