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);
        }
Example #2
0
        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);
        }