Skip to content

Instantly share code, notes, and snippets.

@vladimirmyshkovski
Last active January 12, 2020 10:25
Show Gist options
  • Save vladimirmyshkovski/67cbc58a668f07d2b712ed43c1704150 to your computer and use it in GitHub Desktop.
Save vladimirmyshkovski/67cbc58a668f07d2b712ed43c1704150 to your computer and use it in GitHub Desktop.
# Функция рассчитывающая ex dividend date
def _ex_dividend_date_func(self):
if self.ex_dividend_date:
return self.ex_dividend_date
if self.dps == 0 and self.record_date is not None \
or self.dps != 0 and self.record_date is None:
raise Exception('Record_date должен быть пустым, если dps = 0')
if self.dps == 0 or self.ticker.exchange is None:
return None
if self.ticker.exchange.code == 'MCX':
if self.record_date <= datetime(2013, 9, 1).date():
return get_next_working_day(self.record_date,
self.ticker.exchange)
else:
return get_pre_working_day(self.record_date,
self.ticker.exchange)
else:
return get_pre_working_day(self.record_date,
self.ticker.exchange)
# Функция рассчитывающая payment date
def _payment_date_func(self):
if self.payment_date:
return self.payment_date
if self.dps == 0 and self.record_date is not None \
or self.dps != 0 and self.record_date is None:
raise Exception('Record_date должен быть пустым, если dps = 0')
if self.dps == 0 or self.decision == self.REC_DECISION \
or self.ticker.exchange is None:
return None
if self.record_date >= datetime(2014, 1, 1).date():
_date = self.record_date
# TODO: Доработать, текущая реализация слишком плохая
for _ in range(20):
_date = get_next_working_day(_date, self.ticker.exchange)
return _date
else:
if self.meeting_date is None:
return None
_date = self.meeting_date
# TODO: Доработать, текущая реализация слишком плохая
for _ in range(40):
_date = get_next_working_day(_date, self.ticker.exchange)
return _date
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment