day29-金融量化

day30 金融量化分析 

金融知識:股票的組成
餘額寶收益下跌:貨幣政策寬鬆了。
MA5:從它開始及5天前的收盤價的平均值
金叉買入,死叉賣出

量化投資與python:python語言
量化投資第三方相關模塊:
NumPy:數組批量計算
pandas:表計算與數據分析
Matplotlib:圖表繪製

三個模塊的學習:

anaconda下載,安裝anaconda3 5.3.1(64-bit)
下一步安裝便可,安裝後有anaconda prompt、anaconda navigator
activate base進入環境
anaconda自帶python,安裝時能夠不勾選path,不然打開的就是python中的anaconda
安裝後使用:Jupiter notebook,在help---keyboard shortcuts中可查看快捷鍵

1、numpy
import numpy as np
random.uniform(100,200) 100-200之間的隨機小數
例子1:
1.將數組中的數都*r,一行代碼實現
[r*a for a in li]
list(map(lambda x: x*r,li))
np實現:
arr = np.array(li)
arr*r
例子2:
p = [random.uniform(10,20) for _ in range(1000)]
n = [random.randint(1,10) for _ in range(1000)]

s = 0
for a,b in zip(p,n):
s += a*b
s
np實現:
arr_p = np.array(p)
arr_n = np.array(n)
(arr_p * arr_n).sum()

np優勢:速度快,省內存
shape屬性經常使用--數組的維度大小
數據類型經常使用整型和浮點型:
0看做是整數,4個字節,表示(-2 ** 31, 2**31-1),共2**32個數
int32大概是21億左右;;溢出會變爲0
astype能夠轉類型:arr.astype('float') 知道小數和整數互相轉換便可

arange()步長能夠是小數
np.zeros((2,3),dtype='int') 建立一個2行3列的數組,數值是int類型的全0,默認dtype是小數
np.empty()
數組的轉換:np.arange(15).reshape(3,5)
np.arange(15)[:-1].reshape(2,7)
np.arange(60).reshape(-1,5,4) -1位置隨意

8:50-
布爾型索引
arr[1,2] 第一行,第二列,下標從0開始
arr[:,2] 行都要,取第二列
"# 二維數組的行索引和列索引能夠互相搭配\n",
"# 例外:都是花式索引或者布爾型索引不行\n",
能夠這樣:"arr[[0,2],:][:,[1,3,4]]"
ceil向上, floor向下, rint四捨五入, trunc向零取整

方差 每一數與平均數的差取平方再求和
std= aqrt(var) 標準差=方差開根號
np.random.randint(3,10,3) 隨機生成3個3-10的隨機整數
np.random.randint(3,10,(3,5)) 隨機生成3行5列的3-10的隨機整數

重點:四個取整和兩個特殊值nan 、 inf
高數、線性代數、離散數學



2、pandas--最重要
具有對其功能的數據結構DataFrame、Series
Series是一種相似於一位數組的對象,由一組數據和一組與之相關的數據標籤(索引)組成。
支持數組的特性(語法、函數及方法)
import pandas as pd
sr = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
sr[2:3] # c 3
# sr['b':'c'] 先後都包
標籤是整數,取標籤對應的數
loc屬性 以標籤解釋
iloc屬性 如下標解釋

數據對齊:按照標籤來相加,不存在的相加顯示nan(不存在默認爲缺失值)
nan的類型爲float,series數據類型一致,因此整數和也是float
將缺失值設爲0 :sr1.add(sr2, fill_value=0)

處理缺失數據:
過濾缺失數據:sr.dropna() 或 sr[data.notnull()]
填充缺失數據:fillna(0)

DataFrame:二維的數據結構
本身建立pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]}) 瞭解便可
主要是從文件中讀取,例如:通常是 csv
文件打不開,能夠改成zip,就能夠打開了,數據在worksheets文件夾中的sheet1.xml中

csv文件讀取與寫入:
df = pd.read_csv('601318.csv')
df.read_csv('filename.csv') 讀
df.to_csv('new.csv') 寫
第一行默認解釋成列索引,默認生成從0開始的行索引!
array的dtype=object,由於每一列的值不一致。
df.index

切片和索引:第一個表示行
方法1:兩個中括號,先取列再取行。 df['A'][0]
方法2(推薦):使用loc/iloc屬性,一箇中括號,逗號隔開,先取行再取列。
loc屬性:解釋爲標籤
iloc屬性:解釋爲下標
先去列再取行或者df.loc[1,'open] df.iloc[1,1]
賦值df.iloc[1,1]=12

大於20的數都變爲0 注意不取字符串類型的值,不然會報錯
df2 = df.loc[:,'open':'low'].copy()
df2[df2>20] = 0
df2

DataFrame數據對齊設置fill_value=0,行列都存在則進行相加缺失數據:填充fillna(0) 扔掉dropnadropna(how='all')行列有數據就留下,默認爲any,有缺失值就整行或列丟掉axis=1,換軸,本來是刪一行,變爲刪一列skipna=False跳過缺失值ascending=False 降序時間對象timedelta時間差值to_pydatetime()轉換成python中datetime中的格式作日期報表:# pd.DataFrame(np.nan, index=pd.date_range('2019-1-1', '2019-12-31'), columns=['張三','李四','王五']).to_csv('date.csv') 產生時間對象數組:date_rangepd.date_range('2019-1-1', '2019-12-31',freq='MS') 每月初生成一條,freq='M'每月末生成一條3D:3天一條  SM:半個月 W-FRI :每週五 B:週一到週五時間序列:DatetimeIndex對象類型,能夠進行快速的切片補充:df.resample('3D').mean() 每3天取平均每個月第一天 df.resample('M').first()統計學會有專門分支講解,咱們學習瞭解目前的就好。文件處理:1.pd.read_csv('601318.csv'),默認把第一行解釋爲表頭pd.read_csv('601318.csv',header=None) 指定文件無列名行索引本身生成,index_col  指定某列做爲索引,就是普通的indexparse_dates=True   指定某些列是否被解析爲日期,布爾值或列表,此時日期就是datetimeindex類型sep='\s+'指定分隔符爲空格,這樣可忽略數據之間的空格有時可能遇到一個字段(eg:None)沒有解析整個列數據類型都改變的狀況,須要指定缺失值。na_values  指定某些字符串表示缺失值  ,na_values=['None','<empty>'],這樣會把None,<empty>解析爲NaNfloat_format='%.3f' 保留小數點後3位index=False    不輸出行索引一列columns=['open','low'] 只導出指定的兩列na_rep='NaN'Tushare是一個免費、開源的python財經數據接口包。(國內的)須要安裝:deactivateactivate basepip install tushare安裝後能夠import使用 import tushare as ts"ts.get_k_data('601318',start='1980-1-1',end='2018-12-1')"獲取股票數據小練習:1手:100股定投:幾年以後極可能賺錢!day29  ok!下週;畫圖及策略----視頻??
相關文章
相關標籤/搜索