def _handle_dividend_payable(self, trading_date):
"""handle dividend payable before trading
"""
to_delete_dividend = []
for order_book_id, dividend_info in six.iteritems(self.portfolio._dividend_info):
dividend_series_dict = dividend_info.dividend_series_dict
if pd.Timestamp(trading_date) == pd.Timestamp(dividend_series_dict['payable_date']):
dividend_per_share = dividend_series_dict["dividend_cash_before_tax"] / dividend_series_dict["round_lot"]
if dividend_per_share > 0 and dividend_info.quantity > 0:
dividend_cash = dividend_per_share * dividend_info.quantity
self.portfolio._dividend_receivable -= dividend_cash
self.portfolio._cash += dividend_cash
# user_log.info(_("get dividend {dividend} for {order_book_id}").format(
# dividend=dividend_cash,
# order_book_id=order_book_id,
# ))
to_delete_dividend.append(order_book_id)
for order_book_id in to_delete_dividend:
self.portfolio._dividend_info.pop(order_book_id, None)
评论列表
文章目录