1. 程式人生 > >金融量化分析

金融量化分析

一、股票入門知識

二、影響股價的因素

1、公司自身因素 2、行業因素 行業不景氣 3、市場因素 直接因素,買賣雙方的人的多少 4、心裡因素 大股東拋售,小股東跟著拋售 5、經濟因素 銀行利率上漲,錢都去銀行了 6、政治因素

三、金融分析

1、基本面分析 2、巨集觀經濟面分析 3、行業分析 4、公司分析 財務分析、業績報告 5、技術面分析 6、K線 紅陽藍陰、 均線

四、金融量化投資

量化投資: 利用計算機技術採用一定的數學模型去實現投資理念,實現投資策略的過程 量化投資的優勢: 1、避免主觀情緒 2、同時包括多角度的觀察和多層次模型 3、及時跟蹤市場變化,不斷髮現新的統計模型 4、在決定投資策略後,能通過回測驗證其效果 量化策略: 通過一套固定的邏輯來分析判斷和決策,自動化的進行股票交易 輸入:行情資料——財務資料——自定義資料——投資經驗 策略:選股——擇時——倉位管理——止盈止損 輸出:買入訊號——賣出訊號——交易費用——收益 策略週期:產生想法——實現策略——檢驗策略 回測/模擬交易——實盤交易——優化策略/放棄策略

五、量化投資與Python

量化投資實際上就是 通過分析資料從而做出決策的過程 Python處理資料的相關模組 1、Numpy 2、pandas 3、matplotlib

六、numpy簡介

numpy是高效能科學計算和資料分析的基礎包 主要功能: 1、ndarray,一個多維陣列結構,高效且節省空間 2、無序迴圈對整組資料進行快速運算的數學函式 3、線性代數,隨機數生成和傅立葉變換功能 安裝和引用: pip install numpy import numpy as np 4、陣列與列表的區別 (1)陣列物件內的元素型別必須相同 (2)陣列大小不可修改 5、ndarray資料型別 (1)布林型 (2)整形 int_ int8 int16 int32 int64 (3)無符號整形 uint8 uint16 uint32 uint64 (4)浮點型 float_ float16 float32 float64 (5)複數型 complex_ complex64 complex128 6、ndarray常用屬性 ndarray.dtype 陣列的型別 ndarray.size 陣列的個數 7、多維陣列 n1 = np.arrary([1,2,3],[4,5,6]) n1.size 返回6,有多少個元素 n1.shape 返回(2,3),2行3列 n1.T 轉置,行變成列,列變成行 n1.ndim 檢視陣列維數 8、建立全連陣列 np.zeros(10) 10個0的陣列,numpy建立陣列預設是浮點型 np.zeros(10,dtype=int64) 這樣就可以創建出整形的連陣列

例子:
print(np.zeros(10))
print(np.zeros(10,dtype=int))
print(np.ones(10,dtype=int))
print(np.empty(10,dtype=int))    #隨機值
print(np.arange(10))       #類似於range
print(np.arange(1,10,0.3))    #步長可以是小數
print(np.linspace(1,10,5))     #第三個引數是分數,步長仍然是一樣的,前包後也包
print(np.eye(10))    #線性代數

9、陣列運算 陣列大小一致,對應位置進行運算

a = np.arange(10)
b = np.arange(10,20)
print(a,b)
print(a+b)
print(a*b)
print(a>b)

10、陣列索引 一維陣列 a[0] 切片 a[2:]

一維陣列的索引和切片
a = np.arange(10)
b = list(range(10))
a1 = a[5:]
b1 = b[5:]
a1[0] = 20      #numpy陣列為淺拷貝
b1[0] = 20
print(a,b)
c = np.arange(10)
c1 = a[5:].copy()     #copy()後為深拷貝
c1[0] = 20
print(c)

#布林切片
a = [random.randint(0,10) for i in range(10)]
print(a)
b = np.array(a)
print(b>5)     #對b中的每一個元素進行判斷,返回一個布林陣列
print(b[b>5])          #布林切片,將true位置上的數字返回,中括號內的布林陣列要與切片的陣列長度一致
print(b[(b > 5) & (b % 2 == 0)])     #返回大於5的偶數用   &  符號  &運算級別高,所以前後的運算要加括號
print(b[(b > 5) | (b % 2 == 0)])    #返回大於5的數   和所有的偶數 

#花式索引
print(b[[1,3,4,6,7]])   #花式索引  裡面列表中的元素代表的是b元組的索引位置。

二維陣列 a[0][0] 或 a[0,0]

a = np.arange(15)
print(a)
b = a.reshape(3,5)   #變換型,生成二維陣列
print(b)
print(b[2,3])

#切片
a = np.arange(15).reshape(3,5)   #變換型,生成二維陣列
print(a)
print(a[0:2,0:2])     #取前兩行的前兩列,左邊切行,右邊切列
print(a[  ,  ])     #逗號左右兩邊可以是普通索引,布林索引,花式索引,。但兩邊不能同時為花式索引 
  #兩邊都是花式索引的話,要有兩個中括號,前面中括號切行,右邊中括號切列,而且必須要有冒號
a1 = a[[1,2],:][:,[2,4]]  
print(a1)

11、numpy 通用函式 (1)一元函式:abs , sqrt, exp, log, ceil , floor, rint , trunc , modf , isnan , isinf , cos ,sin, tan (2)二院函式:add, substract , multiply ,divide , power, mod , maximum , mininum

12、numpy數學和統計方法 (1)sum 求和 (2)mean 求平均數 (3)min max 最小 最大 值 (4)argmin argmax 求最小 最大值得索引 (5)std 求標準差 (6)var 求方差

13、numpy隨機數生成 隨機數函式在np.random的子包內