@@ -17,7 +17,8 @@ class YahooDailyCsvBarPriceHandler(AbstractBarPriceHandler):
1717 def __init__ (
1818 self , csv_dir , events_queue ,
1919 init_tickers = None ,
20- start_date = None , end_date = None
20+ start_date = None , end_date = None ,
21+ calc_adj_returns = False
2122 ):
2223 """
2324 Takes the CSV directory, the events queue and a possible
@@ -35,6 +36,9 @@ def __init__(
3536 self .start_date = start_date
3637 self .end_date = end_date
3738 self .bar_stream = self ._merge_sort_ticker_data ()
39+ self .calc_adj_returns = calc_adj_returns
40+ if self .calc_adj_returns :
41+ self .adj_close_returns = []
3842
3943 def _open_ticker_price_csv (self , ticker ):
4044 """
@@ -126,6 +130,28 @@ def _create_event(self, index, period, ticker, row):
126130 )
127131 return bev
128132
133+ def _store_event (self , event ):
134+ """
135+ Store price event for closing price and adjusted closing price
136+ """
137+ ticker = event .ticker
138+ # If the calc_adj_returns flag is True, then calculate
139+ # and store the full list of adjusted closing price
140+ # percentage returns in a list
141+ # TODO: Make this faster
142+ if self .calc_adj_returns :
143+ prev_adj_close = self .tickers [ticker ][
144+ "adj_close"
145+ ] / PriceParser .PRICE_MULTIPLIER
146+ cur_adj_close = event .adj_close_price / PriceParser .PRICE_MULTIPLIER
147+ self .tickers [ticker ][
148+ "adj_close_ret"
149+ ] = cur_adj_close / prev_adj_close - 1.0
150+ self .adj_close_returns .append (self .tickers [ticker ]["adj_close_ret" ])
151+ self .tickers [ticker ]["close" ] = event .close_price
152+ self .tickers [ticker ]["adj_close" ] = event .adj_close_price
153+ self .tickers [ticker ]["timestamp" ] = event .time
154+
129155 def stream_next (self ):
130156 """
131157 Place the next BarEvent onto the event queue.
0 commit comments