public AssetRateDataLog Execute(long caseNumber) { DateTime curDate = this.Input.StartDate; AssetRateDataLog log = new AssetRateDataLog(); _opSet.SetOpFlag(caseNumber); this._adjustment.Clear(); while (curDate <= this.Input.EndDate) { if (this._readyData.IsExistDate(curDate)) { AssetRateDatum aw = this._allocBase.CalculateAndGetAssetRateDatum(curDate, this._readyData); AdjRateDatum aa = this._adjustment.CalculateAssetWeight(_opSet, curDate, _readyData); aw.Multiply(aa); aw.SetScale(); log.Add(curDate, aw); } curDate = curDate.AddDays(1); } return log; }
public Tuple<AssetRateDataLog, AdjRateDataLog> Calculate(MarketDataSet marketData) { DateTime curDate = this.InputData.StartDate; AssetRateDataLog assetLog = new AssetRateDataLog(); AdjRateDataLog adjLog = new AdjRateDataLog(); while (curDate <= this.InputData.EndDate) { if (marketData.IsExistDate(curDate)) { AssetRateDatum assetDatum = this.Alloc.CalculateAndGetAssetRateDatum(curDate, marketData); AdjRateDatum adjDatum = GetAdjRateDatum(curDate, marketData, adjLog); assetDatum.Multiply(adjDatum); assetDatum.SetScale(); assetLog.Add(curDate, assetDatum); } curDate = curDate.AddDays(1); } return new Tuple<AssetRateDataLog, AdjRateDataLog>(assetLog, adjLog); }
public AssetRateDataLog Execute(long caseNumber) { DateTime curDate = this.Input.StartDate; AssetRateDataLog log = new AssetRateDataLog(); IAdjustment adj = this._adjs[(int)caseNumber]; log.ExperimentKey = _descriptions[(int)caseNumber]; while (curDate <= this.Input.EndDate) { if (this._readyData.IsExistDate(curDate)) { AssetRateDatum aw = this._allocBase.CalculateAndGetAssetRateDatum(curDate, this._readyData); AdjRateDatum aa = adj.CalculateAssetWeight(null, curDate, _readyData); aw.Multiply(aa); aw.SetScale(); log.Add(curDate, aw); } curDate = curDate.AddDays(1); } return log; }
public AssetRateDataLog Execute(long caseNumber) { IAlloc allocBase = this._allocBases[(int)caseNumber]; DateTime curDate = this.Input.StartDate; AssetRateDataLog log = new AssetRateDataLog(); _curKey = String.Format("SAO({0})", allocBase.GetKey()); while (curDate <= this.Input.EndDate) { if (this._readyData.IsExistDate(curDate)) { AssetRateDatum aw = allocBase.CalculateAndGetAssetRateDatum(curDate, this._readyData); AdjRateDatum aa = new AdjRateDatum(1, 1, 1); aw.Multiply(aa); aw.SetScale(); log.Add(curDate, aw); } curDate = curDate.AddDays(1); } return log; }
public ProfitAndLossResult GetResult(AssetRateDataLog log) { ProfitAndLossResult result = new ProfitAndLossResult(_opSet.GetKey(), this.Input.InitInvestAmount); result.CalculatePnL(log, _readyData); return result; }
public void CalculatePnL(AssetRateDataLog log, MarketDataSet marketDataSet) { DateTime prevDate = log.StartDate; DateTime curDate = log.StartDate.AddDays(1); _cumPnL.Add(prevDate, 0); while (curDate <= log.EndDate) { if (log.IsExistDate(curDate)) { AssetRateDatum awPrev = log.GetData(prevDate); Tuple<double, double, double, double> dailyPnL = GetDailyPnL( awPrev, prevDate, curDate, InitInvestAmount, marketDataSet); AddDailyPnL(curDate, dailyPnL); AddCumPnL(prevDate, curDate, dailyPnL.Item1); ChangeCurDateAndPrevDate(ref prevDate, ref curDate); continue; } curDate = curDate.AddDays(1); } double total = TotalPnL; this.AvgPnLPerYear = MathUtil.GetAvgPnLPerYear(this); this.PPM = MathUtil.GetPPM(this); }
ProfitAndLossResult CalculatePnL(AssetRateDataLog log, MarketDataSet marketData) { ProfitAndLossResult pnl = new ProfitAndLossResult(String.Format("{0}", this.Name), this.InputData.InitInvestAmount); pnl.CalculatePnL(log, marketData); return pnl; }