class CapitalIncreaseHistoryDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol' : param['stock_symbol'], 
            'data' : self.__build_data_param(param),
            'category_field' : 'year',
            'base_path' : './report/chart/data/capital_increase_history/',
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        stock_symbol = param['stock_symbol']
        analyzer = CapitalIncreaseHistoryAnalyzer(stock_symbol)
        capital_increase_by_cash = analyzer.get_capital_increase_by_cash().get()
        capital_increase_by_earnings = analyzer.get_capital_increase_by_earnings().get()
        capital_increase_by_surplus = analyzer.get_capital_increase_by_surplus().get()
        return {
            'capital_increase_by_cash' : { 
                'value' : capital_increase_by_cash,
                'format' : 'float',
            },
            'capital_increase_by_earnings' : {
                'value' : capital_increase_by_earnings,
                'format' : 'float', 
            },
            'capital_increase_by_surplus' : {
                'value' : capital_increase_by_surplus,
                'format' : 'float',
            }
        }
class DividendPolicyDataCreator:
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            "stock_symbol": param["stock_symbol"],
            "data": self.__build_data_param(param),
            "category_field": "year",
            "base_path": "./report/chart/data/dividend_policy/",
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        stock_symbol = param["stock_symbol"]
        analyzer = DividendPolicyAnalyzer(stock_symbol)
        cash_dividends = analyzer.get_cash_dividends().get()
        stock_dividends_from_retained_earnings = analyzer.get_stock_dividends_from_retained_earnings().get()
        stock_dividends_from_capital_reserve = analyzer.get_stock_dividends_from_capital_reserve().get()
        stock_dividends = analyzer.get_stock_dividends().get()
        employee_stock_bonus_ratio = analyzer.get_employee_stock_bonus_ratio().get()
        return {
            "cash_dividends": {"value": cash_dividends, "format": "float"},
            "stock_dividends_from_retained_earnings": {
                "value": stock_dividends_from_retained_earnings,
                "format": "float",
            },
            "stock_dividends_from_capital_reserve": {"value": stock_dividends_from_capital_reserve, "format": "float"},
            "stock_dividends": {"value": stock_dividends, "format": "float"},
            "employee_stock_bonus_ratio": {"value": employee_stock_bonus_ratio, "format": "percentage"},
        }
Beispiel #3
0
class KnDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol' : param['stock_symbol'], 
            'data' : self.__build_data_param(param),
            'category_field' : 'date',
            'base_path' : self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = KnAnalyzer(stock_symbol=param['stock_symbol'], period=param['period'])
        min_kn = analyzer.get_min_kn().get()
        max_kn = analyzer.get_max_kn().get()
        return {
            'min_kn' : { 
                'value' : min_kn,
                'format' : 'percentage',
            },
            'max_kn' : {
                'value' : max_kn,
                'format' : 'percentage',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/kn/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/kn/quarterly/'
class CashFlowDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol' : param['stock_symbol'], 
            'data' : self.__build_data_param(param),
            'category_field' : 'date',
            'base_path' : self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = CashFlowAnalyzer(stock_symbol=param['stock_symbol'], period=param['period'])
        net_profit = analyzer.get_net_profit().get()
        cash_flow_from_operating_activities = analyzer.get_cash_flow_from_operating_activities().get()
        cash_flow_from_investing_activities = analyzer.get_cash_flow_from_investing_activities().get()
        cash_flow_from_financing_activities = analyzer.get_cash_flow_from_financing_activities().get()
        free_cash_flow = analyzer.get_free_cash_flow().get()
        accumulated_free_cash_flow = analyzer.get_accumulated_free_cash_flow().get()
        long_term_investments_to_assets_ratio = analyzer.get_long_term_investments_to_assets_ratio().get()
        return {
            'net_profit' : { 
                'value' : net_profit,
                'format' : 'integer',
            },
            'cash_flow_from_operating_activities' : {
                'value' : cash_flow_from_operating_activities,
                'format' : 'integer',
            },
            'cash_flow_from_investing_activities' : {
                'value' : cash_flow_from_investing_activities,
                'format' : 'integer',
            },
            'cash_flow_from_financing_activities' : {
                'value' : cash_flow_from_financing_activities,
                'format' : 'integer',
            },
            'free_cash_flow' : {
                'value' : free_cash_flow,
                'format' : 'integer',
            },
            'accumulated_free_cash_flow' : {
                'value' : accumulated_free_cash_flow,
                'format' : 'integer',
            },
            'long_term_investments_to_assets_ratio' : {
                'value' : long_term_investments_to_assets_ratio,
                'format' : 'percentage',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/cash_flow/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/cash_flow/quarterly/'
class RevenueIndexDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol': param['stock_symbol'],
            'data': self.__build_data_param(param),
            'category_field': 'date',
            'base_path': self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = RevenueIndexAnalyzer(stock_symbol=param['stock_symbol'],
                                        period=param['period'])
        inventory_index = analyzer.get_inventory_index().get()
        accounts_receivable_index = analyzer.get_accounts_receivable_index(
        ).get()
        gross_profit_index = analyzer.get_gross_profit_index().get()
        selling_and_administrative_expenses_index = analyzer.get_selling_and_administrative_expenses_index(
        ).get()
        accounts_payable_index = analyzer.get_accounts_payable_index().get()
        return {
            'inventory_index': {
                'value': inventory_index,
                'format': 'float',
            },
            'accounts_receivable_index': {
                'value': accounts_receivable_index,
                'format': 'float',
            },
            'gross_profit_index': {
                'value': gross_profit_index,
                'format': 'float',
            },
            'selling_and_administrative_expenses_index': {
                'value': selling_and_administrative_expenses_index,
                'format': 'float',
            },
            'accounts_payable_index': {
                'value': accounts_payable_index,
                'format': 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/revenue_index/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/revenue_index/quarterly/'
class CapitalStructureDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol': param['stock_symbol'],
            'data': self.__build_data_param(param),
            'category_field': 'date',
            'base_path': self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = CapitalStructureAnalyzer(stock_symbol=param['stock_symbol'],
                                            period=param['period'])
        equity_ratio = analyzer.get_equity_ratio().get()
        liabilities_ratio = analyzer.get_liabilities_ratio().get()
        true_liabilities_ratio = analyzer.get_true_liabilities_ratio().get()
        equity_multiplier = analyzer.get_equity_multiplier().get()
        long_term_capital_to_fixed_assets_ratio = analyzer.get_long_term_capital_to_fixed_assets_ratio(
        ).get()
        return {
            'equity_ratio': {
                'value': equity_ratio,
                'format': 'percentage',
            },
            'liabilities_ratio': {
                'value': liabilities_ratio,
                'format': 'percentage',
            },
            'true_liabilities_ratio': {
                'value': true_liabilities_ratio,
                'format': 'percentage',
            },
            'equity_multiplier': {
                'value': equity_multiplier,
                'format': 'float',
            },
            'long_term_capital_to_fixed_assets_ratio': {
                'value': long_term_capital_to_fixed_assets_ratio,
                'format': 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/capital_structure/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/capital_structure/quarterly/'
Beispiel #7
0
class DupontDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol': param['stock_symbol'],
            'data': self.__build_data_param(param),
            'category_field': 'date',
            'base_path': self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = DupontAnalyzer(stock_symbol=param['stock_symbol'],
                                  period=param['period'])
        roe = analyzer.get_roe().get()
        roa = analyzer.get_roa().get()
        ros = analyzer.get_ros().get()
        ato = analyzer.get_ato().get()
        equity_multiplier = analyzer.get_equity_multiplier().get()
        return {
            'roe': {
                'value': roe,
                'format': 'percentage',
            },
            'roa': {
                'value': roa,
                'format': 'percentage',
            },
            'ros': {
                'value': ros,
                'format': 'percentage',
            },
            'ato': {
                'value': ato,
                'format': 'percentage',
            },
            'equity_multiplier': {
                'value': equity_multiplier,
                'format': 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/dupont/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/dupont/quarterly/'
class CapitalStructureDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol' : param['stock_symbol'], 
            'data' : self.__build_data_param(param),
            'category_field' : 'date',
            'base_path' : self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = CapitalStructureAnalyzer(stock_symbol=param['stock_symbol'], period=param['period'])
        equity_ratio = analyzer.get_equity_ratio().get()
        liabilities_ratio = analyzer.get_liabilities_ratio().get()
        true_liabilities_ratio = analyzer.get_true_liabilities_ratio().get()
        equity_multiplier = analyzer.get_equity_multiplier().get()
        long_term_capital_to_fixed_assets_ratio = analyzer.get_long_term_capital_to_fixed_assets_ratio().get()
        return {
            'equity_ratio' : { 
                'value' : equity_ratio,
                'format' : 'percentage',
            },
            'liabilities_ratio' : {
                'value' : liabilities_ratio,
                'format' : 'percentage',
            },
            'true_liabilities_ratio' : {
                'value' : true_liabilities_ratio,
                'format' : 'percentage',
            },
            'equity_multiplier' : {
                'value' : equity_multiplier,
                'format' : 'float',
            },
            'long_term_capital_to_fixed_assets_ratio' : {
                'value' : long_term_capital_to_fixed_assets_ratio,
                'format' : 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/capital_structure/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/capital_structure/quarterly/'
class DupontDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol' : param['stock_symbol'], 
            'data' : self.__build_data_param(param),
            'category_field' : 'date',
            'base_path' : self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = DupontAnalyzer(stock_symbol=param['stock_symbol'], period=param['period'])
        roe = analyzer.get_roe().get()
        roa = analyzer.get_roa().get()
        ros = analyzer.get_ros().get()
        ato = analyzer.get_ato().get()
        equity_multiplier = analyzer.get_equity_multiplier().get()
        return {
            'roe' : { 
                'value' : roe,
                'format' : 'percentage',
            },
            'roa' : {
                'value' : roa,
                'format' : 'percentage',
            },
            'ros' : {
                'value' : ros,
                'format' : 'percentage', 
            },
            'ato' : {
                'value' : ato,
                'format' : 'percentage',
            },
            'equity_multiplier' : {
                'value' : equity_multiplier,
                'format' : 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/dupont/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/dupont/quarterly/'
class RevenueIndexDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol' : param['stock_symbol'], 
            'data' : self.__build_data_param(param),
            'category_field' : 'date',
            'base_path' : self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = RevenueIndexAnalyzer(stock_symbol=param['stock_symbol'], period=param['period'])
        inventory_index = analyzer.get_inventory_index().get()
        accounts_receivable_index = analyzer.get_accounts_receivable_index().get()
        gross_profit_index = analyzer.get_gross_profit_index().get()
        selling_and_administrative_expenses_index = analyzer.get_selling_and_administrative_expenses_index().get()
        accounts_payable_index = analyzer.get_accounts_payable_index().get()
        return {
            'inventory_index' : { 
                'value' : inventory_index,
                'format' : 'float',
            },
            'accounts_receivable_index' : {
                'value' : accounts_receivable_index,
                'format' : 'float',
            },
            'gross_profit_index' : {
                'value' : gross_profit_index,
                'format' : 'float',
            },
            'selling_and_administrative_expenses_index' : {
                'value' : selling_and_administrative_expenses_index,
                'format' : 'float',
            },
            'accounts_payable_index' : {
                'value' : accounts_payable_index,
                'format' : 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/revenue_index/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/revenue_index/quarterly/'
Beispiel #11
0
class DividendPolicyDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol': param['stock_symbol'],
            'data': self.__build_data_param(param),
            'category_field': 'year',
            'base_path': './report/chart/data/dividend_policy/',
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        stock_symbol = param['stock_symbol']
        analyzer = DividendPolicyAnalyzer(stock_symbol)
        cash_dividends = analyzer.get_cash_dividends().get()
        stock_dividends_from_retained_earnings = analyzer.get_stock_dividends_from_retained_earnings(
        ).get()
        stock_dividends_from_capital_reserve = analyzer.get_stock_dividends_from_capital_reserve(
        ).get()
        stock_dividends = analyzer.get_stock_dividends().get()
        employee_stock_bonus_ratio = analyzer.get_employee_stock_bonus_ratio(
        ).get()
        return {
            'cash_dividends': {
                'value': cash_dividends,
                'format': 'float',
            },
            'stock_dividends_from_retained_earnings': {
                'value': stock_dividends_from_retained_earnings,
                'format': 'float',
            },
            'stock_dividends_from_capital_reserve': {
                'value': stock_dividends_from_capital_reserve,
                'format': 'float',
            },
            'stock_dividends': {
                'value': stock_dividends,
                'format': 'float',
            },
            'employee_stock_bonus_ratio': {
                'value': employee_stock_bonus_ratio,
                'format': 'percentage',
            },
        }
class OperatingRevenueDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol': param['stock_symbol'],
            'data': self.__build_data_param(param),
            'category_field': 'date',
            'base_path': './report/chart/data/operating_revenue/',
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = OperatingRevenueAnalyzer(stock_symbol=param['stock_symbol'])
        operating_revenue = analyzer.get_operating_revenue().get()
        accumulated_operating_revenue = analyzer.get_accumulated_operating_revenue(
        ).get()
        accumulated_operating_revenue_yoy = analyzer.get_accumulated_operating_revenue_yoy(
        ).get()
        long_term_average = analyzer.get_long_term_average().get()
        short_term_average = analyzer.get_short_term_average().get()
        return {
            'operating_revenue': {
                'value': operating_revenue,
                'format': 'integer',
            },
            'accumulated_operating_revenue': {
                'value': accumulated_operating_revenue,
                'format': 'integer',
            },
            'accumulated_operating_revenue_yoy': {
                'value': accumulated_operating_revenue_yoy,
                'format': 'percentage',
            },
            'long_term_average': {
                'value': long_term_average,
                'format': 'integer',
            },
            'short_term_average': {
                'value': short_term_average,
                'format': 'integer',
            },
        }
class OperatingRevenueDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol' : param['stock_symbol'], 
            'data' : self.__build_data_param(param),
            'category_field' : 'date',
            'base_path' : './report/chart/data/operating_revenue/',
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = OperatingRevenueAnalyzer(stock_symbol=param['stock_symbol'])
        operating_revenue = analyzer.get_operating_revenue().get()
        accumulated_operating_revenue = analyzer.get_accumulated_operating_revenue().get()
        accumulated_operating_revenue_yoy = analyzer.get_accumulated_operating_revenue_yoy().get()
        long_term_average = analyzer.get_long_term_average().get()
        short_term_average = analyzer.get_short_term_average().get()
        return {
            'operating_revenue' : { 
                'value' : operating_revenue,
                'format' : 'integer',
            },
            'accumulated_operating_revenue' : {
                'value' : accumulated_operating_revenue,
                'format' : 'integer',
            },
            'accumulated_operating_revenue_yoy' : {
                'value' : accumulated_operating_revenue_yoy,
                'format' : 'percentage',
            },
            'long_term_average' : {
                'value' : long_term_average,
                'format' : 'integer',
            },
            'short_term_average' : {
                'value' : short_term_average,
                'format' : 'integer',
            },
        }
Beispiel #14
0
class LiquidityDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol': param['stock_symbol'],
            'data': self.__build_data_param(param),
            'category_field': 'date',
            'base_path': self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = LiquidityAnalyzer(stock_symbol=param['stock_symbol'],
                                     period=param['period'])
        current_ratio = analyzer.get_current_ratio().get()
        quick_ratio = analyzer.get_quick_ratio().get()
        interest_protection_multiples = analyzer.get_interest_protection_multiples(
        ).get()
        return {
            'current_ratio': {
                'value': current_ratio,
                'format': 'float',
            },
            'quick_ratio': {
                'value': quick_ratio,
                'format': 'float',
            },
            'interest_protection_multiples': {
                'value': interest_protection_multiples,
                'format': 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/liquidity/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/liquidity/quarterly/'
class LiquidityDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol' : param['stock_symbol'], 
            'data' : self.__build_data_param(param),
            'category_field' : 'date',
            'base_path' : self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = LiquidityAnalyzer(stock_symbol=param['stock_symbol'], period=param['period'])
        current_ratio = analyzer.get_current_ratio().get()
        quick_ratio = analyzer.get_quick_ratio().get()
        interest_protection_multiples = analyzer.get_interest_protection_multiples().get()
        return {
            'current_ratio' : { 
                'value' : current_ratio,
                'format' : 'float',
            },
            'quick_ratio' : {
                'value' : quick_ratio,
                'format' : 'float',
            },
            'interest_protection_multiples' : {
                'value' : interest_protection_multiples,
                'format' : 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/liquidity/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/liquidity/quarterly/'
Beispiel #16
0
class CapitalIncreaseHistoryDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol': param['stock_symbol'],
            'data': self.__build_data_param(param),
            'category_field': 'year',
            'base_path': './report/chart/data/capital_increase_history/',
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        stock_symbol = param['stock_symbol']
        analyzer = CapitalIncreaseHistoryAnalyzer(stock_symbol)
        capital_increase_by_cash = analyzer.get_capital_increase_by_cash().get(
        )
        capital_increase_by_earnings = analyzer.get_capital_increase_by_earnings(
        ).get()
        capital_increase_by_surplus = analyzer.get_capital_increase_by_surplus(
        ).get()
        return {
            'capital_increase_by_cash': {
                'value': capital_increase_by_cash,
                'format': 'float',
            },
            'capital_increase_by_earnings': {
                'value': capital_increase_by_earnings,
                'format': 'float',
            },
            'capital_increase_by_surplus': {
                'value': capital_increase_by_surplus,
                'format': 'float',
            }
        }
 def __init__(self):
     self.data_creator = DataCreator()
class ProfitabilityDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol' : param['stock_symbol'], 
            'data' : self.__build_data_param(param),
            'category_field' : 'date',
            'base_path' : self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = ProfitabilityAnalyzer(stock_symbol=param['stock_symbol'], period=param['period'])
        gross_profit_margin = analyzer.get_gross_profit_margin().get()
        operating_profit_margin = analyzer.get_operating_profit_margin().get()
        net_profit_before_tax_margin = analyzer.get_net_profit_before_tax_margin().get()
        net_profit_margin = analyzer.get_net_profit_margin().get()

        # Cash Conversion Cycle (CCC)
        dio = analyzer.get_dio().get()
        dso = analyzer.get_dso().get()
        dpo = analyzer.get_dpo().get()
        ccc = analyzer.get_cash_conversion_cycle().get()

        return {
            'gross_profit_margin' : { 
                'value' : gross_profit_margin,
                'format' : 'percentage',
            },
            'operating_profit_margin' : {
                'value' : operating_profit_margin,
                'format' : 'percentage',
            },
            'net_profit_before_tax_margin' : {
                'value' : net_profit_before_tax_margin,
                'format' : 'percentage',
            },
            'net_profit_margin' : {
                'value' : net_profit_margin,
                'format' : 'percentage',
            },
            'dio' : {
                'value' : dio,
                'format' : 'float',
            },
            'dso' : {
                'value' : dso,
                'format' : 'float',
            },
            'dpo' : {
                'value' : dpo,
                'format' : 'float',
            },
            'ccc' : {
                'value' : ccc,
                'format' : 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/profitability/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/profitability/quarterly/'
Beispiel #19
0
 def __init__(self):
     self.data_creator = DataCreator()
class ProfitabilityDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol': param['stock_symbol'],
            'data': self.__build_data_param(param),
            'category_field': 'date',
            'base_path': self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = ProfitabilityAnalyzer(stock_symbol=param['stock_symbol'],
                                         period=param['period'])
        gross_profit_margin = analyzer.get_gross_profit_margin().get()
        operating_profit_margin = analyzer.get_operating_profit_margin().get()
        net_profit_before_tax_margin = analyzer.get_net_profit_before_tax_margin(
        ).get()
        net_profit_margin = analyzer.get_net_profit_margin().get()

        # Cash Conversion Cycle (CCC)
        dio = analyzer.get_dio().get()
        dso = analyzer.get_dso().get()
        dpo = analyzer.get_dpo().get()
        ccc = analyzer.get_cash_conversion_cycle().get()

        return {
            'gross_profit_margin': {
                'value': gross_profit_margin,
                'format': 'percentage',
            },
            'operating_profit_margin': {
                'value': operating_profit_margin,
                'format': 'percentage',
            },
            'net_profit_before_tax_margin': {
                'value': net_profit_before_tax_margin,
                'format': 'percentage',
            },
            'net_profit_margin': {
                'value': net_profit_margin,
                'format': 'percentage',
            },
            'dio': {
                'value': dio,
                'format': 'float',
            },
            'dso': {
                'value': dso,
                'format': 'float',
            },
            'dpo': {
                'value': dpo,
                'format': 'float',
            },
            'ccc': {
                'value': ccc,
                'format': 'float',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/profitability/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/profitability/quarterly/'
Beispiel #21
0
class CashFlowDataCreator():
    def __init__(self):
        self.data_creator = DataCreator()

    def create(self, param):
        create_param = {
            'stock_symbol': param['stock_symbol'],
            'data': self.__build_data_param(param),
            'category_field': 'date',
            'base_path': self.__build_base_path(param),
        }
        return self.data_creator.create(create_param)

    def __build_data_param(self, param):
        analyzer = CashFlowAnalyzer(stock_symbol=param['stock_symbol'],
                                    period=param['period'])
        net_profit = analyzer.get_net_profit().get()
        cash_flow_from_operating_activities = analyzer.get_cash_flow_from_operating_activities(
        ).get()
        cash_flow_from_investing_activities = analyzer.get_cash_flow_from_investing_activities(
        ).get()
        cash_flow_from_financing_activities = analyzer.get_cash_flow_from_financing_activities(
        ).get()
        free_cash_flow = analyzer.get_free_cash_flow().get()
        accumulated_free_cash_flow = analyzer.get_accumulated_free_cash_flow(
        ).get()
        long_term_investments_to_assets_ratio = analyzer.get_long_term_investments_to_assets_ratio(
        ).get()
        return {
            'net_profit': {
                'value': net_profit,
                'format': 'integer',
            },
            'cash_flow_from_operating_activities': {
                'value': cash_flow_from_operating_activities,
                'format': 'integer',
            },
            'cash_flow_from_investing_activities': {
                'value': cash_flow_from_investing_activities,
                'format': 'integer',
            },
            'cash_flow_from_financing_activities': {
                'value': cash_flow_from_financing_activities,
                'format': 'integer',
            },
            'free_cash_flow': {
                'value': free_cash_flow,
                'format': 'integer',
            },
            'accumulated_free_cash_flow': {
                'value': accumulated_free_cash_flow,
                'format': 'integer',
            },
            'long_term_investments_to_assets_ratio': {
                'value': long_term_investments_to_assets_ratio,
                'format': 'percentage',
            },
        }

    def __build_base_path(self, param):
        if param['period'] == 'Y':
            return './report/chart/data/cash_flow/yearly/'
        elif param['period'] == 'Q':
            return './report/chart/data/cash_flow/quarterly/'