Python Multiple Ereignisstudie Regression

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
PyN
User
Beiträge: 12
Registriert: Donnerstag 12. Dezember 2019, 16:09

Hallo zusammen,

bei meiner Ereignisstudie hänge ich gerade an der Regression.
Meine Date sind in zwei Tabellen. Eine Tabelle beinhaltet die Renditen und die andere die Werte für meine Ereignisse. Für beide Tabellen ist der Index das Datum.
Meine erster Ansatz war: (Auszug aus meinem Programm)

Code: Alles auswählen

for s in events_col:
    pos_event_dates=(data_events[s]==1).index.tolist()
    neu_event_dates=(data_events[s]==2).index.tolist()
    neg_event_dates=(data_events[s]==3).index.tolist()


    pos_dict_s = defaultdict(dict)
    neu_dict_s = defaultdict(dict)
    neg_dict_s = defaultdict(dict)

    for pos_event in pos_event_dates:
        date_loc = data_ret.index.get_loc(pos_event, method="bfill")
        date_loc = date_loc - window

        if date_loc > L1 and date_loc <=len(data_ret) - (2*window+1):
            index_range = (2*window)+1
            pos_dict_s_event = OrderedDict()

            for d in range (index_range):


                date_loc2 = date_loc + d
                u_i = data_ret [s] [date_loc2-L1: date_loc2 -1].mean()
                u_m= data_ret['sprtrn'][date_loc2-L1: date_loc2-1].mean()
                R_i=data_ret.ix[date_loc2, s]
                R_m=data_ret.ix[date_loc2, 'sprtrn']
                beta_i= ((R_i-u_i)*(R_m-u_m))/(R_m - u_m)**2
                alpha_i= u_i - (beta_i*u_m)
                var_err= (1/(L1-2))*(R_i-alpha_i-(beta_i*R_m))**2
                AR_i=R_i - alpha_i - (beta_i*R_m)

                pos_dict_s_event[date_loc2]= AR_i

            pos_dict_s[pos_event]=pos_dict_s_event
    pos_dict[s]=pos_dict_s
abret_col = symbols_list[:]
abret_index = range(-window, window+1)
pos_data_abret = pd.DataFrame(index=abret_index, columns=abret_col)

for h in abret_col:
    if h in pos_dict.keys():
        for z in abret_index:
            pos_data_abret[h][z] = np.mean([x.values()[z+window] for x in pos_dict[h].values()])
Anstatt den Formeln würde ich gerne eineRegression durchführen.

Kann mir jemand dabei helfen?

Vielen Dank
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

Ohne die Struktur genauer zu kennen und ohne zu erraten was deine "Tabellen" sind, hilft dir vielleicht das weiter: https://docs.scipy.org/doc/scipy/refere ... gress.html
PyN
User
Beiträge: 12
Registriert: Donnerstag 12. Dezember 2019, 16:09

danke schonmal.

Eine Tabelle beinhaltet für jedes Unternehmen die Akteinrendite.
Die andere Tabelle hat einen Indikator {1,2,3}, ob es ein positives, negatives, neutrales Event an einem bestimmten Tag war (oder kein Event)

Bei der Regression ist die AV: Rendite Unternehmen und die UV ist die Marktrendite. Dieser Faktor soll vor jedem Event über einen Zeitfenster von 120 Tage vor dem Event geschätzt werden.

MIt Hilfe diesem Modell möchte ich dann die erwartete Rendite für die Tage nach dem Event schätzen
Antworten