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); }
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)); }
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); }