股票市场分析实战

导入相关函数库

import pandas as pd
import numpy as np
from pandas import Series, DataFrame
import matplotlib.pyplot as plt
%matplotlib inline
from datetime import datetime
import seaborn as sns
sns.set()

从cvs读取文件

# 阿里巴巴的股票行情和亚马逊的股票行情
ba = open('BABA.csv')
am = open('AMZN.csv')
# 以第0行作为索引
alibaba = pd.read_csv(ba, index_col=0)
amazon = pd.read_csv(am, index_col=0)
# 显示前5行
alibaba.head()
    Open    High    Low Close   Adj Close   Volume
Date                        
2015-09-21  65.379997   66.400002   62.959999   63.900002   63.900002   22355100
2015-09-22  62.939999   63.270000   61.580002   61.900002   61.900002   14897900
2015-09-23  61.959999   62.299999   59.680000   60.000000   60.000000   22684600
2015-09-24  59.419998   60.340000   58.209999   59.919998   59.919998   20645700
2015-09-25  60.630001   60.840000   58.919998   59.240002   59.240002   17009100

画图

# 阿里巴巴关盘价画图
alibaba['Adj Close'].plot(legend=True)

这里写图片描述

#交易量
alibaba['Volume'].plot(legend=True)

这里写图片描述

# 对比两只股票的关盘价
alibaba['Adj Close'].plot(legend=True)
amazon['Adj Close'].plot(legend=True)

这里写图片描述

pct_change

# 计算每天关盘盈亏比例
alibaba['daily-return'] = alibaba['Adj Close'].pct_change()
alibaba['daily-return'].plot(figsize=(10,4), linestyle='--', marker='o')

这里写图片描述

直方图和密度图

sns.distplot(alibaba['daily-return'].dropna(), bins=100, color='purple')

这里写图片描述

多只股票的关盘价分析

f = open('top5.csv')
top_tech_df = pd.read_csv(f, index_col=0)
# 对时间进行从前到后排序
top_tech_df = top_tech_df.sort_index()
top_tech_df.head()

    AAPL    AMZN    FB  GOOG    MSFT
Date                    
2014-12-31  104.863991  310.350006  78.019997   523.521423  43.266247
2015-01-02  103.866470  308.519989  78.449997   521.937744  43.555000
2015-01-05  100.940392  302.190002  77.190002   511.057617  43.154472
2015-01-06  100.949890  295.290009  76.150002   499.212799  42.521076
2015-01-07  102.365440  298.420013  76.150002   498.357513  43.061325

关盘价盈亏比

top_tech_dr = top_tech_df.pct_change()

画图

# 多只股票的收盘价格图
top_tech_df.plot()

这里写图片描述

# 选取其中3只
top_tech_df[['GOOG','MSFT','AAPL']].plot()

这里写图片描述

相关性分析

# sns绘图scatter表示散点图,传入x,y轴,数据源top_tech_dr
sns.jointplot('AAPL','AMZN',top_tech_dr, kind='scatter')
# 可以看到在以(0,0)为分割的坐标中,1,3象限所在点比较多,而且相关性也比较强

这里写图片描述

# 画出全部列的散点图
sns.pairplot(top_tech_dr.dropna())

这里写图片描述

风险分析

# 使用盈亏比数据分析
# 0.48的几率盈利0.001107631364068098
top_tech_dr['AAPL'].quantile(0.52)
0.001107631364068098

# 0.90的几率亏损0.013821200284433788
top_tech_dr['GOOG'].quantile(0.1)
-0.013821200284433788

# 0.90的几率亏损0.014841820375433912
top_tech_dr['AMZN'].quantile(0.1)
-0.014841820375433912

猜你喜欢

转载自blog.csdn.net/weixin_39778570/article/details/81157040