Class: FinModeling::FamaFrench::EquityHistoricalData
- Inherits:
-
Object
- Object
- FinModeling::FamaFrench::EquityHistoricalData
- Defined in:
- lib/finmodeling/fama_french_cost_of_equity.rb
Instance Method Summary collapse
- #filter_by_date!(dates_to_keep) ⇒ Object
-
#initialize(company_ticker, num_days) ⇒ EquityHistoricalData
constructor
A new instance of EquityHistoricalData.
- #monthly_excess_returns(rf, dividends = []) ⇒ Object
- #monthly_returns(dividends = []) ⇒ Object
- #year_and_month_strings ⇒ Object
Constructor Details
#initialize(company_ticker, num_days) ⇒ EquityHistoricalData
Returns a new instance of EquityHistoricalData.
56 57 58 59 60 61 62 |
# File 'lib/finmodeling/fama_french_cost_of_equity.rb', line 56 def initialize(company_ticker, num_days) daily_quotes = YahooFinance::get_HistoricalQuotes_days(URI::encode(company_ticker), num_days) @monthly_quotes = daily_quotes.group_by{ |x| x.date.gsub(/-[0-9][0-9]$/, "") } .values .map{ |x| x.sort{ |x,y| x.date <=> y.date }.first } .sort{ |x,y| x.date <=> y.date }[1..-1] end |
Instance Method Details
#filter_by_date!(dates_to_keep) ⇒ Object
68 69 70 |
# File 'lib/finmodeling/fama_french_cost_of_equity.rb', line 68 def filter_by_date!(dates_to_keep) @monthly_quotes = @monthly_quotes.select{ |x| dates_to_keep.include?(x.date.gsub(/-[0-9][0-9]$/, "").gsub(/-/, "")) } end |
#monthly_excess_returns(rf, dividends = []) ⇒ Object
81 82 83 84 85 86 87 88 89 |
# File 'lib/finmodeling/fama_french_cost_of_equity.rb', line 81 def monthly_excess_returns(rf, dividends=[]) @monthly_quotes.each_cons(2) .map { |pair| div_entry = dividends.find{ |d| d[:ex_eff_date].strftime("%Y-%m") == pair[1].date.gsub(/-[0-9][0-9]$/, "") } dividend = div_entry ? div_entry[:cash_amt] : 0.0 (pair[1].adjClose - pair[0].adjClose + dividend) / pair[0].adjClose } .zip(rf).map{ |pair| pair[0] - pair[1] } end |
#monthly_returns(dividends = []) ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/finmodeling/fama_french_cost_of_equity.rb', line 72 def monthly_returns(dividends=[]) @monthly_quotes.each_cons(2) .map { |pair| div_entry = dividends.find{ |d| d[:ex_eff_date].strftime("%Y-%m") == pair[1].date.gsub(/-[0-9][0-9]$/, "") } dividend = div_entry ? div_entry[:cash_amt] : 0.0 (pair[1].adjClose - pair[0].adjClose + dividend) / pair[0].adjClose } end |
#year_and_month_strings ⇒ Object
64 65 66 |
# File 'lib/finmodeling/fama_french_cost_of_equity.rb', line 64 def year_and_month_strings @monthly_quotes.map{ |x| x.date.gsub(/-[0-9][0-9]$/, "").gsub(/-/, "") } end |