public void TestComputeMinVarianceHedgingFuturesCount() { var orangeFutures = new Security { Id = 1, MarketPrice = 118.65, Symbol = "ORANGE_FUTURES", Volatility = 0.2 }; var grapefruitCommodity = new Security { Id = 1, MarketPrice = double.NaN, Symbol = "GRAPEFRUIT_COMMODITY", Volatility = 0.25 }; var secCov = new SecuritiesCovariance(orangeFutures, grapefruitCommodity, 0.7); secCov.Compute(); var contractCount = Hedges.ComputeMinVarianceHedgingFuturesCount(Math.Pow(orangeFutures.Volatility, 2), secCov, 150000, 15000); Console.WriteLine(contractCount); }
public static List <SecuritiesCovariance> ReadCorrelations(string csvFileName, List <Security> securities) { var results = new List <SecuritiesCovariance>(); using (var reader = new CsvReader(new StreamReader(csvFileName), false, ',')) { while (reader.ReadNextRecord()) { var cov = new SecuritiesCovariance(); var symbolOne = reader[0]; var symbolTwo = reader[1]; cov.Correlation = double.Parse(reader[2]); cov.SecurityOne = securities.FirstOrDefault(s => s.Symbol == symbolOne); cov.SecurityTwo = securities.FirstOrDefault(s => s.Symbol == symbolTwo); results.Add(cov); } } return(results); }