智慧AI量化交易合約對沖機器人app系統開發(交易所對接)

nice1022發表於2023-03-13

1、量化交易簡介,系統I34-開發I633-原始碼53I9

量化交易是以數學模型為交易思維,以歷史資料為基礎,以數學建模、統計學分析、程式設計設計為工具,利用計算機技術從龐大的歷史資料中海選出能帶來超額收益的多種大機率獲利事件以制定交易策略。


2、量化交易的特點

(1)紀律性。量化投資決策都是依據模型做出的,模型會模擬測試成千上萬次來達到高容錯率。


(2)系統性。量化交易資料分析有一套非常全面的資料評測系統,會從多方面考量市場,比如:宏觀週期、數字貨幣估值、換手率、盈利質量、市場情緒等。


(3)機率性。透過模型並結合數學方法,測算在什麼樣的情況下盈利率最高,適當倉位就可以加倉。


(4)利用數學分析並結合計算機技術尋找估值窪地,賣高買低,賺取中間的差價,收得利益的經濟。


3、量化交易的優點

(1)投資業績穩定,回撤低。量化交易從歷史資料中不斷地挖掘有望在未來重複的歷史規律並進行利用;量化交易依靠一組股票來獲勝,而不是一個或者幾個股票獲勝。


(2)能夠克服人性的弱點,實現理性投資。在容易失去理性的情況下幫助投資者保持理性;因而在市場反應過度、喪失理性的時候能夠及時把握住時機。


(3)資訊的處理能力強。量化交易使用計算機技術對海量資料進行處理,對資訊的處理能力更強。


量化模擬python程式碼參考


可以發現通常矩陣乘的weight按照同一列使用一組量化係數較好。


import numpy as np

import copy

 

weight = np.load("tensor1.npy")

 

 

def round_near(data):

    """Round data to nearest int

    For example, 0.1 to 0, 0.5 to 1

    """

    if data >= 0:

        data += 0.5

    else:

        data -= 0.5

    return int(data)

 

 

def get_u8_quant_coef(np_tensor):

    max_val = np.max(np_tensor)

    min_val = np.min(np_tensor)

 

    dst_max = 255

    dst_min = 0

 

    scale = (max_val-min_val)/(dst_max-dst_min)

    zero_point = dst_max - max_val / scale

    zero_point_i8 = np.rint(zero_point)

    return scale, zero_point_i8

 

 

def quant_u8(np_tensor, scale, zero_point):

    quanted_tensor = (np_tensor / scale + zero_point)

    quanted_tensor_1d = quanted_tensor.reshape([-1])

    for i, elem in enumerate(quanted_tensor_1d):

        quanted_tensor_1d[i] = np.rint(elem)

    quanted_tensor = quanted_tensor_1d.reshape(quanted_tensor.shape)

    return quanted_tensor

 

 

def dequant(np_tensor, scale, zero_point):

    dequant_tensor = np_tensor.astype("float32")

    dequant_tensor = (dequant_tensor-zero_point)*scale

    return dequant_tensor

 

 

def get_error(tensor1, tensor2):

    return np.sum(np.abs(tensor1 - tensor2))

 

 

def get_dequant(np_tensor):

    scale, zero_point = get_u8_quant_coef(np_tensor)

    quanted_tensor = quant_u8(np_tensor, scale, zero_point)

    dequant_tensor = dequant(quanted_tensor, scale, zero_point)

    return dequant_tensor, scale, zero_point

 

 

dequant_tensor, scale, zero_point = get_dequant(weight)

 

error = get_error(weight, dequant_tensor)

 

weight1 = copy.deepcopy(weight)

weight2 = copy.deepcopy(weight)

 

 

col = weight1.shape[1]

row = weight1.shape[0]

 

 

for i in range(col):

    line_data = weight[:, i]

    dequant_tensor_i, scale_i, zero_point_i = get_dequant(line_data)

    weight1[:, i] = dequant_tensor_i

 

 

for i in range(row):

    line_data = weight[i, :]

    dequant_tensor_i, scale_i, zero_point_i = get_dequant(line_data)

    weight2[i, :] = dequant_tensor_i

 

error1 = get_error(weight, weight1)

error2 = get_error(weight, weight2)



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011332/viewspace-2939422/,如需轉載,請註明出處,否則將追究法律責任。

相關文章