public void Start() { //TODO implement Equity Picker PeriodicEquityPicker equityPicker = new PeriodicEquityPicker(_mds, _selectionPeriod, _lookupPeriod, EquityVolPredefinedVariables.EquitySelectionNumber, _startDate, _endDate); equityPicker.UseHighRankMarketCap(); Dictionary<DateTime, List<MarketDataSetKey>> selectedEquities = equityPicker.Select(); List<IPnLResult> pnLResults = new List<IPnLResult>(); //EquityStockDeltaVolExecutor stockTradingExecutor = new EquityStockDeltaVolExecutor(_mds, _input); //Dictionary<MarketDataSetKey, IPnLResult> allEquityPnLResults = stockTradingExecutor.Execute(); EquityStockSimpleExecutor stockTradingExecutor = new EquityStockSimpleExecutor(_mds, _startDate, _endDate, _input.IssueInterval, _input.BaseInvest); Dictionary<MarketDataSetKey, IPnLResult> allEquityPnLResults = stockTradingExecutor.Execute(); Dictionary<MarketDataSetKey, IPnLResult> seletecdEquityPnLResults = GetSelectedEquityPnLResults(allEquityPnLResults, selectedEquities); pnLResults.AddRange(seletecdEquityPnLResults.Values.ToList()); Dictionary<DateTime, double> grossDeltas = AggregateGrossDeltas(pnLResults); EquityDeltaHedger hedger =new EquityDeltaHedger(MarketDataSetKey.KospiFuture, _input.StartDate, _input.EndDate, grossDeltas, _input.BaseInvest, _input.IssueInterval); if (_input.bMATrendHedging) { hedger.AddMATrendTester( EquityVolPredefinedVariables.LeadingMAPeriod, EquityVolPredefinedVariables.BaseMAPeriod); if (_input.bDeltaSwitchUpDown) { hedger.UseMASpreadSwitch( EquityVolPredefinedVariables.MASpreadUpperBound, EquityVolPredefinedVariables.MASpreadLowerBound); } } IPnLResult hedgePnL; if (_input.bVoliatilityHedging) { hedger.UseVolTest(10); } hedgePnL = hedger.ExecuteHedge(); pnLResults.Add(hedgePnL); //BandTradingHedger auxHedger = new BandTradingHedger(MarketDataSetKey.KospiFuture, // _input.StartDate, _input.EndDate, grossDeltas, _input.BaseInvest); //auxHedger.AddMATrendTester(1, 20); //IPnLResult auxHedgePnL = auxHedger.ExecuteHedge(); //pnLResults.Add(auxHedgePnL); IPnLResult sumPnlResult = AggregatePnLResult(pnLResults); HandleResult(sumPnlResult); }
private void button1_Click(object sender, EventArgs e) { DateTime curDate = DateTime.FromOADate(Convert.ToDouble((this.Cells[1, 2] as Excel.Range).Value2)); int selectionNum = (int)Convert.ToInt32((this.Cells[1, 5] as Excel.Range).Value2); Dictionary<string, double> curPriceData = ReadCurPriceData(); MarketDataSet mds = GetNewMarketDataSet(curDate, curPriceData); PeriodicEquityPicker equityPicker = new PeriodicEquityPicker( mds, EquityVolPredefinedVariables.SelectionPeriod, EquityVolPredefinedVariables.LookupPeriod, selectionNum, curDate, curDate); Dictionary<MarketDataSetKey, double> keyscoreDic = equityPicker.GetAllMarketKeyScores(curDate, ScoreCriteria.Volatility); Dictionary<DateTime, List<MarketDataSetKey>> dateKeysDic = equityPicker.Select(); List<MarketDataSetKey> curSelectedKeys = dateKeysDic[curDate]; WriteCurEquityScores(keyscoreDic); WriteCurSelectedKeys(curSelectedKeys); }