def sub_cost_for_dividend(self, cash: Decimal): """ 分红后降低成本 :param cash: 拿到的分红钱 :return: """ self.__cost = decimal_utils.sub(self.__cost, cash)
def cal_inc_rate(n: MqQuarterMetric, l: MqQuarterMetric): if n is None or l is None: return None else: if mq_quarter_metric_enum.is_percent_indicator(n.name): return decimal_utils.sub(n.value, l.value) else: return decimal_utils.yoy(n.value, l.value)
def extract_from_income_adjust(result_list: list, store: MqQuarterStore, period_dict: dict, income: TsIncome): update_date = date_utils.format_delta(income.mq_ann_date, -1) nprofit_new = store.find_period_exact(income.ts_code, mq_quarter_metric_enum.nprofit.name, income.end_date, update_date) nprofit_old = store.find_period_latest( income.ts_code, mq_quarter_metric_enum.nprofit.name, income.end_date, date_utils.format_delta(update_date, -1)) dprofit_old = store.find_period_latest( income.ts_code, mq_quarter_metric_enum.dprofit.name, income.end_date, date_utils.format_delta(update_date, -2)) to_add = None if nprofit_new is None: log.error('Cant find nprofit in adjust income. %s %s' % (income.ts_code, income.end_date)) elif nprofit_old is None or dprofit_old is None: to_add = MqQuarterMetric( ts_code=income.ts_code, report_type=(1 << mq_report_type.report_adjust), period=income.end_date, update_date=update_date, name=mq_quarter_metric_enum.dprofit.name, value=nprofit_new.value) else: to_add = MqQuarterMetric( ts_code=income.ts_code, report_type=(1 << mq_report_type.report_adjust), period=income.end_date, update_date=update_date, name=mq_quarter_metric_enum.dprofit.name, value=decimal_utils.sub( nprofit_new.value, decimal_utils.sub(nprofit_old.value, dprofit_old.value))) if to_add is not None: common_add(result_list, store, to_add)
def cal_quarter(name: str, i1: MqQuarterMetric, i2: MqQuarterMetric) -> MqQuarterMetric: if i1 is not None and date_utils.get_quarter_num(i1.period) == 1: return MqQuarterMetric(ts_code=i1.ts_code, report_type=i1.report_type, period=i1.period, update_date=i1.update_date, name=name, value=i1.value) elif i1 is None or i2 is None: return None return MqQuarterMetric(ts_code=i1.ts_code, report_type=i1.report_type | i2.report_type, period=i1.period, update_date=i1.update_date, name=name, value=decimal_utils.sub(i1.value, i2.value))
def sub_from(name: str, arr: list) -> MqQuarterMetric: report_type = 0 sum = None for index, i in enumerate(arr): # type: MqQuarterMetric if i is not None: if sum is None: sum = MqQuarterMetric(ts_code=i.ts_code, period=i.period, update_date=i.update_date, name=name) report_type = report_type | i.report_type if index == 0: sum.value = decimal_utils.add(sum.value, i.value) else: sum.value = decimal_utils.sub(sum.value, i.value) if sum is not None: sum.report_type = report_type return sum