def test_window(self): ''' Two events on two different equities Tests ----- 1. Expected returns 2. Abnormal returns 3. Cumulative abnormal returns 4. Mean of ER, AR, CAR ''' # Set Up self.setUpDataAccess() evt_fin = EventFinder() evt_fin.symbols = ['AMD', 'CBG'] evt_fin.start_date = datetime(2008, 1, 1) evt_fin.end_date = datetime(2009, 12, 31) evt_fin.condition = SampleConditions.went_below(3) evt_fin.search() mul_evt = MultipleEvents() mul_evt.list = evt_fin.list mul_evt.market = 'SPY' mul_evt.lookback_days = 20 mul_evt.lookforward_days = 20 mul_evt.estimation_period = 200 mul_evt.run() self_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) tests = ['MultipleEvents_window_1.csv'] tests = [os.path.join(self_dir, 'docs', test) for test in tests] for test_file in tests: # Set up solution = pd.read_csv(test_file).set_index('index') # Test 1 sol_er = solution[solution.columns[0:2]] sol_er.columns = mul_evt.er.columns sol_er.columns.name = 'Expected return' self.assertEqual(mul_evt.er, sol_er) # Test 2 sol_ar = solution[solution.columns[3:5]] sol_ar.columns = mul_evt.ar.columns sol_ar.columns.name = 'Abnormal return' self.assertEqual(mul_evt.ar, sol_ar) # Test 3 sol_car = solution[solution.columns[6:8]] sol_car.columns = mul_evt.car.columns sol_car.columns.name = 'Cum abnormal return' self.assertEqual(mul_evt.car, sol_car) # Test 4 self.assertEqual(mul_evt.mean_er, solution['Mean ER']) self.assertEqual(mul_evt.mean_ar, solution['Mean AR']) self.assertEqual(mul_evt.mean_car, solution['Mean CAR'])
from datetime import datetime import matplotlib.pyplot as plt from finance.events import EventFinder from finance.events import MultipleEvents from finance.events import SampleConditions # from finance.utils import DataAccess # DataAccess.path = 'data' evtf = EventFinder() evtf.symbols = ['AMD', 'CBG'] evtf.start_date = datetime(2008, 1, 1) evtf.end_date = datetime(2009, 12, 31) evtf.condition = SampleConditions.went_below(3) evtf.search() mevt = MultipleEvents() mevt.list = evtf.list mevt.market = 'SPY' mevt.lookback_days = 20 mevt.lookforward_days = 20 mevt.estimation_period = 200 mevt.run() print(mevt.mean_ar) mevt.plot('car') plt.show()