Exemplo n.º 1
0
    def __str__(self):
        _today = datetime.date.today()

        def print_month(date):
            if date.year != _today.year:
                return '{0}.{1}'.format(str(date.year)[-2:],
                                        Option.MONTH[date.month - 1])
            else:
                return Option.MONTH[date.month - 1]

        output = io.StringIO()

        print(*[makebold(print_month(date)) for date in self._serial_months],
              end=' ',
              file=output)

        for date in month_range(_next_month(self._serial_months[-1]),
                                _next_month(self._quarterly_months[-1])):
            if date in self._quarterly_months:
                print(makebold(print_month(date)), end=' ', file=output)
            else:
                print(print_month(date), end=' ', file=output)

        return output.getvalue()
Exemplo n.º 2
0
def _date(string):
    if '.' not in string or 2 != string.count('.'):
        raise ValueError('date format YYYY.MM.DD')

    return datetime.date(*[int(x) for x in string.split('.')])

def _parse_args():
    parser = argparse.ArgumentParser("Days between dates")

    parser.add_argument('-f', '--from', dest='start',
                        type=_date, default=datetime.date.today(),
                        help='From date. Format: YYYY.MM.DD')

    parser.add_argument('stop',
                        type=_date, default=None, nargs='+',
                        help='Until date(s). Format: YYYY.MM.DD')

    return parser.parse_args()

def _makeblue(string):
    return tty._bold(34) + string + tty.reset

if "__main__" == __name__:
    args = _parse_args()

    print('Days between', args.start, 'and:')
    for d in args.stop:
        print(d,
              makebold(str((d - args.start if d >= args.start
                                           else args.start - d).days)))
Exemplo n.º 3
0
    -------------------
    0 -1 -2 -3 -4 -5 -6     -m.weekday()
    11 10 9  8  7  6  5     11 - m.weekday()
    4  3  2  1  0  6  5     (11 - m.weekday()) % 7
    -------------------
    '''

    return m + datetime.timedelta(days=((11 - m.weekday()) % 7 + 14))

def _date(string):
    if '.' not in string or 1 != string.count('.'):
        raise ValueError('date format YYYY.MM')

    return datetime.date(*[int(x) for x in (string + '.1').split('.')])

def _parse_args():
    parser = argparse.ArgumentParser("Expiration Day")

    parser.add_argument('month',
                        type=_date, default=[datetime.date.today().replace(day=1)],
                        nargs='*',
                        help='Expiration month(s). Format: YYYY.MM')

    return parser.parse_args()

if "__main__" == __name__:
    args = _parse_args()

    for m in args.month:
        print(m.strftime("%Y %b"), makebold(str(expiration(m).day)))
Exemplo n.º 4
0
def _makered(string):
    return tty._bold(31) + string + tty.reset

def _makegreen(string):
    return tty._bold(32) + string + tty.reset

def _makeblue(string):
    return tty._bold(34) + string + tty.reset

if "__main__" == __name__:
    args = _parse_args()

    _help(max_strike=args.max_strike)

    for i in range(1, args.contracts + 1):
        type_ = random.choice(Option.TYPE)
        month = random.choice(Option.MONTH)
        strike = (5 * random.choice(range(1, args.max_strike // 5))
                  + random.choice((0, 2.5)))
        option = Option(type_, month, strike)
        strike_string = "{0:>5}".format(strike)

        print(makebold("{0:>{1}}".format(i, len(str(args.contracts)))),
              option,
              _makeblue(strike_string) if strike % 1 else strike_string,
              'STOCK',
              month,
              _makered(type_) if type_ == 'put' else _makegreen(type_))
               
Exemplo n.º 5
0
                                       for m in range(len(Option.MONTH))))

    print()

if "__main__" == __name__:
    args = _parse_args()

    _help()

    max_id_len = len(str(args.contracts))

    output = io.StringIO()
    print('{0:>{1}}'.format('ID', max_id_len),
          '{0:>5}'.format('TYPE'),
          'MONTH',
          'TRADED MONTHS',
           end=' ', file=output)

    print(output.getvalue())
    print('-' * 70)

    for i in range(args.contracts):
        type_ = args.type if args.type else random.choice(Option.TYPE)
        month = args.month if args.month else random.choice(Option.MONTH)
        option = Option(type_, month)

        print(makebold("{0:>{1}}".format(i + 1, max_id_len)),
              "{0:>5}".format(type_),
              _makeblue('{0:>5}'.format(month)),
              option)