コード例 #1
0
        /// <summary>
        /// </summary>
        /// <returns></returns>
        /// <param name="referenceDate">
        /// if 2000, IRZ8 is futures that expires in December 2008.
        /// if 2010, IRZ8 is futures that expires in December 2018.
        /// </param>
        public override DateTime GetLastTradingDay(DateTime referenceDate)
        {
            var      month = (int)LastTradingDayHelper.ParseToCode(CodeAndExpiryMonth.ImmMonthCode);
            DateTime unadjustedExpirationDate;

            if (CodeAndExpiryMonth.Year < referenceDate.Year % 10)
            {
                int realYear = referenceDate.Year - (referenceDate.Year % 10) + CodeAndExpiryMonth.Year + 10;
                unadjustedExpirationDate = new DateTime(realYear, month, 1).AddDays(-15);
            }
            else
            {
                int realYear = referenceDate.Year - (referenceDate.Year % 10) + CodeAndExpiryMonth.Year;
                unadjustedExpirationDate = new DateTime(realYear, month, 1).AddDays(-15);
            }
            return(unadjustedExpirationDate);
        }
コード例 #2
0
        /// <summary>
        /// IRH7,IRZ9 (90 day futures)
        ///
        /// IBH8,IBU9 (30 day futures)
        /// </summary>
        /// <returns></returns>
        /// <param name="referenceDate">
        /// if 2000, IRZ8 is futures that expires in December 2008.
        /// if 2010, IRZ8 is futures that expires in December 2018.
        /// </param>
        public override DateTime GetLastTradingDay(DateTime referenceDate)
        {
            var      month = (int)LastTradingDayHelper.ParseToCode(CodeAndExpiryMonth.ImmMonthCode);
            DateTime unadjustedExpirationDate;

            if (CodeAndExpiryMonth.Year < referenceDate.Year % 10)
            {
                int realYear = referenceDate.Year - referenceDate.Year % 10 + CodeAndExpiryMonth.Year + 10;
                unadjustedExpirationDate = RuleHelper.LastDayInMonth(month, realYear);
            }
            else
            {
                int realYear = referenceDate.Year - referenceDate.Year % 10 + CodeAndExpiryMonth.Year;
                unadjustedExpirationDate = RuleHelper.LastDayInMonth(month, realYear);
            }
            return(unadjustedExpirationDate);
        }
コード例 #3
0
        /// <summary>
        ///
        /// IRH7,IRZ9 (90 day futures)
        ///
        /// IBH8,IBU9 (30 day futures)
        /// </summary>
        /// <returns></returns>
        /// <param name="referenceDate">
        /// if 2000, Z8 is futures that expires in December 2008.
        /// if 2010, Z8 is futures that expires in December 2018.
        /// </param>
        public virtual DateTime GetLastTradingDay(DateTime referenceDate)
        {
            var month = (int)LastTradingDayHelper.ParseToCode(CodeAndExpiryMonth.ImmMonthCode);
            //  Expiration - 2nd (2) Friday (4) of month.
            //
            DateTime unadjustedExpirationDate;

            if (CodeAndExpiryMonth.Year < referenceDate.Year % 10)
            {
                int realYear = referenceDate.Year - (referenceDate.Year % 10) + CodeAndExpiryMonth.Year + 10;
                unadjustedExpirationDate = RuleHelper.GetNthDayInMonth(month, 3, 3, realYear, 0, 0);
            }
            else
            {
                int realYear = referenceDate.Year - (referenceDate.Year % 10) + CodeAndExpiryMonth.Year;
                unadjustedExpirationDate = RuleHelper.GetNthDayInMonth(month, 3, 3, realYear, 0, 0);
            }
            return(unadjustedExpirationDate);
        }
コード例 #4
0
        /// <summary>
        /// IRH7,IRZ9 (90 day futures)
        ///
        /// IBH8,IBU9 (30 day futures)
        /// </summary>
        /// <returns></returns>
        /// <param name="referenceDate">
        /// if 2000, IRZ8 is futures that expires in December 2008.
        /// if 2010, IRZ8 is futures that expires in December 2018.
        /// </param>
        public override DateTime GetLastTradingDay(DateTime referenceDate)
        {
            //FuturesPrefixImmMonthCodeAndYear futuresPrefixImmMonthCodeAndYear = BreakCodeIntoPrefixAndYear(futuresCode);
            var month = (int)LastTradingDayHelper.ParseToCode(CodeAndExpiryMonth.ImmMonthCode);
            //  Expiration - 3rd (3) Wednesday (3) of month.
            //
            //DateTime unadjustedExpirationDate = DateHelper.nthWeekday(2, 5, month, referenceYear + futuresPrefixImmMonthCodeAndYear.Year);
            DateTime unadjustedExpirationDate;

            if (CodeAndExpiryMonth.Year < referenceDate.Year % 10)
            {
                int realYear = referenceDate.Year - (referenceDate.Year % 10) + CodeAndExpiryMonth.Year + 10;
                unadjustedExpirationDate = RuleHelper.GetNthDayInMonth(month, 3, 3, realYear, 0, 0);
            }
            else
            {
                int realYear = referenceDate.Year - (referenceDate.Year % 10) + CodeAndExpiryMonth.Year;
                unadjustedExpirationDate = RuleHelper.GetNthDayInMonth(month, 3, 3, realYear, 0, 0);
            }
            return(unadjustedExpirationDate);
        }