Beispiel #1
0
    def fund_port_chart(self):
        fund_name         = self._input_dto.fund_name
        issue_snapshot    = FundRepo().find_fund_issue_list_order_datetime(fund_name)
        fund_domain_ipnut = FundDomainInputDto(issue_snapshot) 

        port_chart_list = FundDomainService(fund_domain_ipnut).build_fund_port_chart()
        return FundOutputDto(port_chart_list)
Beispiel #2
0
 def fund_report(self):
     fund_name         = self._input_dto.fund_name
     report_snapshot   = FundRepo().find_report_list_order_datetime(fund_name)
     fund_domain_input = FundDomainInputDto(report_snapshot)
     
     report_chart = FundDomainService(fund_domain_input).build_report_chart()
     return FundOutputDto(report_chart[-1])
     
Beispiel #3
0
    def cummulative_return(self):
        fund_name              = self._input_dto.fund_name
        issue_history_snapshot = self._fund_repo.find_fund_issue_history(fund_name)
        domain_input           = FundDomainInputDto(issue_history_snapshot, [priceFiled])

        if len(issue_history_snapshot) <= 0:
            raise InsuffiientError
        cum_return = FundDomainService(domain_input).build_cum_return(rounding)
        return FundOutputDto(cum_return)
Beispiel #4
0
    def deposits(self):
        fund_name = self._input_dto.fund_name
        start     = pd.to_datetime(self._input_dto.start).strftime(defualtOutputDatetime)
        limit     = self._input_dto.limit
        interval  = self._input_dto.interval

        issue_history_snapshot = self._fund_repo.find_fund_issue_history(fund_name)
        domain_input           = FundDomainInputDto(issue_history_snapshot, [cumIssueQtyFiled, priceFiled])
        deposit_history        = FundDomainService(domain_input).build_trascation_history(rounding)

        if len(deposit_history) <= 0:
            raise InsuffiientError
        deposits = pd.Series(deposit_history).resample(interval).sum()
        series  = create_series(deposits, start, limit, rounding)
        return FundOutputDto(series.to_dict())
Beispiel #5
0
    def get_fund_fundings(self):
        fund_name = self._input_dto.fund_name
        start     = pd.to_datetime(self._input_dto.start).strftime(defualtOutputDatetime)
        limit     = self._input_dto.limit
        interval  = self._input_dto.interval

        funding_history        = self._fund_repo.find_funding_history(fund_name)      
        domain_input           = FundDomainInputDto(funding_history, [profitFiled])
        profit_history         = FundDomainService(domain_input).build_asset_history(rounding)  

        if len(profit_history) <= 0:
            raise InsuffiientError
        funding = pd.Series(profit_history).resample(interval).sum()
        series  = create_series(funding, start, limit, rounding)
        return FundOutputDto(series.to_dict()) 
Beispiel #6
0
    def fund_price(self):
        fund_name = self._input_dto.fund_name
        start     = pd.to_datetime(self._input_dto.start).strftime(defualtOutputDatetime)
        limit     = self._input_dto.limit
        interval  = self._input_dto.interval

        issue_history_snapshot = self._fund_repo.find_fund_issue_history(fund_name)
        domain_input           = FundDomainInputDto(issue_history_snapshot, [priceFiled])
        price_history          = FundDomainService(domain_input).build_asset_history(rounding)
        
        if len(price_history) <= 0:
            raise InsuffiientError
        prices = pd.Series(price_history).resample(interval).bfill()
        series = create_series(prices, start, limit, rounding)
        return FundOutputDto(series.to_dict())
Beispiel #7
0
    def money_flow_history(self):
        fund_name = self._input_dto.fund_name
        interval  = self._input_dto.interval
        fund_repo = FundRepo()

        issue_snapshot   = fund_repo.find_fund_issue_history(fund_name)
        funding_snapshot = fund_repo.find_funding_history(fund_name)

        deposit_domain_input    = FundDomainInputDto(issue_snapshot, [cumIssueQtyFiled, priceFiled])
        withdrawal_domain_input = FundDomainInputDto(issue_snapshot, [cumBurnQtyFiled, priceFiled])
        funding_domain_input    = FundDomainInputDto(funding_snapshot, [profitFiled])

        deposit_history    = FundDomainService(deposit_domain_input).build_trascation_history()
        withdrawal_history = FundDomainService(withdrawal_domain_input).build_trascation_history()
        funding_history    = FundDomainService(funding_domain_input).build_asset_history()

        dataframe = FundDomainService(deposit_domain_input).build_trading_dataframe(deposit_history, withdrawal_history, funding_history, interval)
        return FundOutputDto(dataframe.to_dict(orient='records'))
Beispiel #8
0
    def balance_history(self):
        uid       = self._input_dto.uid
        fund_name = self._input_dto.fund_name
        limit     = self._input_dto.limit
        interval  = self._input_dto.interval

        user_fund_history = self._fund_repo.find_user_fund_history(uid, fund_name)
        funding_history   = self._fund_repo.find_fund_issue_history(fund_name)
        user_domain_input = FundDomainInputDto(funding_history, [priceFiled])
        qty, start        = FundDomainService(user_domain_input).check_user_balance(user_fund_history)
        price_history     = FundDomainService(user_domain_input).build_asset_history(rounding)

        if len(price_history) <= 0:
            raise InsuffiientError
        prices = pd.Series(price_history).resample(interval).sum()
        user_balance = qty * prices
        series = create_series(user_balance, start, limit, rounding)
        return FundOutputDto(series.to_dict())