public IndexDailyPerformance(Index index, DateTime dateTime, decimal? @return, decimal? value) { Index = index; Date = dateTime; Return = @return; Value = value; }
public void Save(Index index) { var session = GetSession(); using (var tx = session.BeginTransaction()) { session.SaveOrUpdate(index); tx.Commit(); } }
public IndexPerformance(Index index, YearMonth yearMonth, decimal? @return, decimal? value) { Index = index; YearMonth = yearMonth; _month = yearMonth.Month; _year = yearMonth.Year; Return = @return; Value = value; }
public IndexPerformance(Index index, YearMonth yearMonth) : this(index, yearMonth, null, null) { }
public IndexDailyPerformance(Index index, DateTime dateTime) : this(index, dateTime, null, null) { }
TotalReturns GetTotalReturnsFor(Index security) { var result = new TotalReturns(security); using (var session = _sessionFactory.GetSession()) { var service = session.CreateService(); var priceRequest = service.CreateRequest(RequestType.HistoricalDataRequest); priceRequest.Append("securities", security.BloombergName); priceRequest.Append("fields", "PX_LAST"); priceRequest.Set("startDate", new YearMonth(2012, 1).AsDateTime().ToBBDateTimeString()); priceRequest.Set("endDate", new YearMonth(2013, 12).AsDateTime().ToBBDateTimeString()); priceRequest.Set("periodicitySelection", "MONTHLY"); priceRequest.Set("currency", security.CurrencyCode); session.ProcessRequest(priceRequest, @event => @event.ForEachFieldData(fdi => { var date = fdi.GetElementAsDate("date").ToSystemDateTime(); var lastPrice = fdi.GetElementAsFloat64("PX_LAST"); result.Add(date, Convert.ToDecimal(lastPrice)); })); if (security.UseUnderlyingPriceForReturn) { // Calculate Return manually foreach (var index in result) { var lastValue = index.GetLastValue(); if (index.Value == null || lastValue == null || lastValue == 0m) continue; index.Return = Percent.CreateFromDecimalNotation((index.Value.Value / lastValue) - 1); } } else { // Retrieve Return from Bloomberg foreach (var index in result) { if (index._previous == null) continue; // =BDP("SPX INDEX", "CUST_TRR_RETURN_HOLDING_PER", "CUST_TRR_START_DT,CUST_TRR_END_DT,CUST_TRR_CRNCY", "20121031,20121130,USD") var start = index._previous.DateTime; var end = index.DateTime; var returnRequest = service.CreateRequest(RequestType.ReferenceDataRequest); returnRequest.Append("securities", security.BloombergName); returnRequest.Append("fields", "CUST_TRR_RETURN_HOLDING_PER"); returnRequest.AddOverride("CUST_TRR_START_DT", start.ToBBDateTimeString()); returnRequest.AddOverride("CUST_TRR_END_DT", end.ToBBDateTimeString()); returnRequest.AddOverride("CUST_TRR_CRNCY", security.CurrencyCode); session.ProcessRequest(returnRequest, @event => @event.ForEachFieldData(fdi => { if (fdi.HasElement("CUST_TRR_RETURN_HOLDING_PER")) { var rtn = fdi.GetElementAsFloat64("CUST_TRR_RETURN_HOLDING_PER"); index.Return = Percent.CreateFromPercentageNotation(Convert.ToDecimal(rtn)); } })); } } } return result; }