예제 #1
0
def get_coin_name_list(config, online):
    """
    :param online: boolean value to show if connected to internet,
    if False, load data from database.
    :return : list of coin names
    """
    input_config = config["input"]
    if not online:
        start = parse_time(input_config["start_date"])
        end = parse_time(input_config["end_date"])
        volume_forward = get_volume_forward(
            end - start,
            input_config["test_portion"] + input_config["validation_portion"],
            input_config["portion_reversed"])
    else:
        end = time()
        volume_forward = 0
    end = end - (end % input_config["trade_period"])
    start = end - volume_forward - input_config["volume_average_days"] * DAY
    end = end - volume_forward
    coins = HistoryManager(input_config["coin_number"], end,
                           volume_forward=volume_forward,
                           volume_average_days=input_config["volume_average_days"],
                           online=online).\
        select_coins(start, end)
    return coins
 def create_from_config(config):
     """main method to create the DataMatrices in this project
     @:param config: config dictionary
     @:return: a DataMatrices object
     """
     config = config.copy()
     input_config = config["input"]
     train_config = config["training"]
     start = parse_time(input_config["start_date"])
     end = parse_time(input_config["end_date"])
     return DataMatrices(
         start=start,
         end=end,
         market=input_config["market"],
         feature_number=input_config["feature_number"],
         window_size=input_config["window_size"],
         online=input_config["online"],
         period=input_config["global_period"],
         asset_filter=input_config["asset_number"],
         is_permed=input_config["is_permed"],
         buffer_bias_ratio=train_config["buffer_biased"],
         batch_size=train_config["batch_size"],
         volume_average_days=input_config["volume_average_days"],
         test_portion=input_config["test_portion"],
         portion_reversed=input_config["portion_reversed"],
     )
예제 #3
0
def _extract_test(config):
    global_start = parse_time(config["input"]["start_date"])
    global_end = parse_time(config["input"]["end_date"])
    span = global_end - global_start
    start = global_end - config["input"]["test_portion"] * span
    end = global_end
    return start, end
예제 #4
0
def _extract_test(config):
    global_start = parse_time(config["input"]["start_date"])
    global_end = parse_time(config["input"]["end_date"])
    span = global_end - global_start
    start = global_end - config["input"]["test_portion"] * span
    end = global_end
    return start, end
예제 #5
0
def get_coin_name_list(config, online):
    """
    :param online: boolean value to show if connected to internet,
    if False, load data from database.
    :return : list of coin names
    """
    input_config = config["input"]
    if not online:
        start = parse_time(input_config["start_date"])
        end = parse_time(input_config["end_date"])
        volume_forward = get_volume_forward(end - start,
                                            input_config["test_portion"]
                                            + input_config["validation_portion"],
                                            input_config["portion_reversed"])
    else:
        end = time()
        volume_forward = 0
    end = end - (end % input_config["trade_period"])
    start = end - volume_forward - input_config["volume_average_days"] * DAY
    end = end - volume_forward
    coins = HistoryManager(input_config["coin_number"], end,
                           volume_forward=volume_forward,
                           volume_average_days=input_config["volume_average_days"],
                           online=online).\
        select_coins(start, end)
    return coins
예제 #6
0
 def create_from_config(config):
     """main method to create the DataMatrices in this project
     @:param config: config dictionary
     @:return: a DataMatrices object
     """
     config = config.copy()
     input_config = config["input"]
     train_config = config["training"]
     start = parse_time(input_config["start_date"])
     end = parse_time(input_config["end_date"])
     return DataMatrices(start=start,
                         end=end,
                         market=input_config["market"],
                         feature_number=input_config["feature_number"],
                         window_size=input_config["window_size"],
                         online=input_config["online"],
                         period=input_config["global_period"],
                         coin_filter=input_config["coin_number"],
                         is_permed=input_config["is_permed"],
                         buffer_bias_ratio=train_config["buffer_biased"],
                         batch_size=train_config["batch_size"],
                         volume_average_days=input_config["volume_average_days"],
                         test_portion=input_config["test_portion"],
                         portion_reversed=input_config["portion_reversed"],
                         )
예제 #7
0
    def __init__(self, config):
        self.__counter = 0
        self.__start = parse_time(config["input"]["start_date"])
        self.__end = parse_time(config["input"]["end_date"])
        self.__number_of_coins = config["input"]["coin_number"]
        self.__batch_size = config["training"]["batch_size"]
        self.__window_size = config["input"]["window_size"]+1
        span = self.__end - self.__start
        self.__end = self.__end - config["input"]["test_portion"] * span
        config2 = copy.deepcopy(config)
        config2["input"]["global_period"] = 300
        self._matrix2 = DataMatrices.create_from_config(config2)
        self.__weightgarch = pd.DataFrame(index=range(0, self.__batch_size),
                                              columns=range(0, self.__number_of_coins))
        self.__weightgarch = self.__weightgarch.fillna(1.0 / self.__number_of_coins)
        training_set = self._matrix2.get_training_set()
        set = training_set["X"]

        #good times sets for 3, 26: 1 and 2 are not functioning
        set5 = set[-5000:, 0, :, 0]
        set3 = set[-3000:, 0, :, 0]
        set2 = set[-2000:, 0, :, 0]
        #self.__abcdefg = set[:, 0]
        self.__lastvalue1 = set5[0, 0]
        self.__lastvalue2 = set5[0, 1]
        self.__lastvalue3 = set2[0, 2]
        self.__lastvalue4 = set5[0, 3]
        self.__lastvalue5 = set3[0, 4]
        self.__lastvalue6 = set3[0, 5]
        self.__lastvalue7 = set3[0, 6]
        self.__lastvalue8 = set5[0, 7]
        self.__lastvalue9 = set5[0, 8]
        self.__lastvalue10 = set5[0, 9]
        self.__lastvalue11 = set3[0, 10]
        #good times set5, bad times set3
        #logreturns1 = np.log(set3[1:, 0] / set3[:-1, 0])
        logreturns1 = np.log(set5[1:, 0] / set5[:-1, 0])
        self.__lastsigma1 = np.sqrt(np.mean(logreturns1 ** 2))
        self.__lastlogreturn1 = logreturns1[-1]
        #good times set5, bad times set3
        #logreturns2 = np.log(set3[1:, 1] / set3[:-1, 1])
        logreturns2 = np.log(set5[1:, 1] / set5[:-1, 1])
        self.__lastsigma2 = np.sqrt(np.mean(logreturns2 ** 2))
        self.__lastlogreturn2 = logreturns2[-1]
        logreturns3 = np.log(set2[1:, 2] / set2[:-1, 2])
        self.__lastsigma3 = np.sqrt(np.mean(logreturns3 ** 2))
        self.__lastlogreturn3 = logreturns3[-1]
        logreturns4 = np.log(set5[1:, 3] / set5[:-1, 3])
        self.__lastsigma4 = np.sqrt(np.mean(logreturns4 ** 2))
        self.__lastlogreturn4 = logreturns4[-1]
        logreturns5 = np.log(set3[1:, 4] / set3[:-1, 4])
        self.__lastsigma5 = np.sqrt(np.mean(logreturns5 ** 2))
        self.__lastlogreturn5 = logreturns5[-1]
        logreturns6 = np.log(set3[1:, 5] / set3[:-1, 5])
        self.__lastsigma6 = np.sqrt(np.mean(logreturns6 ** 2))
        self.__lastlogreturn6 = logreturns6[-1]
        logreturns7 = np.log(set3[1:, 6] / set3[:-1, 6])
        self.__lastsigma7 = np.sqrt(np.mean(logreturns7 ** 2))
        self.__lastlogreturn7 = logreturns7[-1]
        logreturns8 = np.log(set5[1:, 7] / set5[:-1, 7])
        self.__lastsigma8 = np.sqrt(np.mean(logreturns8 ** 2))
        self.__lastlogreturn8 = logreturns8[-1]
        logreturns9 = np.log(set5[1:, 8] / set5[:-1, 8])
        self.__lastsigma9 = np.sqrt(np.mean(logreturns9 ** 2))
        self.__lastlogreturn9 = logreturns9[-1]
        logreturns10 = np.log(set5[1:, 9] / set5[:-1, 9])
        self.__lastsigma10 = np.sqrt(np.mean(logreturns10 ** 2))
        self.__lastlogreturn10 = logreturns10[-1]
        logreturns11 = np.log(set3[1:, 10] / set3[:-1, 10])
        self.__lastsigma11 = np.sqrt(np.mean(logreturns11 ** 2))
        self.__lastlogreturn11 = logreturns11[-1]

        self.__firstsigma1 = self.__lastsigma1
        self.__firstsigma2 = self.__lastsigma2
        self.__firstsigma3 = self.__lastsigma3
        self.__firstsigma4 = self.__lastsigma4
        self.__firstsigma5 = self.__lastsigma5
        self.__firstsigma6 = self.__lastsigma6
        self.__firstsigma7 = self.__lastsigma7
        self.__firstsigma8 = self.__lastsigma8
        self.__firstsigma9 = self.__lastsigma9
        self.__firstsigma10 = self.__lastsigma10
        self.__firstsigma11 = self.__lastsigma11

        self.__firstlogreturn1 = self.__lastlogreturn1
        self.__firstlogreturn2 = self.__lastlogreturn2
        self.__firstlogreturn3 = self.__lastlogreturn3
        self.__firstlogreturn4 = self.__lastlogreturn4
        self.__firstlogreturn5 = self.__lastlogreturn5
        self.__firstlogreturn6 = self.__lastlogreturn6
        self.__firstlogreturn7 = self.__lastlogreturn7
        self.__firstlogreturn8 = self.__lastlogreturn8
        self.__firstlogreturn9 = self.__lastlogreturn9
        self.__firstlogreturn10 = self.__lastlogreturn10
        self.__firstlogreturn11 = self.__lastlogreturn11

        self.__firstlastvalue1 = self.__lastvalue1
        self.__firstlastvalue2 = self.__lastvalue2
        self.__firstlastvalue3 = self.__lastvalue3
        self.__firstlastvalue4 = self.__lastvalue4
        self.__firstlastvalue5 = self.__lastvalue5
        self.__firstlastvalue6 = self.__lastvalue6
        self.__firstlastvalue7 = self.__lastvalue7
        self.__firstlastvalue8 = self.__lastvalue8
        self.__firstlastvalue9 = self.__lastvalue9
        self.__firstlastvalue10 = self.__lastvalue10
        self.__firstlastvalue11 = self.__lastvalue11

        self.__theta1 = self.negative_log_likelihood(logreturns1, (1, 0.5, 0.5))
        self.__theta1 = self.fitting(logreturns1)
        print(self.__theta1)
        self.__theta2 = self.fitting(logreturns2)
        print(self.__theta2)
        self.__theta3 = self.fitting(logreturns3)
        print(self.__theta3)
        self.__theta4 = self.fitting(logreturns4)
        print(self.__theta4)
        self.__theta5 = self.fitting(logreturns5)
        print(self.__theta5)
        self.__theta6 = self.fitting(logreturns6)
        print(self.__theta6)
        self.__theta7 = self.fitting(logreturns7)
        print(self.__theta7)
        self.__theta8 = self.fitting(logreturns8)
        print(self.__theta8)
        self.__theta9 = self.fitting(logreturns9)
        print(self.__theta9)
        self.__theta10 = self.fitting(logreturns10)
        print(self.__theta10)
        self.__theta11 = self.fitting(logreturns11)
        print(self.__theta11)