Class: FinModeling::BalanceSheetCalculation
Constant Summary
collapse
- ASSETS_GOAL =
"assets"
- ASSETS_LABELS =
[ /(^total *|^consolidated *|^)assets(| BS)$/,
/^assets total$/ ]
- ASSETS_ANTI_LABELS =
[ ]
- ASSETS_IDS =
[ /^(|Locator_|loc_)(|us-gaap_)Assets[_a-z0-9]+/ ]
- LIABS_AND_EQ_GOAL =
"liabilities and equity"
- LIABS_AND_EQ_LABELS =
[ /(^total *|^)liabilities.*and.*(equity|stockholders investment)/ ]
- LIABS_AND_EQ_ANTI_LABELS =
[ ]
- LIABS_AND_EQ_IDS =
[ /.*/ ]
Instance Attribute Summary
#calculation
Instance Method Summary
collapse
#initialize, #label, #leaf_items, #leaf_items_sum, #periods, #summary
Instance Method Details
#assets_calculation ⇒ Object
#is_balanced ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/finmodeling/balance_sheet_calculation.rb', line 65
def is_balanced
left = assets_calculation .leaf_items_sum(:period => periods.last, :mapping => assets_calculation.mapping)
right = liabs_and_equity_calculation.leaf_items_sum(:period => periods.last, :mapping => liabs_and_equity_calculation.mapping)
is_bal = (left - right) < ((0.5*(left + right))/1000.0)
if !is_bal
puts "balance sheet last period: #{periods.last.inspect}"
puts "balance sheet left side: #{left}"
puts "balance sheet right side: #{right}"
puts "left:"
assets_calculation.summary(:period => periods.last).print
puts "right:"
liabs_and_equity_calculation.summary(:period => periods.last).print
end
is_bal
end
|
#is_valid? ⇒ Boolean
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/finmodeling/balance_sheet_calculation.rb', line 31
def is_valid?
puts "balance sheet's assets calculation lacks cash item" if !assets_calculation.has_cash_item
puts "balance sheet's liabilities and equity calculation lacks equity item" if !liabs_and_equity_calculation.has_equity_item
puts "balance sheet's isn't balanced" if !is_balanced
if !assets_calculation.has_cash_item || !liabs_and_equity_calculation.has_equity_item || !is_balanced
if assets_calculation
puts "assets summary:"
assets_calculation.summary(:period => periods.last).print
end
if liabs_and_equity_calculation
puts "liabs & equity summary:"
liabs_and_equity_calculation.summary(:period => periods.last).print
end
puts "calculation tree:\n" + self.calculation.sprint_tree(indent_count=0, simplified=true)
end
return (assets_calculation.has_cash_item &&
liabs_and_equity_calculation.has_equity_item &&
is_balanced)
end
|
#liabs_and_equity_calculation ⇒ Object
53
54
55
56
57
|
# File 'lib/finmodeling/balance_sheet_calculation.rb', line 53
def reformulated(period)
return ReformulatedBalanceSheet.new(period,
assets_calculation .summary(:period=>period),
liabs_and_equity_calculation.summary(:period=>period))
end
|
#write_constructor(file, item_name) ⇒ Object
59
60
61
62
63
|
# File 'lib/finmodeling/balance_sheet_calculation.rb', line 59
def write_constructor(file, item_name)
item_calc_name = item_name + "_calc"
@calculation.write_constructor(file, item_calc_name)
file.puts "#{item_name} = FinModeling::BalanceSheetCalculation.new(#{item_calc_name})"
end
|