Пример #1
0
    def sse_theo_LT(self, para):
        """ Returns the Sum Squared Error """

        from Event import Event

        evnt = Event(self.data)
        evnt.e2_mean_rev1 = para[0]
        evnt.e2_resp1 = para[1]
        evnt.e2_mean_rev2 = para[2]
        evnt.e2_resp2 = para[3]
        evnt.event_type = 'evntLT'
        evnt.decay_type = 'LastTrade'

        error = 0.0
        for i in range(int(len(self.data.events))):
            if self.data.events[i] == 'E':
                est = self.cmpt_theo_event(i, evnt)
                error += (self.data.prices[i] - est)**2
        if self.verbose:
            print('SSE Const ' + str(error) + ' ' + str(para[0]) + ' ' +
                  str(para[1]) + ' ' + str(para[2]) + ' ' + str(para[3]))

        return error
Пример #2
0
    def perf_theo_vs_smartpOLD(self):

        import numpy as np
        from Compute import Compute
        from Event import Event
        import re

        summary = open('Parameters/fit_theo_event.txt', 'r')
        summaryCross = open('Parameters/fit_theo_spread.txt', 'r')

        out = open('Performance/MSE_2_0.txt', 'w')

        cmpt = Compute(self.data)
        evnt = Event(self.data)
        evntCross = Event(self.data)

        # Load Parameters and settings for Large Lot
        para = []
        for line in summary:
            if re.search('Parameters', line):
                temp = re.findall('Parameters\s\[\s(.*)\]', line)[0].split()
                for t in temp:
                    para.append(float(t))

        evnt.e2_spread = False
        evnt.e2_voladj = False
        evnt.e2_mean_rev1 = para[0]
        evnt.e2_resp1 = para[1]
        evnt.e2_mean_rev2 = para[2]
        evnt.e2_resp2 = para[3]

        # Load Parameters and settings for Spread adjusted
        paraCross = []
        for line in summaryCross:
            if re.search('Parameters', line):
                temp = re.findall('Parameters\s\[\s(.*)\]', line)[0].split()
                for t in temp:
                    paraCross.append(float(t))

        evntCross.e2_spread = True
        evntCross.e2_voladj = False
        evntCross.e2_mean_rev1 = paraCross[0]
        evntCross.e2_resp1 = paraCross[1]
        evntCross.e2_mean_rev2 = paraCross[2]
        evntCross.e2_resp2 = paraCross[3]

        predMid = []
        predSmart = []
        predEvent = []
        predCross = []
        bench = []

        for i in range(len(self.data.events)):
            if self.data.events[i] == 'E':
                theo = cmpt.cmpt_theo_event(i, evnt)
                theoCross = cmpt.cmpt_theo_event(i, evntCross)
                if self.data.vols[i - 2] > 200 and self.data.tgates[
                        i] - self.data.tgates[i - 2] <= 2.0 * 10**9:
                    predMid.append(
                        cmpt.mid_price(self.data.ask_1s[i - 1],
                                       self.data.bid_1s[i - 1]))
                    predSmart.append(
                        cmpt.smart_mid(self.data.ask_1s[i - 1],
                                       self.data.askvol_1s[i - 1],
                                       self.data.bid_1s[i - 1],
                                       self.data.bidvol_1s[i - 1]))
                    predEvent.append(theo)
                    predCross.append(theoCross)
                    bench.append(self.data.prices[i])

        eMid = np.zeros(len(predMid))
        eSmart = np.zeros(len(predMid))
        eEvent = np.zeros(len(predMid))
        eCross = np.zeros(len(predMid))

        for i in range(len(predMid)):
            eMid[i] = abs(predMid[i] - bench[i])
            eSmart[i] = abs(predSmart[i] - bench[i])
            eEvent[i] = abs(predEvent[i] - bench[i])
            eCross[i] = abs(predCross[i] - bench[i])
            out.write(
                str(eMid[i]) + ' ' + str(eSmart[i]) + ' ' + str(eEvent[i]) +
                ' ' + str(eCross[i]) + ' \n')

        print(
            str(eMid.mean()) + ' \n' + str(eSmart.mean()) + ' \n' +
            str(eEvent.mean()) + ' \n' + str(eCross.mean()))