注意:分析的证券数据日期范围为2013年至2014年,如果调整了数据对应的日期范围,分析结果也将会有很大的变化。
初始化
- %matplotlib inline
- %pylab
- from sklearn import cluster # 机器学习工具
- import pandas # 数据操作与计算工具
- import ystockquote as ys # 股价获取工具
- rcParams['figure.figsize'] = (13, 6) # 指定默认的画布大小
选取所要分析的有价证券
- symbols = array([
- 'blv', # bond: long-term bond
- 'bnd', # bond: total bond market
- 'bsv', # bond: short-term bond
- 'tip', # bond: treasury inflation protected
- 'gld', # commodity: gold (SPDR)
- 'iau', # commodity: gold (iShares)
- 'slv', # commodity: silver
- 'vti', # stock: US total stock market
- 'vbk', # stock: US small-cap stock
- 'aapl', # stock: Apple
- 'ua', # stock: Under Armour
- 'cmg', # stock: Chipotle
- ])
- prices = pandas.DataFrame({
- symbol: {
- date: quote['Adj Close']
- for date, quote in ys.get_historical_prices
- (symbol, '2000-01-01', '2015-01-01').iteritems()
- }
- for symbol in symbols
- }, columns=symbols, dtype=float)
- prices.tail()
- prices.head()
剔除缺失值,仅留存所有所选证券皆有数据的记录
- prices.dropna(inplace=True)
- prices.head()
选择一个自定义开始日期进行分析
- prices = prices.ix['2013-01-01':]
- prices.head()
绘制每日收盘价曲线图
- prices[['vti', 'bnd', 'iau']].plot() # 你也可以选择其他有价证券
- #prices.plot() # 这个语句将把所有的有价证券收盘价变动情况描绘出来
- ylabel('Daily Close')
以第一天为基期,绘制每一支股票的价格变动比走势
- prices_norm = prices.copy()
- for symbol in symbols:
- prices_norm[symbol] = prices[symbol]/prices[symbol][0]
- prices_norm[['vti', 'bnd', 'iau']].plot()
绘制股价金价比率曲线图( VTI/IAU)
可以看到,在2013年至2014年间,美国市场整体股票价格增长快于金价增长。
- (prices_norm.vti/prices_norm.iau).plot(logy=True)
- ylim(0.3, 1.5)
以上内容转自 数析学院,原文还包括 数据分析、资产组合分配等内容,有需要的同学可以直接查看原文