我用R来计算SP500中所有股票的相切投资组合。在
权益列表是通过python脚本加载的
import urllib2
import pytz
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
from datetime import datetime
from pandas.io.data import DataReader
SITE = "http://en.wikipedia.org/wiki/List_of_S%26P_500_companies"
START = datetime(1900, 1, 1, 0, 0, 0, 0, pytz.utc)
END = datetime.today().utcnow()
def scrape_list(site):
hdr = {'User-Agent': 'Mozilla/5.0'}
req = urllib2.Request(site, headers=hdr)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)
table = soup.find('table', {'class': 'wikitable sortable'})
sector_tickers = dict()
for row in table.findAll('tr'):
col = row.findAll('td')
if len(col) > 0:
sector = str(col[3].string.strip()).lower().replace(' ', '_')
ticker = str(col[0].string.strip())
if sector not in sector_tickers:
sector_tickers[sector] = list()
sector_tickers[sector].append(ticker)
return sector_tickers
# export sp500 in a list
def get_sp500_all():
sector_tickers = scrape_list(SITE)
a = sector_tickers.values()
b = a[0]
for i in range(1, len(a)):
b.extend(a[i])
return b
if __name__ == '__main__':
all_symbols = get_sp500_all()
all_symbols.sort()
print len(all_symbols)
np.savetxt('all_symbols.csv',all_symbols, delimiter=',',fmt="%s")
然后将包含所有股票的csv加载到R中,在R中计算相切投资组合
^{pr2}$但总有错误
Error in solve.default(cov(returns_df), mu2) :
system is computationally singular: reciprocal condition number = 1.59968e-21
我也可以使用函数相切。投资组合.r
##Tangency portfolio
# download tangency.portfolio.r
# https://r-forge.r-project.org/scm/viewvc.php/pkg/IntroCompFinR/R/tangency.portfolio.R?view=markup&root=introcompfinr
source("D:\\MOOC\\compfinance\\excise\\tangency.portfolio.r")
#The tangency portfolio
# risk free rate
t_bill_rate = 0.00001
# Tangency portfolio short sales allowed
tangency_portfolio_short = tangency.portfolio(mu_hat_month, cov_mat_month, risk.free=t_bill_rate, shorts=TRUE)
有错误
Error in chol.default(cov.mat) :
the leading minor of order 25 is not positive definite
似乎返回的数据有问题,但不知道哪里出错了。有人能帮忙吗?在
错误:系统在计算上是单数=>;这意味着您的设计矩阵不可逆
使用ginv(),而不是solve(),它可以求解可逆矩阵。在
相关问题 更多 >
编程相关推荐