/
DividendsBuyBacks.py
67 lines (53 loc) · 4.14 KB
/
DividendsBuyBacks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import pandas as pd
from Util import Util
class DividendsBuyBacks(object):
util = Util()
def __init__(self):
pass
# questions:
# how does cash buy back figure into retained earnings?
def calcDividendBuyBacks(self, incomeStmtData, balanceSheetData, cashFlowData):
print "--------------- Dividend Buybacks --------------------------------------------"
# Calculate Retained earnings per share
retainedearningspershare = balanceSheetData.loc[:, "retainedearnings"] / incomeStmtData.loc[:,
"weightedavedilutedsharesos"]
retainedearningspershare.name = "retainedearningspershare"
# Calculate earnings per share
# calculatedearningspershare = incomeStmtData.loc[:, "netincometocommon"] / incomeStmtData.loc[:,
# "weightedavedilutedsharesos"]
# calculatedearningspershare.name = "calculated diluted earnings per share"
# print calculatedearningspershare, incomeStmtData.loc[:, 'dilutedeps']
retainedData = pd.concat([incomeStmtData.loc[:, 'netincometocommon'],
balanceSheetData.loc[:, 'retainedearnings'],
incomeStmtData.loc[:, 'dilutedeps'],
incomeStmtData.loc[:, 'weightedavedilutedsharesos'],
retainedearningspershare,
incomeStmtData.loc[:, "cashdividendspershare"],
cashFlowData.loc[:, "paymentofdividends"],
cashFlowData.loc[:, 'repurchaseofcommonequity']], axis=1)
retainedData = self.util.dropNaInAllColumns(retainedData)
print "\nReturn as percent of income"
print "Year Div StockBuyBack Total %"
for index, row in retainedData.iterrows():
print "{} {:5,.2f}% {:5,.2f}% {:5,.2f}% ".format(index,
((abs(row[
'paymentofdividends']) * 100) /
row['netincometocommon']),
(abs(row[
'repurchaseofcommonequity'] * 100)) /
row['netincometocommon'],
(abs(row[
'paymentofdividends'] * 100)) /
row['netincometocommon'] +
(abs(row[
'repurchaseofcommonequity'] * 100)) /
row['netincometocommon'])
print "\nYear Dividend per share"
for index, row in retainedData.iterrows():
print "{} ${:0,.2f}".format(index, row['cashdividendspershare'])
print "Over {} years:".format(len(retainedData.loc[:,'cashdividendspershare'].index))
print "Total Dividend payout of ${:0,.2f}".format(retainedData['cashdividendspershare'].sum())
payoutRatio = retainedData.loc[:,'cashdividendspershare'].sum() / retainedData.loc[:,'dilutedeps'].sum()
print "Total Dividend payout as percent of earnings is {:0,.2f}%".format(payoutRatio*100)
print "Total Retained ratio is {:0,.2f}%".format(float(1.0 - payoutRatio) * 100)
print "------------------------------------------------------------------------------\n"