# 量化分析師的Python日記【第3天:一大波金融Library來襲之numpy篇】
> 來源:https://uqer.io/community/share/54ca15f9f9f06c276f651a56
接下來要給大家介紹的系列中包含了Python在量化金融中運用最廣泛的幾個Library:
+ numpy
+ scipy
+ pandas
+ matplotlib
會給初學者一一介紹
NumPy 簡介
## 一、NumPy是什么?
量化分析的工作涉及到大量的數值運算,一個高效方便的科學計算工具是必不可少的。Python語言一開始并不是設計為科學計算使用的語言,隨著越來越多的人發現Python的易用性,逐漸出現了關于Python的大量外部擴展,NumPy (Numeric Python)就是其中之一。NumPy提供了大量的數值編程工具,可以方便地處理向量、矩陣等運算,極大地便利了人們在科學計算方面的工作。另一方面,Python是免費,相比于花費高額的費用使用Matlab,NumPy的出現使Python得到了更多人的青睞。
我們可以簡單看一下如何開始使用NumPy:
```py
import numpy
numpy.version.full_version
'1.8.0'
```
我們使用了`import`命令導入了NumPy,并使用`numpy.version.full_version`查出了量化實驗室里使用的NumPy版本為1.8.0。在往后的介紹中,我們將大量使用NumPy中的函數,每次都添加`numpy`在函數前作為前綴比較費勁,在之前的介紹中,我們提及了引入外部擴展模塊時的小技巧,可以使用`from numpy import *`解決這一問題。
那么問題解決了?慢!Python的外部擴展成千上萬,在使用中很可能會`import`好幾個外部擴展模塊,如果某個模塊包含的屬性和方法與另一個模塊同名,就必須使用`import module`來避免名字的沖突。即所謂的名字空間(namespace)混淆了,所以這前綴最好還是帶上。
那有沒有簡單的辦法呢?有的,我們可以在`import`擴展模塊時添加模塊在程序中的別名,調用時就不必寫成全名了,例如,我們使用`np`作為別名并調用`version.full_version`函數:
```py
import numpy as np
np.version.full_version
'1.8.0'
```
## 二、初窺NumPy對象:數組
NumPy中的基本對象是同類型的多維數組(homogeneous multidimensional array),這和C++中的數組是一致的,例如字符型和數值型就不可共存于同一個數組中。先上例子:
```py
a = np.arange(20)
```
這里我們生成了一個一維數組`a`,從0開始,步長為1,長度為20。Python中的計數是從0開始的,R和Matlab的使用者需要小心。可以使用`print`查看:
```py
print a
numpy.ndarray
```
通過函數`reshape`,我們可以重新構造一下這個數組,例如,我們可以構造一個`4*5`的二維數組,其中`reshape`的參數表示各維度的大小,且按各維順序排列(兩維時就是按行排列,這和R中按列是不同的):
```py
a = a.reshape(4, 5)
print a
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
```
構造更高維的也沒問題:
```py
a = a.reshape(2, 2, 5)
print a
[[[ 0 1 2 3 4]
[ 5 6 7 8 9]]
[[10 11 12 13 14]
[15 16 17 18 19]]]
```
既然`a`是`array`,我們還可以調用`array`的函數進一步查看`a`的相關屬性:`ndim`查看維度;`shape`查看各維度的大小;`size`查看全部的元素個數,等于各維度大小的乘積;`dtype`可查看元素類型;`dsize`查看元素占位(bytes)大小。
```py
a.ndim
3
```
```py
a.shape
(2, 2, 5)
```
```py
a.size
20
```
```py
a.dtype
dtype('int64')
```
## 三、創建數組
數組的創建可通過轉換列表實現,高維數組可通過轉換嵌套列表實現:
```py
raw = [0,1,2,3,4]
a = np.array(raw)
a
array([0, 1, 2, 3, 4])
```
```py
raw = [[0,1,2,3,4], [5,6,7,8,9]]
b = np.array(raw)
b
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
```
一些特殊的數組有特別定制的命令生成,如`4*5`的全零矩陣:
```py
d = (4, 5)
np.zeros(d)
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
```
默認生成的類型是浮點型,可以通過指定類型改為整型:
```py
d = (4, 5)
np.ones(d, dtype=int)
array([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]])
```
`[0, 1)`區間的隨機數數組:
```py
np.random.rand(5)
array([ 0.93807818, 0.45307847, 0.90732828, 0.36099623, 0.71981451])
```
## 四、數組操作
簡單的四則運算已經重載過了,全部的`+`,`-`,`*`,`/`運算都是基于全部的數組元素的,以加法為例:
```py
a = np.array([[1.0, 2], [2, 4]])
print "a:"
print a
b = np.array([[3.2, 1.5], [2.5, 4]])
print "b:"
print b
print "a+b:"
print a+b
a:
[[ 1. 2.]
[ 2. 4.]]
b:
[[ 3.2 1.5]
[ 2.5 4. ]]
a+b:
[[ 4.2 3.5]
[ 4.5 8. ]]
```
這里可以發現,`a`中雖然僅有一個與元素是浮點數,其余均為整數,在處理中Python會自動將整數轉換為浮點數(因為數組是同質的),并且,兩個二維數組相加要求各維度大小相同。當然,NumPy里這些運算符也可以對標量和數組操作,結果是數組的全部元素對應這個標量進行運算,還是一個數組:
```py
print "3 * a:"
print 3 * a
print "b + 1.8:"
print b + 1.8
3 * a:
[[ 3. 6.]
[ 6. 12.]]
b + 1.8:
[[ 5. 3.3]
[ 4.3 5.8]]
```
類似C++,`+=`、`-=`、`*=`、`/=`操作符在NumPy中同樣支持:
```py
a /= 2
print a
[[ 0.5 1. ]
[ 1. 2. ]]
```
開根號求指數也很容易:
```py
print "a:"
print a
print "np.exp(a):"
print np.exp(a)
print "np.sqrt(a):"
print np.sqrt(a)
print "np.square(a):"
print np.square(a)
print "np.power(a, 3):"
print np.power(a, 3)
a:
[[ 0.5 1. ]
[ 1. 2. ]]
np.exp(a):
[[ 1.64872127 2.71828183]
[ 2.71828183 7.3890561 ]]
np.sqrt(a):
[[ 0.70710678 1. ]
[ 1. 1.41421356]]
np.square(a):
[[ 0.25 1. ]
[ 1. 4. ]]
np.power(a, 3):
[[ 0.125 1. ]
[ 1. 8. ]]
```
需要知道二維數組的最大最小值怎么辦?想計算全部元素的和、按行求和、按列求和怎么辦?`for`循環嗎?不,NumPy的`ndarray`類已經做好函數了:
```py
a = np.arange(20).reshape(4,5)
print "a:"
print a
print "sum of all elements in a: " + str(a.sum())
print "maximum element in a: " + str(a.max())
print "minimum element in a: " + str(a.min())
print "maximum element in each row of a: " + str(a.max(axis=1))
print "minimum element in each column of a: " + str(a.min(axis=0))
a:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
sum of all elements in a: 190
maximum element in a: 19
minimum element in a: 0
maximum element in each row of a: [ 4 9 14 19]
minimum element in each column of a: [0 1 2 3 4]
```
科學計算中大量使用到矩陣運算,除了數組,NumPy同時提供了矩陣對象(`matrix`)。矩陣對象和數組的主要有兩點差別:一是矩陣是二維的,而數組的可以是任意正整數維;二是矩陣的`*`操作符進行的是矩陣乘法,乘號左側的矩陣列和乘號右側的矩陣行要相等,而在數組中`*`操作符進行的是每一元素的對應相乘,乘號兩側的數組每一維大小需要一致。數組可以通過`asmatrix`或者`mat`轉換為矩陣,或者直接生成也可以:
```py
a = np.arange(20).reshape(4, 5)
a = np.asmatrix(a)
print type(a)
b = np.matrix('1.0 2.0; 3.0 4.0')
print type(b)
<class 'numpy.matrixlib.defmatrix.matrix'>
<class 'numpy.matrixlib.defmatrix.matrix'>
```
再來看一下矩陣的乘法,這使用`arange`生成另一個矩陣`b`,`arange`函數還可以通過`arange(起始,終止,步長)`的方式調用生成等差數列,注意含頭不含尾。
```py
b = np.arange(2, 45, 3).reshape(5, 3)
b = np.mat(b)
print b
[[ 2 5 8]
[11 14 17]
[20 23 26]
[29 32 35]
[38 41 44]]
```
有人要問了,`arange`指定的是步長,如果想指定生成的一維數組的長度怎么辦?好辦,`linspace`就可以做到:
```py
np.linspace(0, 2, 9)
array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
```
回到我們的問題,矩陣`a`和`b`做矩陣乘法:
```py
print "matrix a:"
print a
print "matrix b:"
print b
c = a * b
print "matrix c:"
print c
print c
查看全部
matrix a:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
matrix b:
[[ 2 5 8]
[11 14 17]
[20 23 26]
[29 32 35]
[38 41 44]]
matrix c:
[[ 290 320 350]
[ 790 895 1000]
[1290 1470 1650]
[1790 2045 2300]]
```
## 五、數組元素訪問
數組和矩陣元素的訪問可通過下標進行,以下均以二維數組(或矩陣)為例:
```py
a = np.array([[3.2, 1.5], [2.5, 4]])
print a[0][1]
print a[0, 1]
1.5
1.5
```
可以通過下標訪問來修改數組元素的值:
```py
b = a
a[0][1] = 2.0
print "a:"
print a
print "b:"
print b
a:
[[ 3.2 2. ]
[ 2.5 4. ]]
b:
[[ 3.2 2. ]
[ 2.5 4. ]]
```
現在問題來了,明明改的是`a[0][1]`,怎么連`b[0][1]`也跟著變了?這個陷阱在Python編程中很容易碰上,其原因在于Python不是真正將`a`復制一份給`b`,而是將`b`指到了`a`對應數據的內存地址上。想要真正的復制一份`a`給`b`,可以使用`copy`:
```py
a = np.array([[3.2, 1.5], [2.5, 4]])
b = a.copy()
a[0][1] = 2.0
print "a:"
print a
print "b:"
print b
a:
[[ 3.2 2. ]
[ 2.5 4. ]]
b:
[[ 3.2 1.5]
[ 2.5 4. ]]
```
若對`a`重新賦值,即將`a`指到其他地址上,`b`仍在原來的地址上:
```py
a = np.array([[3.2, 1.5], [2.5, 4]])
b = a
a = np.array([[2, 1], [9, 3]])
print "a:"
print a
print "b:"
print b
a:
[[2 1]
[9 3]]
b:
[[ 3.2 1.5]
[ 2.5 4. ]]
```
利用`:`可以訪問到某一維的全部數據,例如取矩陣中的指定列:
```py
a = np.arange(20).reshape(4, 5)
print "a:"
print a
print "the 2nd and 4th column of a:"
print a[:,[1,3]]
a:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
the 2nd and 4th column of a:
[[ 1 3]
[ 6 8]
[11 13]
[16 18]]
```
稍微復雜一些,我們嘗試取出滿足某些條件的元素,這在數據的處理中十分常見,通常用在單行單列上。下面這個例子是將第一列大于5的元素(10和15)對應的第三列元素(12和17)取出來:
```py
a[:, 2][a[:, 0] > 5]
array([12, 17])
```
可使用`where`函數查找特定值在數組中的位置:
```py
loc = numpy.where(a==11)
print loc
print a[loc[0][0], loc[1][0]]
(array([2]), array([1]))
11
```
## 六、數組操作
還是拿矩陣(或二維數組)作為例子,首先來看矩陣轉置:
```py
a = np.random.rand(2,4)
print "a:"
print a
a = np.transpose(a)
print "a is an array, by using transpose(a):"
print a
b = np.random.rand(2,4)
b = np.mat(b)
print "b:"
print b
print "b is a matrix, by using b.T:"
print b.T
a:
[[ 0.17571282 0.98510461 0.94864387 0.50078988]
[ 0.09457965 0.70251658 0.07134875 0.43780173]]
a is an array, by using transpose(a):
[[ 0.17571282 0.09457965]
[ 0.98510461 0.70251658]
[ 0.94864387 0.07134875]
[ 0.50078988 0.43780173]]
b:
[[ 0.09653644 0.46123468 0.50117363 0.69752578]
[ 0.60756723 0.44492537 0.05946373 0.4858369 ]]
b is a matrix, by using b.T:
[[ 0.09653644 0.60756723]
[ 0.46123468 0.44492537]
[ 0.50117363 0.05946373]
[ 0.69752578 0.4858369 ]]
```
矩陣求逆:
```py
import numpy.linalg as nlg
a = np.random.rand(2,2)
a = np.mat(a)
print "a:"
print a
ia = nlg.inv(a)
print "inverse of a:"
print ia
print "a * inv(a)"
print a * ia
a:
[[ 0.86211266 0.6885563 ]
[ 0.28798536 0.70810425]]
inverse of a:
[[ 1.71798445 -1.6705577 ]
[-0.69870271 2.09163573]]
a * inv(a)
[[ 1. 0.]
[ 0. 1.]]
```
求特征值和特征向量
```py
a = np.random.rand(3,3)
eig_value, eig_vector = nlg.eig(a)
print "eigen value:"
print eig_value
print "eigen vector:"
print eig_vector
eigen value:
[ 1.35760609 0.43205379 -0.53470662]
eigen vector:
[[-0.76595379 -0.88231952 -0.07390831]
[-0.55170557 0.21659887 -0.74213622]
[-0.33005418 0.41784829 0.66616169]]
```
按列拼接兩個向量成一個矩陣:
```py
a = np.array((1,2,3))
b = np.array((2,3,4))
print np.column_stack((a,b))
[[1 2]
[2 3]
[3 4]]
```
在循環處理某些數據得到結果后,將結果拼接成一個矩陣是十分有用的,可以通過`vstack`和`hstack`完成:
```py
a = np.random.rand(2,2)
b = np.random.rand(2,2)
print "a:"
print a
print "b:"
print a
c = np.hstack([a,b])
d = np.vstack([a,b])
print "horizontal stacking a and b:"
print c
print "vertical stacking a and b:"
print d
a:
[[ 0.6738195 0.4944045 ]
[ 0.25702675 0.15422012]]
b:
[[ 0.6738195 0.4944045 ]
[ 0.25702675 0.15422012]]
horizontal stacking a and b:
[[ 0.6738195 0.4944045 0.28058267 0.0967197 ]
[ 0.25702675 0.15422012 0.55191041 0.04694485]]
vertical stacking a and b:
[[ 0.6738195 0.4944045 ]
[ 0.25702675 0.15422012]
[ 0.28058267 0.0967197 ]
[ 0.55191041 0.04694485]]
```
## 七、缺失值
缺失值在分析中也是信息的一種,NumPy提供`nan`作為缺失值的記錄,通過`isnan`判定。
```py
a = np.random.rand(2,2)
a[0, 1] = np.nan
print np.isnan(a)
[[False True]
[False False]]
```
`nan_to_num`可用來將`nan`替換成0,在后面會介紹到的更高級的模塊`pandas`時,我們將看到`pandas`提供能指定`nan`替換值的函數。
```py
print np.nan_to_num(a)
[[ 0.58144238 0. ]
[ 0.26789784 0.48664306]]
```
NumPy還有很多的函數,想詳細了解可參考鏈接 http://wiki.scipy.org/Numpy_Example_List 和 http://docs.scipy.org/doc/numpy
最后獻上NumPy SciPy Pandas Cheat Sheet

- Python 量化交易教程
- 第一部分 新手入門
- 一 量化投資視頻學習課程
- 二 Python 手把手教學
- 量化分析師的Python日記【第1天:誰來給我講講Python?】
- 量化分析師的Python日記【第2天:再接著介紹一下Python唄】
- 量化分析師的Python日記【第3天:一大波金融Library來襲之numpy篇】
- 量化分析師的Python日記【第4天:一大波金融Library來襲之scipy篇】
- 量化分析師的Python日記【第5天:數據處理的瑞士軍刀pandas】
- 量化分析師的Python日記【第6天:數據處理的瑞士軍刀pandas下篇
- 量化分析師的Python日記【第7天:Q Quant 之初出江湖】
- 量化分析師的Python日記【第8天 Q Quant兵器譜之函數插值】
- 量化分析師的Python日記【第9天 Q Quant兵器譜之二叉樹】
- 量化分析師的Python日記【第10天 Q Quant兵器譜 -之偏微分方程1】
- 量化分析師的Python日記【第11天 Q Quant兵器譜之偏微分方程2】
- 量化分析師的Python日記【第12天:量化入門進階之葵花寶典:因子如何產生和回測】
- 量化分析師的Python日記【第13天 Q Quant兵器譜之偏微分方程3】
- 量化分析師的Python日記【第14天:如何在優礦上做Alpha對沖模型】
- 量化分析師的Python日記【第15天:如何在優礦上搞一個wealthfront出來】
- 第二部分 股票量化相關
- 一 基本面分析
- 1.1 alpha 多因子模型
- 破解Alpha對沖策略——觀《量化分析師Python日記第14天》有感
- 熔斷不要怕, alpha model 為你保駕護航!
- 尋找 alpha 之: alpha 設計
- 1.2 基本面因子選股
- Porfolio(現金比率+負債現金+現金保障倍數)+市盈率
- ROE選股指標
- 成交量因子
- ROIC&cashROIC
- 【國信金工】資產周轉率選股模型
- 【基本面指標】Cash Cow
- 量化因子選股——凈利潤/營業總收入
- 營業收入增長率+市盈率
- 1.3 財報閱讀 ? [米缸量化讀財報] 資產負債表-投資相關資產
- 1.4 股東分析
- 技術分析入門 【2】 —— 大家搶籌碼(06年至12年版)
- 技術分析入門 【2】 —— 大家搶籌碼(06年至12年版)— 更新版
- 誰是中國A股最有錢的自然人
- 1.5 宏觀研究
- 【干貨包郵】手把手教你做宏觀擇時
- 宏觀研究:從估值角度看當前市場
- 追尋“國家隊”的足跡
- 二 套利
- 2.1 配對交易
- HS300ETF套利(上)
- 【統計套利】配對交易
- 相似公司股票搬磚
- Paired trading
- 2.2 期現套利 ? 通過股指期貨的期現差與 ETF 對沖套利
- 三 事件驅動
- 3.1 盈利預增
- 盈利預增事件
- 事件驅動策略示例——盈利預增
- 3.2 分析師推薦 ? 分析師的金手指?
- 3.3 牛熊轉換
- 歷史總是相似 牛市還在延續
- 歷史總是相似 牛市已經見頂?
- 3.4 熔斷機制 ? 股海拾貝之 [熔斷錯殺股]
- 3.5 暴漲暴跌 ? [實盤感悟] 遇上暴跌我該怎么做?
- 3.6 兼并重組、舉牌收購 ? 寶萬戰-大戲開幕
- 四 技術分析
- 4.1 布林帶
- 布林帶交易策略
- 布林帶回調系統-日內
- Conservative Bollinger Bands
- Even More Conservative Bollinger Bands
- Simple Bollinger Bands
- 4.2 均線系統
- 技術分析入門 —— 雙均線策略
- 5日線10日線交易策略
- 用5日均線和10日均線進行判斷 --- 改進版
- macross
- 4.3 MACD
- Simple MACD
- MACD quantization trade
- MACD平滑異同移動平均線方法
- 4.4 阿隆指標 ? 技術指標阿隆( Aroon )全解析
- 4.5 CCI ? CCI 順勢指標探索
- 4.6 RSI
- 重寫 rsi
- RSI指標策略
- 4.7 DMI ? DMI 指標體系的構建及簡單應用
- 4.8 EMV ? EMV 技術指標的構建及應用
- 4.9 KDJ ? KDJ 策略
- 4.10 CMO
- CMO 策略模仿練習 1
- CMO策略模仿練習2
- [技術指標] CMO
- 4.11 FPC ? FPC 指標選股
- 4.12 Chaikin Volatility
- 嘉慶離散指標測試
- 4.13 委比 ? 實時計算委比
- 4.14 封單量
- 按照封單跟流通股本比例排序,剔除6月上市新股,前50
- 漲停股票封單統計
- 實時計算漲停板股票的封單資金與總流通市值的比例
- 4.15 成交量 ? 決戰之地, IF1507 !
- 4.16 K 線分析 ? 尋找夜空中最亮的星
- 五 量化模型
- 5.1 動量模型
- Momentum策略
- 【小散學量化】-2-動量模型的簡單實踐
- 一個追漲的策略(修正版)
- 動量策略(momentum driven)
- 動量策略(momentum driven)——修正版
- 最經典的Momentum和Contrarian在中國市場的測試
- 最經典的Momentum和Contrarian在中國市場的測試-yanheven改進
- [策略]基于勝率的趨勢交易策略
- 策略探討(更新):價量結合+動量反轉
- 反向動量策略(reverse momentum driven)
- 輕松跑贏大盤 - 主題Momentum策略
- Contrarian strategy
- 5.2 Joseph Piotroski 9 F-Score Value Investing Model · 基本面選股系統:Piotroski F-Score ranking system
- 5.3 SVR · 使用SVR預測股票開盤價 v1.0
- 5.4 決策樹、隨機樹
- 決策樹模型(固定模型)
- 基于Random Forest的決策策略
- 5.5 鐘擺理論 · 鐘擺理論的簡單實現——完美躲過股災和精準抄底
- 5.6 海龜模型
- simple turtle
- 俠之大者 一起賺錢
- 5.7 5217 策略 · 白龍馬的新手策略
- 5.8 SMIA · 基于歷史狀態空間相似性匹配的行業配置 SMIA 模型—取交集
- 5.9 神經網絡
- 神經網絡交易的訓練部分
- 通過神經網絡進行交易
- 5.10 PAMR · PAMR : 基于均值反轉的投資組合選擇策略 - 修改版
- 5.11 Fisher Transform · Using Fisher Transform Indicator
- 5.12 分型假說, Hurst 指數 · 分形市場假說,一個聽起來很美的假說
- 5.13 變點理論 · 變點策略初步
- 5.14 Z-score Model
- Zscore Model Tutorial
- 信用債風險模型初探之:Z-Score Model
- user-defined package
- 5.15 機器學習 · Machine Learning 學習筆記(一) by OTreeWEN
- 5.16 DualTrust 策略和布林強盜策略
- 5.17 卡爾曼濾波
- 5.18 LPPL anti-bubble model
- 今天大盤熔斷大跌,后市如何—— based on LPPL anti-bubble model
- 破解股市泡沫之謎——對數周期冪率(LPPL)模型
- 六 大數據模型
- 6.1 市場情緒分析
- 通聯情緒指標策略
- 互聯網+量化投資 大數據指數手把手
- 6.2 新聞熱點
- 如何使用優礦之“新聞熱點”?
- 技術分析【3】—— 眾星拱月,眾口鑠金?
- 七 排名選股系統
- 7.1 小市值投資法
- 學習筆記:可模擬(小市值+便宜 的修改版)
- 市值最小300指數
- 流通市值最小股票(新篩選器版)
- 持有市值最小的10只股票
- 10% smallest cap stock
- 7.2 羊駝策略
- 羊駝策略
- 羊駝反轉策略(修改版)
- 羊駝反轉策略
- 我的羊駝策略,選5只股無腦輪替
- 7.3 低價策略
- 專撿便宜貨(新版quartz)
- 策略原理
- 便宜就是 alpha
- 八 輪動模型
- 8.1 大小盤輪動 · 新手上路 -- 二八ETF擇時輪動策略2.0
- 8.2 季節性策略
- Halloween Cycle
- Halloween cycle 2
- 夏買電,東買煤?
- 歷史的十一月板塊漲幅
- 8.3 行業輪動
- 銀行股輪動
- 申萬二級行業在最近1年、3個月、5個交易日的漲幅統計
- 8.4 主題輪動
- 快速研究主題神器
- recommendation based on subject
- strategy7: recommendation based on theme
- 板塊異動類
- 風險因子(離散類)
- 8.5 龍頭輪動
- Competitive Securities
- Market Competitiveness
- 主題龍頭類
- 九 組合投資
- 9.1 指數跟蹤 · [策略] 指數跟蹤低成本建倉策略
- 9.2 GMVP · Global Minimum Variance Portfolio (GMVP)
- 9.3 凸優化 · 如何在 Python 中利用 CVXOPT 求解二次規劃問題
- 十 波動率
- 10.1 波動率選股 · 風平浪靜 風起豬飛
- 10.2 波動率擇時
- 基于 VIX 指數的擇時策略
- 簡單低波動率指數
- 10.3 Arch/Garch 模型 · 如何使用優礦進行 GARCH 模型分析
- 十一 算法交易
- 11.1 VWAP · Value-Weighted Average Price (VWAP)
- 十二 中高頻交易
- 12.1 order book 分析 · 基于高頻 limit order book 數據的短程價格方向預測—— via multi-class SVM
- 12.2 日內交易 · 大盤日內走勢 (for 擇時)
- 十三 Alternative Strategy
- 13.1 易經、傳統文化 · 老黃歷診股
- 第三部分 基金、利率互換、固定收益類
- 一 分級基金
- “優礦”集思錄——分級基金專題
- 基于期權定價的分級基金交易策略
- 基于期權定價的興全合潤基金交易策略
- 二 基金分析
- Alpha 基金“黑天鵝事件” -- 思考以及原因
- 三 債券
- 債券報價中的小陷阱
- 四 利率互換
- Swap Curve Construction
- 中國 Repo 7D 互換的例子
- 第四部分 衍生品相關
- 一 期權數據
- 如何獲取期權市場數據快照
- 期權高頻數據準備
- 二 期權系列
- [ 50ETF 期權] 1. 歷史成交持倉和 PCR 數據
- 【50ETF期權】 2. 歷史波動率
- 【50ETF期權】 3. 中國波指 iVIX
- 【50ETF期權】 4. Greeks 和隱含波動率微笑
- 【50ETF期權】 5. 日內即時監控 Greeks 和隱含波動率微笑
- 【50ETF期權】 5. 日內即時監控 Greeks 和隱含波動率微笑
- 三 期權分析
- 【50ETF期權】 期權擇時指數 1.0
- 每日期權風險數據整理
- 期權頭寸計算
- 期權探秘1
- 期權探秘2
- 期權市場一周縱覽
- 基于期權PCR指數的擇時策略
- 期權每日成交額PC比例計算
- 四 期貨分析
- 【前方高能!】Gifts from Santa Claus——股指期貨趨勢交易研究