你也可以成为巴菲特!10分钟学会用Python做美股相关性分析
美股作为目前实现财务自由的一种方式,让身边的朋友有的翻身做主,但更多的朋友可能在美股上翻了船,如何只赚不亏?你只需要花费10分钟阅读这篇文章,就能学会如何用Python的机器学习库来对股票进行分析,虽然不能说立即当上股神,但至少能让人工智能助你一臂之力。
分析美股数据
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析分析美股数据
首先快速浏览历史股票价格。这将通过从pandas数据集和雅虎财经中获取最新的股票数据来完成。然后将尝试通过探索性分析来分析数据,例如相关热图,matplotlib可视化以及使用线性分析和K最近邻(KNN)的预测分析。
加载YahooFinance数据集
是pandas库的扩展,用于与最新的财务数据进行通信。这将包括以下来源:Yahoo Finance,Google Finance,Enigma等。
我们将使用以下代码提取Apple Stocks Price:
import pandas as pd
import datetime
import pandas_datareader.data as web
from pandas import Series, DataFrame
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2017, 1, 11)
df = web.DataReader("AAPL", 'yahoo', start, end)
df.tail()
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析股票价格来自雅虎财经这段代码将获取2010年1月到2017年1月7年的数据。可以根据需要随意调整开始日期和结束日期的实践跨度,我们将使用收盘价来做分析,该价格表示在当天结束时交易股票的最终价格。
探讨股票的滚动均值和收益率
在此分析中,使用两个关键指标来分析股票:滚动均值和回报率。
滚动平均值(移动平均线) - 确定趋势
滚动均值/移动平均线(MA)通过创建不断更新的平均价格来平滑价格数据。这有助于减少价格图表中的"噪音"。此外,该移动平均线可以充当"阻力",意味着从股票的下行趋势和上升趋势,您可以预期它将跟随趋势并且不太可能偏离其阻力点。
让我们开始代码滚动平均值:
close_px = df['Adj Close']
mavg = close_px.rolling(window=100).mean()
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析最后10个移动平均线
这将计算最近100个窗口(100天)的股票收盘价的移动平均线,并取每个窗口移动平均线的平均值。正如您所看到的,移动平均线在窗口上稳步上升,并没有遵循锯齿状的股票价格线图。
为了更好地理解,让我们用Matplotlib可视化图形。将使用股票价格图覆盖移动平均线。
%matplotlib inline
import matplotlib.pyplot as plt
from matplotlib import style
Adjusting the size of matplotlib
import matplotlib as mpl
mpl.rc('figure', figsize=(8, 7))
mpl.version
Adjusting the style of matplotlib
style.use('ggplot')
close_px.plot(label='AAPL')
mavg.plot(label='mavg')
plt.legend()
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析Apple Stocks与移动平均线的价格(mavg)
移动平均线使线条平滑并显示股票价格的上涨或下降趋势。
在此图表中,移动平均线显示了股票价格上涨或下跌的趋势。从价值投资的逻辑来说,应该在股票经历低迷时购买,并在股票价格好转时卖出。
返回偏差 - 确定风险和回报
预期收益率衡量投资收益概率分布的均值或预期值。投资组合的预期收益是通过将每个资产的权重乘以其预期收益并将每个投资的值相加来计算的 - Investopedia。
以下是参考公式:
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析参考公式
根据公式,可以将回报绘制如下。
rets = close_px / close_px.shift(1) - 1
rets.plot(label='return')
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析绘制回报率
从逻辑上讲,理想回报应该尽可能高且稳定。如果厌恶风险,您可能希望避免这种2013年下跌10%的股票。这一决定很大程度上取决于大家在股市上的交易情绪。
分析竞争对手股票
在这一部分中,将分析一家公司与其竞争对手的相对表现。以科技公司做分析为例,并分析其龙头: Apple,GE,Google,IBM和Microsoft。
dfcomp = web.DataReader(['AAPL', 'GE', 'GOOG', 'IBM', 'MSFT'],'yahoo',start=start,end=end)['Adj Close']
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析Apple,General Electrics,Google,IBM和Microsoft的股票价格
这将返回雅虎财经股票价格中的收盘价格。
相关性分析 - 股票价格相关依赖因素分析
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析百分比变化将发现与定义回报的前一天相比价格变化的程度
我们可以通过在pandas中运行百分比变化和相关函数来分析竞争。百分比变化将发现与定义回报的前一天相比价格变化的程度。了解相关性将有助于了解回报是否受到其他股票回报的影响。
retscomp = dfcomp.pct_change()
corr = retscomp.corr()
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析用ScatterPlot绘制Apple和GE的股票相关图,以查看他们的回报分布。
plt.scatter(retscomp.AAPL, retscomp.GE)
plt.xlabel(‘Returns AAPL’)
plt.ylabel(‘Returns GE’)
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析GE和AAPL的股票散点图
可以看到GE回报与Apple回报之间存在轻微的正相关关系。看起来苹果公司的回报越高,大多数情况下GE的回报率也越高。
接下来通过绘制scatter_matrix来进一步改进我们的分析,以可视化竞争股票之间可能的相关性。在对角线点,我们将运行核密度估计(KDE)。KDE是一个基本的数据平滑技巧,根据有限的数据样本对总体进行推断。它有助于生成总体分布的估计值。
pd.scatter_matrix(retscomp, diagonal='kde', figsize=(10, 10));
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析KDE图和散点图
从这里可以看到大多数股票之间的分布大致正相关。
为了验证股票之间的正相关,将使用热图来显示竞争股票之间的相关范围。请注意,颜色越浅,两种股票的相关性就越大。
plt.imshow(corr, cmap='hot', interpolation='none')
plt.colorbar()
plt.xticks(range(len(corr)), corr.columns)
plt.yticks(range(len(corr)), corr.columns);
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析股票之间的相关热图
从Scatter Matrix和Heatmap可视化,一眼观之可以发现竞争股票之间存在很大的相关性。然而,这并不能说明股票之间的因果关系,可能只是揭示了技术行业的趋势,而不是说明竞争股票之间是如何相互影响。
股票回报率和风险
除相关性外,我们还分析每只股票的风险和回报。在这种情况下,我们提取回报的平均值(回报率)和回报的标准差(风险)。
plt.scatter(retscomp.mean(), retscomp.std())
plt.xlabel('Expected returns')
plt.ylabel('Risk')
for label, x, y in zip(retscomp.columns, retscomp.mean(), retscomp.std()):
plt.annotate(
label,
xy = (x, y), xytext = (20, -20),
textcoords = 'offset points', ha = 'right', va = 'bottom',
bbox = dict(boxstyle = 'round,pad=0.5', fc = 'yellow', alpha = 0.5),
arrowprops = dict(arrowstyle = '->', connectionstyle = 'arc3,rad=0'))
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析股票风险和收益之间的快速分散图
现在,可以查看这个完整的风险图表并返回竞争股票的比较。逻辑上讲,希望将风险降至最低并使回报最大化。因此,需要绘制风险回报容差线(红线)。然后,将创建规则以购买红线下的股票(MSFT,GE和IBM),并将这些股票卖出红线以上(AAPL和GOOG)。此红线显示预期价值阈值和买入/卖出决策的基线。
你也可以成为巴菲特!10分钟学会用Python做美股相关性分析此红线显示预期价值阈值和买入/卖出决策的基线
上面从美股数据获取到相关性分析做了介绍和代码演示,接下来我们会用美股的历史数据对未来的价格做一个预测。