Exemplo n.º 1
0
        public void ShouldGetIntrdayFutureFromCarbon()
        {
            var args = new HelperRequestArgs()
            {
                EventDates = new[]
                {
                    new DateTime(2016, 1, 27, 19, 0,0),
                    //new DateTime(2016, 3, 16, 19, 0, 0),
                    //new DateTime(2016, 4, 27, 19, 0, 0),
                },
                FrequencyOfPricing = new TimeSpan(0, 25, 0),  // 5 min
                NumDataPointsAroundEvent = 10,
                Timezone = TZ.LN,
                InputString = "FV1",
            };

            var data = Helper.CarbonIntradayGo(args);

            foreach (var dataAroundEvent in data)
            {
                Console.WriteLine(@" ");
                Console.WriteLine(@" ");
                Console.WriteLine(@"-------------------------------------------");
                Console.WriteLine(@"Event {0}", dataAroundEvent.EventDate);
                foreach (var p in dataAroundEvent.FilledDataAroundEvent_Diff.Data)
                {
                    Console.WriteLine(@"{0},{1}", p.Index, p.Value);
                }
            }
        }
Exemplo n.º 2
0
    public static IEnumerable<DataAroundEvent> Go(HelperRequestArgs args_)
    {
      var ret = new List<DataAroundEvent>();

      foreach (var eventTime in args_.EventDates)
      {
        var tsBefore = new TimeSpan(args_.FrequencyOfPricing.Ticks * (args_.NumDataPointsAroundEvent + 10));
        
        var startDate = eventTime - tsBefore ;

        var futures = Singleton<IntradayFutures>.Instance.Where(x => x.BbgTicker.StartsWith(args_.FutureGroup.BbgStart)
          && x.BbgTicker.ToUpper().EndsWith(args_.FutureGroup.Suffix)
          && x.FirstTrade < startDate.Date
          && x.LastTrade > startDate.Date);

        if(args_.FutureGroup.LiquidContracts!=null && args_.FutureGroup.LiquidContracts.Count()>0)
          futures = futures.Where(x=>args_.FutureGroup.LiquidContracts.Contains((MonthCode)x.LastTrade.Month));

        int contractIndex = args_.ContractNumber - 1; // want to specify '1' as first, so '0' would be index of that

        if (!futures.Any() || contractIndex > (futures.Count()-1))
        {
          Logger.Error(string.Format("Could not find {0} future for eventDate{1}", args_.FutureGroup, eventTime.Date.ToString("dd-MMM-yyyy")), typeof(Helper));
          continue;
        }

        var future = futures
          .OrderBy(x => x.LastTrade)
          .ToArray()[contractIndex];

        Logger.Debug(string.Format("{0} => contract = {1}", eventTime.ToString("dd-MMM-yyyy HH:mm"), future.BbgTicker), typeof(Helper));

        if (false)
        {
            var pxs = future.GetPrices(args_.Timezone, startDate, eventTime + tsBefore, args_.FrequencyOfPricing,
                false);
            ret.Add(new DataAroundEvent(eventTime, future, pxs, args_.NumDataPointsAroundEvent));
        }
        else
        { 
            var pxs = CarbonModel.GetIntradayCloseWithFrequency(new[] { future.BbgTicker }, TimeZoneHelper.ConvertLocalTimeToGmt(args_.Timezone, startDate),
                                TimeZoneHelper.ConvertLocalTimeToGmt(args_.Timezone, eventTime + tsBefore), string.Format("{0}m", args_.FrequencyOfPricing.TotalMinutes)).FirstOrDefault();
            if (pxs != null)
            {
                var localPxs = HelperMethods.GmtToLocal(pxs.ToContruct().GetColumnValuesAsDDC(0), args_.Timezone);

                // close bidask
                ret.Add(new DataAroundEvent(eventTime, future, localPxs, args_.NumDataPointsAroundEvent));
            }
        }
      }

      return ret;
    }
Exemplo n.º 3
0
    public static IEnumerable<DataAroundEvent> CarbonIntradayGo(HelperRequestArgs args_)
    {
        try
        {
            var dataGrabber = Singleton<IntradayDataGrabber>.Instance;
            var dataModel = new StructureDataModelDouble(dataGrabber)
            {
                Components = new List<StructureDataItem<double>>()
            };

            var ret = new List<DataAroundEvent>();
            var structures = StructureParser.StructureParser.ParseStruture(args_.InputString.ToUpper());
            dataModel.Components.AddRange(structures.Select(s => new StructureDataItem<double>
            {
                Component = s.Key,
                Multiplier = s.Value,
            }).ToList());

            //get eod data for time series chart
            var eodDataGrabber = Singleton<EodDataGrabber>.Instance;
            var eodModel = new StructureDataModelDouble(eodDataGrabber)
            {
                Components = new List<StructureDataItem<double>>()
            };
            eodModel.Components.AddRange(structures.Select(s => new StructureDataItem<double>
            {
                Component = s.Key,
                Multiplier = s.Value,
            }).ToList());
            var eodData = eodModel.RetreiveData(args_.EventDates.OrderBy(x => x.Date).First().Date.AddDays(-126d),
                DateTime.Today.AddDays(10), null);

            foreach (var eventTime in args_.EventDates)
            {
                var tsBefore = new TimeSpan(args_.FrequencyOfPricing.Ticks*(args_.NumDataPointsAroundEvent + 10));

                var startDate = eventTime - tsBefore;

                //foreach (var structure in structures)
                //{
                var data = dataModel.RetreiveData(TimeZoneHelper.ConvertLocalTimeToGmt(args_.Timezone, startDate),
                    TimeZoneHelper.ConvertLocalTimeToGmt(args_.Timezone, eventTime + tsBefore),
                    string.Format("{0}m", args_.FrequencyOfPricing.TotalMinutes));

                foreach (var item in data)
                {
                    if (item.DataValue != null)
                        item.DataValue = HelperMethods.GmtToLocal(item.DataValue.ToContruct().GetColumnValuesAsDDC(0),
                            args_.Timezone);
                }

                if (data.Any())
                    ret.Add(new DataAroundEvent(eventTime, args_.InputString, dataModel.AggregateStructures(data),
                        args_.NumDataPointsAroundEvent)
                    {
                        EODData = eodModel.AggregateStructures(eodData),
                        IsIntraday = true,
                    });

            }
            return ret;
        }
        catch (Exception e)
        {
            Logger.Error(string.Format("Error when retrieving intraday data {0} ", e.Message), typeof (Helper));
            return null;
        }
        
    }
Exemplo n.º 4
0
      public static IEnumerable<DataInterEvent> GoInterEvents(HelperRequestArgs args_)
    {
      var ret = new List<DataInterEvent>();

      foreach (var set in args_.InterEventArgs.Events.Where(x=>x.StartDate.Date.Date < DateTime.Today))
      {
        var start = set.StartDate.Date.AddHours(-2d);
        var end = set.EndDate.Date.AddHours(2d);

        var futures = Singleton<IntradayFutures>.Instance.Where(x => x.BbgTicker.StartsWith(args_.FutureGroup.BbgStart)
                                                                     &&
                                                                     x.BbgTicker.ToUpper()
                                                                       .EndsWith(args_.FutureGroup.Suffix)
                                                                     && x.FirstTrade < start.Date
                                                                     && x.LastTrade > end.Date);

        if (args_.FutureGroup.LiquidContracts != null && args_.FutureGroup.LiquidContracts.Count() > 0)
          futures = futures.Where(x => args_.FutureGroup.LiquidContracts.Contains((MonthCode) x.LastTrade.Month));

        int contractIndex = args_.ContractNumber - 1; // want to specify '1' as first, so '0' would be index of that

        if (!futures.Any() || contractIndex > (futures.Count() - 1))
        {
          Logger.Error(
            string.Format("Could not find {0} future for eventSpan {1} to {2}", args_.FutureGroup,
              set.StartDate.Date.ToString("dd-MMM-yyyy"), set.EndDate.Date.ToString("dd-MMM-yyyy")), typeof (Helper));
          continue;
        }
        var future = futures
          .OrderBy(x => x.LastTrade)
          .ToArray()[contractIndex];

        var pxs = future.GetPrices(args_.Timezone, start, end, args_.FrequencyOfPricing, false);

        ret.Add(new DataInterEvent(set, false, future, pxs, args_.InterEventArgs));
      }

      return ret;
    }