public void GetTransformedPositionRecordsTest() { FXEntities.FXEntities fxEntities = new FXEntities.FXEntities(); CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities); var startDate = new DateTime(2000, 1, 4); var endDate = new DateTime(2003, 1, 4); var periodicTimeDef = new PeriodicTimeDefinition(3, PeriodicType.Month); periodicTimeDef.Initialize(startDate, endDate); ProfitCalculationEngine_Accessor target = new ProfitCalculationEngine_Accessor(currencyDataSource); PositionRuntime positionRuntime = new PositionRuntime(FXStrategy.Interpreter.PositionType.Long); positionRuntime.PositionRecords.Add(new PositionRecord( new DateTime(2000, 1, 4), new Currency("USD"), new Currency("EUR"), FXStrategy.Interpreter.PositionType.Long, positionRuntime) { EndDate = new DateTime(2001,3,2) }); //var actual = target.GetTransformedPositionRecords(positionRuntime, periodicTimeDef); //Assert.AreEqual(actual.Count, 6); //Assert.IsTrue(actual.ElementAt(5).Type == FXStrategy.Interpreter.PositionType.Short); //Assert.IsTrue(actual.Take(5).All(t => t.Type == FXStrategy.Interpreter.PositionType.Long)); }
public CurrencyDataSource(FXEntities.FXEntities fxEntities) { _fxEntities = fxEntities; _exRateAdapter = new ExchangeRateAdapter(_fxEntities); _inRateAdapter = new InterestRateAdapter(_fxEntities); _currencyPairDataTable = new Dictionary<Tuple<string, string>, CurrencyPairData>(); _currencyNameInterestRateTable = new Dictionary<string, TimeSeriesCollection<InterestRate>>(); }
public void GetCurrencyNamesSortByInRateTest() { FXEntities.FXEntities fxEntities = new FXEntities.FXEntities(); Currency baseCurrency = new Currency("EUR"); // TODO: Initialize to an appropriate value CurrencyDataSource target = new CurrencyDataSource(fxEntities); // TODO: Initialize to an appropriate value IEnumerable<string> actual; actual = target.GetCurrencyNameOrderByInterestRate(new DateTime(2000,1,7)).Reverse(); Assert.IsTrue(actual.ElementAt(0) == "GBP"); Assert.IsTrue(actual.ElementAt(1) == "USD"); Assert.IsTrue(actual.ElementAt(2) == "NOK"); Assert.IsTrue(actual.ElementAt(3) == "NZD"); Assert.IsTrue(actual.ElementAt(4) == "AUD"); Assert.IsTrue(actual.ElementAt(5) == "CAD"); Assert.IsTrue(actual.ElementAt(6) == "SEK"); Assert.IsTrue(actual.ElementAt(7) == "EUR"); Assert.IsTrue(actual.ElementAt(8) == "CHF"); Assert.IsTrue(actual.ElementAt(9) == "JPY"); }
public StrategyAnalyzer() { var fxEntities = new FXEntities.FXEntities(); _currencyDataSource = new CurrencyDataSource(fxEntities); _currencyDataSource.PreLoad(); }
public void Top3CurrenciesConstructorTest() { FXEntities.FXEntities fxEntities = new FXEntities.FXEntities(); Currency baseCurrency = new Currency("EUR");; // TODO: Initialize to an appropriate value CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities); Top3Currencies target = new Top3Currencies(currencyDataSource, baseCurrency); var result = target.GetCurrencies(new DateTime(2000, 1, 7)); Assert.IsTrue(result.Any(r => r == "USD")); Assert.IsTrue(result.Any(r => r == "GBP")); Assert.IsTrue(result.Any(r => r == "NOK")); }
public void ExchangeRateAccessorTest() { TradingStrategy tradingStrategy = new TradingStrategy() { ConstantVariableDefinitions = new System.Collections.Generic.List<GlobalIdentifier>(){ new GlobalIdentifier(){ Variable = new Variable("reEntryExRatePercent", typeof(int)), Constant = new Constant(typeof(decimal),0.05)}, new GlobalIdentifier(){ Variable = new Variable("noOfLongPosition",typeof(int)), Constant = new Constant(typeof(int),3)}, new GlobalIdentifier(){ Variable = new Variable("noOfShortPosition",typeof(int)), Constant = new Constant(typeof(int),3)} }, Portfolio = new Portfolio() { HomeCurrency = "EUR", PositionSets = new List<PositionSet>() { new PositionSet(){ Name = "LongPositions", Number = new Variable("noOfLongPosition",typeof(int)), PositionType = FXStrategy.MetaModel.PositionType.Long }, new PositionSet(){ Name = "ShortPositions", Number = new Variable("noOfShortPosition", typeof(int)), PositionType = FXStrategy.MetaModel.PositionType.Short } } }, TradingRules = new System.Collections.Generic.List<TradingRule>() { new TradingRule("test", new ConcreteTimeDefinition(){ ExecuteTime = new DateTime(2006,1,30) }, new Assignment( new Variable("exRateMVG", typeof(decimal)), new AtTime( new ExchangeRateAccessor( new Constant(typeof(string), "EUR"), new Constant(typeof(string), "USD")) , new Constant(typeof(DateTime), new DateTime(2006,1,30))))) } }; FXEntities.FXEntities fxEntities = new FXEntities.FXEntities(); CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities); StrategyInterpreter target = new StrategyInterpreter(fxEntities, currencyDataSource); DateTime startDate = new DateTime(2006, 1, 29); DateTime endDate = new DateTime(2006, 1, 31); target.Execute(tradingStrategy, startDate, endDate); }
public void ExecutionTimeTest() { TradingStrategy tradingStratgy = ConstructTradingStrategy(); FXEntities.FXEntities fxEntities = new FXEntities.FXEntities(); CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities); currencyDataSource.PreLoad(); StrategyInterpreter target = new StrategyInterpreter(fxEntities, currencyDataSource); DateTime startExecutionTime; DateTime endExecutionTime; DateTime startDate = new DateTime(2000, 1, 1); List<List<double>> results = new List<List<double>>(); StringBuilder output = new StringBuilder(); for (int j = 0; j < 10; j++) { results.Add(new List<double>()); output.AppendLine("Run no.: " + j); for (int i = 0; i < 11; i++) { startExecutionTime = DateTime.Now; target.Execute(tradingStratgy, startDate, startDate.AddYears(i + 1)); endExecutionTime = DateTime.Now; results[j].Add((endExecutionTime - startExecutionTime).TotalMilliseconds); output.AppendLine(String.Format("Execution time: {0}ms, Number of positionRecord: {1} ", (endExecutionTime - startExecutionTime).TotalMilliseconds, target.PositionSetTable.Sum(p => p.Value.Positions.SelectMany(pos => pos.PositionRecords).Count() ) )); target.Clear(); //results.Add(endExecutionTime - startExecutionTime); } output.AppendLine(); } output.AppendLine("Average: "); for (int i = 0; i < 10; i++) { output.AppendLine( (i+1) + " Year: \t" + results.Select(r => r.ElementAt(i)).Average()); } using (StreamWriter writer = new StreamWriter(@"D:\Documents\Study Materials\Master Thesis\Main Thesis\executionTime.txt")) { //for (int i = 1; i <= 10; i++) //{ // output += String.Format(results[i - 1].Milliseconds + " ms \n"); //} writer.WriteLine(output); } }
public void CalculationTest() { FXEntities.FXEntities fxEntities = new FXEntities.FXEntities(); CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities); StrategyInterpreter target = new StrategyInterpreter(fxEntities, currencyDataSource); TradingStrategy tradingStrategy = ConstructTradingStrategy(); DateTime startDate = new DateTime(2000, 1, 4); DateTime endDate = new DateTime(2002, 1, 1); target.Execute(tradingStrategy, startDate, endDate); ProfitCalculationEngine calEngine = new ProfitCalculationEngine( currencyDataSource ); calEngine.Evaluate(target.PositionSetTable["ShortPositions"].Positions, startDate, endDate, new PeriodicTimeDefinition(3, PeriodicType.Month) ); //calEngine.Analyze(target.PositionSetTable["LongPositions"].Positions // .Union(target.PositionSetTable["ShortPositions"].Positions).ToList(), // startDate, // endDate, new PeriodicTimeDefinition(3, PeriodicType.Month) // ); List<TimeSeriesData> returnOverTime = calEngine.ReturnOverTime; string dest = @"C:\temp\ReturnOverTime.txt"; WriteToFile(returnOverTime, dest); WriteToFile(calEngine.IndexOverTime, @"C:\temp\IndexOverTime.txt"); }
public void GetCurrenciesTest1() { Currency baseCurrency = new Currency("EUR"); FXEntities.FXEntities fxEntities = new FXEntities.FXEntities(); CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities); // TODO: Initialize to an appropriate value Bottom3Currencies target = new Bottom3Currencies(currencyDataSource, baseCurrency); // TODO: Initialize to an appropriate value DateTime time = new DateTime(2000, 1, 7); // TODO: Initialize to an appropriate value IEnumerable<string> expected = new string[]{"JPY","CHF"}; IEnumerable<string> actual; actual = target.GetCurrencies(time); Assert.IsTrue(expected.All(a => actual.Contains(a))); }
public ExchangeRateAdapter(FXEntities.FXEntities fxEntities) { _fxEntities = fxEntities; }
public CurrencyAdapter(FXEntities.FXEntities fxEntities) { _fxEntities = fxEntities; }