Source code for omaha.company
from cachetools import cached
from dateutil import parser
import pandas as pd
import quandl
from omaha.joinable import Joinable
[docs]class Company(Joinable):
"""Container for the financial indicators of the public company
Attributes:
ticker (str): Ticker symbol
from_q (str): Beginning quarter of the target range
to_q (str): End quarter of the target range
client (Client): BuffettCode API Client
"""
def __init__(self, ticker, from_q, to_q, client):
self.ticker = ticker
self.client = client
self.from_q = from_q
self.to_q = to_q
super().__init__([self])
[docs] @classmethod
def dict_pairs(cls, d, keys):
return {k: v for k, v in d.items() if k in keys}
@cached(cache={})
def __get(self, from_q, to_q):
return self.client.quarter(self.ticker, from_q, to_q)
def __str__(self):
return f"Company({self.ticker}, {self.from_q}, {self.to_q})"
def __repr__(self):
return self.__str__()
[docs] def get(self, item):
res = self.__get(self.from_q, self.to_q)
keys = [item, "fiscal_year", "fiscal_quarter"]
return [Company.dict_pairs(d, keys) for d in res[self.ticker]]
[docs] def all(self):
res = self.__get(self.from_q, self.to_q)
return res[self.ticker]
[docs] def raw_df(self):
res = self.__get(self.from_q, self.to_q)
df = pd.DataFrame(res[self.ticker])
index = [pd.Timestamp(s, tz="UTC") for s in df["end_date"]]
df.index = index
return df
[docs]class Stockprice(Joinable):
"""Container for the daily stockprice of the public company.
"""
def __init__(self, ticker, start_date, end_date):
self.ticker = ticker
self.start_date = start_date
self.end_date = end_date
super().__init__([self])
[docs] def raw_df(self):
df = quandl.get(
f"XJPX/{self.ticker}0", start_date=self.start_date, end_date=self.end_date
)
df.index = [pd.Timestamp(s, tz="UTC") for s in df.index]
return df