Exemple #1
0
    def test_calc_annual_return(self):
        date = pd.Timestamp("2012-01-02")
        dated_metric = DatedMetric(date)

        # verify that the method is just partial application of the superclass' method
        with patch("fa.analysis.finance.Metric.calc_annual_return", MagicMock(return_value=0)) as mock_calc_annual_return:
            ret = dated_metric.calc_annual_return(1, b=2)
            mock_calc_annual_return.assert_called_once_with(date, 1, b=2)

        self.assertEqual(ret, 0)
Exemple #2
0
    def test_calc_debt_to_asset_ratio(self):
        balance_sheet_data = {
            "Total Liabilities / Total Assets": [0.69, 0.68, 0.67]
        }
        balance_sheet_index = pd.to_datetime(["2012-01-01", "2012-01-02", "2012-01-03"])

        dated_metric = DatedMetric(
            pd.Timestamp("2012-01-03"),
            balance_sheet=pd.DataFrame(balance_sheet_data, index=balance_sheet_index),
            financial_report_preparation_lag=np.timedelta64(1, 'D')
        )

        debt_ratio = dated_metric.calc_debt_to_asset_ratio()

        # because of 1 day financial_report_preparation_lag
        self.assertEqual(debt_ratio, 0.68)
Exemple #3
0
    def test_calc_profit_margin(self):
        income_statement_data = {
            "Gross Income": [62, 50, 36],
            "Sales/Revenue": [3.1, 2.0, 1.2]
        }
        income_statement_index = pd.to_datetime(["2012-01-01", "2012-01-02", "2012-01-03"])

        dated_metric = DatedMetric(
            pd.Timestamp("2012-01-03"),
            income_statement=pd.DataFrame(income_statement_data, index=income_statement_index),
            financial_report_preparation_lag=np.timedelta64(1, 'D')
        )

        gross_profit_margin = dated_metric.calc_profit_margin("gross")

        # because of 1 day financial_report_preparation_lag
        self.assertEqual(gross_profit_margin, 25)
Exemple #4
0
    def test_calc_pe_ratio(self):
        historical_data = {"Adj Close": [3.0, 3.5, 4.2], "Close": [3.0, 5.0, 4.2]}
        historical_index = pd.to_datetime(["2012-01-01", "2012-01-03", "2012-01-05"])

        income_statement_data = {"EPS (Basic)": [1.2, 2.5, 3.5], "EPS (Diluted)": [6.0, 4.0, 8.0]}
        income_statement_index = pd.to_datetime(["2012-01-01", "2012-01-02", "2012-01-03"])

        dated_metric = DatedMetric(
            pd.Timestamp("2012-01-03"),
            historical=pd.DataFrame(historical_data, index=historical_index),
            income_statement=pd.DataFrame(income_statement_data, index=income_statement_index),
            financial_report_preparation_lag=np.timedelta64(1, 'D')
        )

        pe_ratios1 = dated_metric.calc_pe_ratio()
        pe_ratios2 = dated_metric.calc_pe_ratio("Close", "EPS (Diluted)")

        # because of 1 day financial_report_preparation_lag
        self.assertEqual(pe_ratios1, 1.4)
        self.assertEqual(pe_ratios2, 1.25)