python中cov函數(shù) python csv函數(shù)

請(qǐng)求幫助:Matlab中cov函數(shù)是如何計(jì)算的

cov對(duì)角線是相應(yīng)列的方差,非對(duì)角線列是相應(yīng)列的協(xié)方差,你是4*4的原始方陣,所以就是4*4的矩陣 !

成都創(chuàng)新互聯(lián)公司2013年至今,先為花都等服務(wù)建站,花都等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為花都企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

matlab 中的cov等的統(tǒng)計(jì)函數(shù)的用法;假設(shè)X={xij}是一個(gè)p*n的矩陣,即有p個(gè)變?cè)?,n次觀察,如何求協(xié)方差矩

a=[1?2?3;2?5?6]

a?=

1?????2?????3

2?????5?????6

b=mean(a)%%mean是按列求平均值,從b中的值可以看出

b?=

1.5000????3.5000????4.5000

c=mean(a')%%所以要按行求平均值,直接轉(zhuǎn)置求取,最后對(duì)c再求轉(zhuǎn)置即可得到p維列向量

c?=

2.0000????4.3333

%%%%%%%%%%%%%%%%%%%%%%%%%%

M=rand(4,3)

M?=

0.9501????0.8913????0.8214

0.2311????0.7621????0.4447

0.6068????0.4565????0.6154

0.4860????0.0185????0.7919

m=cov(M)

m?=

0.0892????0.0330????0.0405

0.0330????0.1505???-0.0186

0.0405???-0.0186????0.0305%%%%%%%%可以看出最后得到的協(xié)方差是3*3,由此知cov也是按列計(jì)算的,m對(duì)角線的元素是每列的方差,其余元素是列與列之間的協(xié)方差

n=cov(M')

n?=

0.0042???-0.0061???-0.0006???-0.0110

-0.0061????0.0714???-0.0214???-0.0714

-0.0006???-0.0214????0.0080????0.0326

-0.0110???-0.0714????0.0326????0.1517%%轉(zhuǎn)置后計(jì)算協(xié)方差,n為4*4,那么對(duì)角線元素就是行的方差,其余元素就是行與行之間的協(xié)方差。

%%%%%%%%%%%%%%%%%

關(guān)于cov計(jì)算的結(jié)果和手算的結(jié)果不同,這里的原因是:

matlab在計(jì)算相關(guān)矩陣時(shí),把每一列的數(shù)作為一個(gè)隨機(jī)變量的樣本,每一行作為一個(gè)這幾個(gè)隨機(jī)變量的聯(lián)合樣本,即第i個(gè)隨機(jī)變量取第k行的樣本值時(shí),第j個(gè)隨機(jī)變量也取第k行的樣本值。利用這個(gè)性質(zhì),我們就可以用協(xié)方差的公式代入來(lái)計(jì)算協(xié)方差矩陣了。

然而,由于矩陣中給出只是這些隨機(jī)變量的樣本,根據(jù)概率論的知識(shí)我們知道,由于我們不知道這些隨機(jī)變量的概率分布(或聯(lián)合概率分布),我們是不可能計(jì)算出這些隨機(jī)變量的期望、方差或是協(xié)方差的,而只能計(jì)算出它們的一個(gè)無(wú)偏估計(jì),即樣本均值、樣本方差與樣本協(xié)方差。其計(jì)算公式如下所示:

Python - 測(cè)試覆蓋率統(tǒng)計(jì)

Python 的測(cè)試覆蓋率使用 Coverage 模塊, 需要先安裝:

假設(shè)你原來(lái)執(zhí)行單元測(cè)試的命令為:

那么需要分析測(cè)試覆蓋率時(shí),只要將命令改為如下即可:

參數(shù)解釋:

輸出到控制臺(tái)的簡(jiǎn)單統(tǒng)計(jì)結(jié)果:

也可以轉(zhuǎn)化成HTML,會(huì)在當(dāng)前目錄生成 covhtml 文件夾,打開(kāi)html文件即可查看詳細(xì)的覆蓋率情況:

yaml腳本添加如下兩行:

在gitlab的 CI/CD - General pipelines settings 配置中,添加 Test coverage parsing 的正則:

運(yùn)行后,單元測(cè)試的 Job 頁(yè)面即可看到coverage

---EOF---

matlab cov函數(shù)是求什么的?怎么用?

是算協(xié)方差的,covariance

是以列向量為單位,算出協(xié)方差是多少,Cov(X),X為觀察結(jié)果,數(shù)據(jù)的矩陣,列向量表示一次得到的觀察結(jié)果,樣本

協(xié)方差參考

如何用python實(shí)現(xiàn)Markowitz投資組合優(yōu)化

多股票策略回測(cè)時(shí)常常遇到問(wèn)題。

倉(cāng)位如何分配?

你以為基金經(jīng)理都是一拍腦袋就等分倉(cāng)位了嗎?

或者玩點(diǎn)玄乎的斐波拉契數(shù)列?

OMG,誰(shuí)說(shuō)的黃金比例,讓我看到你的腦袋(不削才怪)??!

其實(shí),這個(gè)問(wèn)題,好多好多年前馬科維茨(Markowitz)我喜愛(ài)的小馬哥就給出答案——投資組合理論。

根據(jù)這個(gè)理論,我們可以對(duì)多資產(chǎn)的組合配置進(jìn)行三方面的優(yōu)化。

1.找到有效前沿。在既定的收益率下使組合的方差最小。

2.找到sharpe最優(yōu)的組合(收益-風(fēng)險(xiǎn)均衡點(diǎn))

3.找到風(fēng)險(xiǎn)最小的組合

跟著我,一步兩步,輕松實(shí)現(xiàn)。

該理論基于用均值和方差來(lái)表述組合的優(yōu)劣的前提。將選取幾只股票,用蒙特卡洛模擬初步探究組合的有效前沿。

通過(guò)最大Sharpe和最小方差兩種優(yōu)化來(lái)找到最優(yōu)的資產(chǎn)組合配置權(quán)重參數(shù)。

最后,刻畫(huà)出可能的分布,兩種最優(yōu)以及組合的有效前沿。

注:

文中的數(shù)據(jù)API來(lái)自量化平臺(tái)聚寬,在此表示感謝。

原文見(jiàn)【組合管理】——投資組合理論(有效前沿)(包含正態(tài)檢驗(yàn)部分)

0.導(dǎo)入需要的包

import pandas as pd

import numpy as np

import statsmodels.api as sm #統(tǒng)計(jì)運(yùn)算

import scipy.stats as scs #科學(xué)計(jì)算

import matplotlib.pyplot as plt #繪圖

1.選取幾只感興趣的股票

000413 東旭光電,000063 中興通訊,002007 華蘭生物,000001 平安銀行,000002 萬(wàn)科A

并比較一下數(shù)據(jù)(2015-01-01至2015-12-31)

In[1]:

stock_set = ['000413.XSHE','000063.XSHE','002007.XSHE','000001.XSHE','000002.XSHE']

noa = len(stock_set)

df = get_price(stock_set, start_date = '2015-01-01', end_date ='2015-12-31', 'daily', ['close'])

data = df['close']

#規(guī)范化后時(shí)序數(shù)據(jù)

(data/data.ix[0]*100).plot(figsize = (8,5))

Out[1]:

2.計(jì)算不同證券的均值、協(xié)方差

每年252個(gè)交易日,用每日收益得到年化收益。計(jì)算投資資產(chǎn)的協(xié)方差是構(gòu)建資產(chǎn)組合過(guò)程的核心部分。運(yùn)用pandas內(nèi)置方法生產(chǎn)協(xié)方差矩陣。

In [2]:

returns = np.log(data / data.shift(1))

returns.mean()*252

Out[2]:

000413.XSHE 0.184516

000063.XSHE 0.176790

002007.XSHE 0.309077

000001.XSHE -0.102059

000002.XSHE 0.547441

In [3]:

returns.cov()*252

Out[3]:

3.給不同資產(chǎn)隨機(jī)分配初始權(quán)重

由于A股不允許建立空頭頭寸,所有的權(quán)重系數(shù)均在0-1之間

In [4]:

weights = np.random.random(noa)

weights /= np.sum(weights)

weights

Out[4]:

array([ 0.37505798, 0.21652754, 0.31590981, 0.06087709, 0.03162758])

4.計(jì)算預(yù)期組合年化收益、組合方差和組合標(biāo)準(zhǔn)差

In [5]:

np.sum(returns.mean()*weights)*252

Out[5]:

0.21622558669017816

In [6]:

np.dot(weights.T, np.dot(returns.cov()*252,weights))

Out[6]:

0.23595133640121463

In [7]:

np.sqrt(np.dot(weights.T, np.dot(returns.cov()* 252,weights)))

Out[7]:

0.4857482232609962

5.用蒙特卡洛模擬產(chǎn)生大量隨機(jī)組合

進(jìn)行到此,我們最想知道的是給定的一個(gè)股票池(證券組合)如何找到風(fēng)險(xiǎn)和收益平衡的位置。

下面通過(guò)一次蒙特卡洛模擬,產(chǎn)生大量隨機(jī)的權(quán)重向量,并記錄隨機(jī)組合的預(yù)期收益和方差。

In [8]:

port_returns = []

port_variance = []

for p in range(4000):

weights = np.random.random(noa)

weights /=np.sum(weights)

port_returns.append(np.sum(returns.mean()*252*weights))

port_variance.append(np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252, weights))))

port_returns = np.array(port_returns)

port_variance = np.array(port_variance)

#無(wú)風(fēng)險(xiǎn)利率設(shè)定為4%

risk_free = 0.04

plt.figure(figsize = (8,4))

plt.scatter(port_variance, port_returns, c=(port_returns-risk_free)/port_variance, marker = 'o')

plt.grid(True)

plt.xlabel('excepted volatility')

plt.ylabel('expected return')

plt.colorbar(label = 'Sharpe ratio')

Out[8]:

6.投資組合優(yōu)化1——sharpe最大

建立statistics函數(shù)來(lái)記錄重要的投資組合統(tǒng)計(jì)數(shù)據(jù)(收益,方差和夏普比)

通過(guò)對(duì)約束最優(yōu)問(wèn)題的求解,得到最優(yōu)解。其中約束是權(quán)重總和為1。

In [9]:

def statistics(weights):

weights = np.array(weights)

port_returns = np.sum(returns.mean()*weights)*252

port_variance = np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252,weights)))

return np.array([port_returns, port_variance, port_returns/port_variance])

#最優(yōu)化投資組合的推導(dǎo)是一個(gè)約束最優(yōu)化問(wèn)題

import scipy.optimize as sco

#最小化夏普指數(shù)的負(fù)值

def min_sharpe(weights):

return -statistics(weights)[2]

#約束是所有參數(shù)(權(quán)重)的總和為1。這可以用minimize函數(shù)的約定表達(dá)如下

cons = ({'type':'eq', 'fun':lambda x: np.sum(x)-1})

#我們還將參數(shù)值(權(quán)重)限制在0和1之間。這些值以多個(gè)元組組成的一個(gè)元組形式提供給最小化函數(shù)

bnds = tuple((0,1) for x in range(noa))

#優(yōu)化函數(shù)調(diào)用中忽略的唯一輸入是起始參數(shù)列表(對(duì)權(quán)重的初始猜測(cè))。我們簡(jiǎn)單的使用平均分布。

opts = sco.minimize(min_sharpe, noa*[1./noa,], method = 'SLSQP', bounds = bnds, constraints = cons)

opts

Out[9]:

status: 0

success: True

njev: 4

nfev: 28

fun: -1.1623048291871221

x: array([ -3.60840218e-16, 2.24626781e-16, 1.63619563e-01, -2.27085639e-16, 8.36380437e-01])

message: 'Optimization terminated successfully.'

jac: array([ 1.81575805e-01, 5.40387481e-01, 8.18073750e-05, 1.03137662e+00, -1.60038471e-05, 0.00000000e+00])

nit: 4

得到的最優(yōu)組合權(quán)重向量為:

In [10]:

opts['x'].round(3)

Out[10]:

array([-0. , 0. , 0.164, -0. , 0.836])

sharpe最大的組合3個(gè)統(tǒng)計(jì)數(shù)據(jù)分別為:

In [11]:

#預(yù)期收益率、預(yù)期波動(dòng)率、最優(yōu)夏普指數(shù)

statistics(opts['x']).round(3)

Out[11]:

array([ 0.508, 0.437, 1.162])

7.投資組合優(yōu)化2——方差最小

接下來(lái),我們通過(guò)方差最小來(lái)選出最優(yōu)投資組合。

In [12]:

#但是我們定義一個(gè)函數(shù)對(duì) 方差進(jìn)行最小化

def min_variance(weights):

return statistics(weights)[1]

optv = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)

optv

Out[12]:

status: 0

success: True

njev: 7

nfev: 50

fun: 0.38542969450547221

x: array([ 1.14787640e-01, 3.28089742e-17, 2.09584008e-01, 3.53487044e-01, 3.22141307e-01])

message: 'Optimization terminated successfully.'

jac: array([ 0.3851725 , 0.43591119, 0.3861807 , 0.3849672 , 0.38553924, 0. ])

nit: 7

方差最小的最優(yōu)組合權(quán)重向量及組合的統(tǒng)計(jì)數(shù)據(jù)分別為:

In [13]:

optv['x'].round(3)

Out[13]:

array([ 0.115, 0. , 0.21 , 0.353, 0.322])

In [14]:

#得到的預(yù)期收益率、波動(dòng)率和夏普指數(shù)

statistics(optv['x']).round(3)

Out[14]:

array([ 0.226, 0.385, 0.587])

8.組合的有效前沿

有效前沿有既定的目標(biāo)收益率下方差最小的投資組合構(gòu)成。

在最優(yōu)化時(shí)采用兩個(gè)約束,1.給定目標(biāo)收益率,2.投資組合權(quán)重和為1。

In [15]:

def min_variance(weights):

return statistics(weights)[1]

#在不同目標(biāo)收益率水平(target_returns)循環(huán)時(shí),最小化的一個(gè)約束條件會(huì)變化。

target_returns = np.linspace(0.0,0.5,50)

target_variance = []

for tar in target_returns:

cons = ({'type':'eq','fun':lambda x:statistics(x)[0]-tar},{'type':'eq','fun':lambda x:np.sum(x)-1})

res = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)

target_variance.append(res['fun'])

target_variance = np.array(target_variance)

下面是最優(yōu)化結(jié)果的展示。

叉號(hào):構(gòu)成的曲線是有效前沿(目標(biāo)收益率下最優(yōu)的投資組合)

紅星:sharpe最大的投資組合

黃星:方差最小的投資組合

In [16]:

plt.figure(figsize = (8,4))

#圓圈:蒙特卡洛隨機(jī)產(chǎn)生的組合分布

plt.scatter(port_variance, port_returns, c = port_returns/port_variance,marker = 'o')

#叉號(hào):有效前沿

plt.scatter(target_variance,target_returns, c = target_returns/target_variance, marker = 'x')

#紅星:標(biāo)記最高sharpe組合

plt.plot(statistics(opts['x'])[1], statistics(opts['x'])[0], 'r*', markersize = 15.0)

#黃星:標(biāo)記最小方差組合

plt.plot(statistics(optv['x'])[1], statistics(optv['x'])[0], 'y*', markersize = 15.0)

plt.grid(True)

plt.xlabel('expected volatility')

plt.ylabel('expected return')

plt.colorbar(label = 'Sharpe ratio')

Out[16]:

相關(guān)函數(shù)的協(xié)方差的性質(zhì)

協(xié)方差的性質(zhì):

1、Cov(X,Y)=Cov(Y,X);

2、Cov(aX,bY)=abCov(X,Y),(a,b是常數(shù));

3、Cov(X1+X2,Y)=Cov(X1,Y)+Cov(X2,Y)。

由協(xié)方差定義,可以看出Cov(X,X)=D(X),Cov(Y,Y)=D(Y)。

協(xié)方差函數(shù)定義為:

若X(t)=Y(t)+i*Z(t),Y,Z為實(shí)過(guò)程,則稱X(t)為復(fù)隨機(jī)過(guò)程,相關(guān)函數(shù)定義為:

擴(kuò)展資料

協(xié)方差反映了兩個(gè)變量之間的相關(guān)程度:

協(xié)方差是兩個(gè)變量與自身期望做差再相乘,然后對(duì)乘積取期望。也就是說(shuō),當(dāng)其中一個(gè)變量的取值大于自身期望,另一個(gè)變量的取值也大于自身期望時(shí),即兩個(gè)變量的變化趨勢(shì)相同,此時(shí),兩個(gè)變量之間的協(xié)方差取正值。

反之,即其中一個(gè)變量大于自身期望時(shí),另外一個(gè)變量小于自身期望,那么這兩個(gè)變量之間的協(xié)方差取負(fù)值。

當(dāng)x與y變化趨勢(shì)一致時(shí),兩個(gè)變量與自身期望之差同為正或同為負(fù),其乘積必然為正,所以其協(xié)方差為正;反之,其協(xié)方差為負(fù)。所以協(xié)方差的正負(fù)性反映了兩個(gè)變量的變化趨勢(shì)是否一致。

再者,當(dāng)x和y在某些時(shí)刻變化一致,某些時(shí)刻變化不一致時(shí),在第一個(gè)點(diǎn),x與y雖然變化,但是y的變化幅度遠(yuǎn)不及x變化幅度大,所以其乘積必然較小。

在第二個(gè)點(diǎn),x與y變化一致且變化幅度都很大,因此其乘積必然較大,在第三個(gè)點(diǎn),x與y變化相反,其乘積為負(fù)值,這類點(diǎn)將使其協(xié)方差變小,因此,我們可以認(rèn)為協(xié)方差絕對(duì)值大小反映了兩個(gè)變量變化的一致程度。因此,兩個(gè)變量相關(guān)系數(shù)的定義為協(xié)方差與變量標(biāo)準(zhǔn)差乘積之比。

參考資料來(lái)源:百度百科-協(xié)方差

本文名稱:python中cov函數(shù) python csv函數(shù)
轉(zhuǎn)載來(lái)于:http://muchs.cn/article22/docdgjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)服務(wù)器托管、網(wǎng)站營(yíng)銷移動(dòng)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)