数据分析-08

  • 金融领域数据分析示例
    • 1. 移动均线
    • 3. 布林带
      • 1)什么是布林带
      • 2)布林带的业务指标与含义
      • 3)绘制布林带
    • 基于函数矢量化的股票回测模型
  • 代码总结
    • 量化交易常用指标
    • 移动平均线
    • 布林带
    • 浦发银行量化回测模型
    • 加载pfyh文件
    • 设计投资策略
    • 回测模型

金融领域数据分析示例

1. 移动均线

移动均线(Moving Average,简称MA)是用统计分析的方法,将一定时期内的证券价格(指数)加以平均,并把不同时间的平均值连接起来,形成一根MA,用以观察证券价格变动趋势的一种技术指标。移动平均线是由著名的美国投资专家Joseph E.Granville(葛兰碧,又译为格兰威尔)于20世纪中期提出来的。均线理论是当今应用最普遍的技术指标之一,它帮助交易者确认现有趋势、判断将出现的趋势、发现过度延生即将反转的趋势。

移动均线常用线有5天、10天、30天、60天、120天和240天的指标。其中,5天和10天的短期移动平均线,是短线操作的参照指标,称做日均线指标;30天和60天的是中期均线指标,称做季均线指标;120天、240天的是长期均线指标,称做年均线指标。

收盘价5日均线:从第五天开始,每天计算最近五天的收盘价的平均值所构成的一条线。

移动均线算法:

一支股票价格序列: a b c d e f g h i j ...(a+b+c+d+e)/5
(b+c+d+e+f)/5
(c+d+e+f+g)/5
...
(f+g+h+i+j)/5

在K线图中绘制5日均线图

# 移动均线示例
import numpy as np
import datetime as dt#### 1.读取数据
# 日期格式转换函数: 将日月年转换为年月日格式
def dmy2ymd(dmy):dmy = str(dmy, encoding="utf-8")# 从指定字符串返回一个日期时间对象dat = dt.datetime.strptime(dmy, "%d-%m-%Y").date()  # 字符串转日期tm = dat.strftime("%Y-%m-%d")  # 日期转字符串return tmdates, open_prices, highest_prices, lowest_prices, close_prices = \np.loadtxt("../da_data/aapl.csv",  # 文件路径delimiter=",",  # 指定分隔符usecols=(1, 3, 4, 5, 6),  # 读取的列(下标从0开始)unpack=True,  # 拆分数据dtype="M8[D], f8, f8, f8, f8",  # 指定每一列的类型converters={1: dmy2ymd})  ##### 2.绘制图像
import matplotlib.pyplot as mp
import matplotlib.dates as md# 绘制k线图,x轴为日期
mp.figure("APPL K-Line", facecolor="lightgray")
mp.title("APPL K-Line")
mp.xlabel("Day", fontsize=12)
mp.ylabel("Price", fontsize=12)# 获取坐标轴
ax = mp.gca()
# 设置主刻度定位器为周定位器(每周一显示刻度文本)
ax.xaxis.set_major_locator(md.WeekdayLocator(byweekday=md.MO))
ax.xaxis.set_major_formatter(md.DateFormatter("%d %b %Y"))  # %b表示月份简写
# 设置次刻度定位器为天定位器
ax.xaxis.set_minor_locator(md.DayLocator())
mp.tick_params(labelsize=8)
dates = dates.astype(md.datetime.datetime)mp.plot(dates, open_prices, color="dodgerblue", linestyle="--")
mp.gcf().autofmt_xdate()  # 旋转、共享日期显示# 绘制5日均值线
ma_5 = np.zeros(close_prices.size - 4)  # 均值数组
for i in range(ma_5.size):ma_5[i] = close_prices[i: i + 5].mean()  # 切片,求均值,并存入均值数组mp.plot(dates[4:],  # 从第五天开始绘制ma_5,  # 数据color="orangered",label="MA_5")mp.legend()
mp.show()

执行结果:

3. 布林带

1)什么是布林带

布林带(Bollinger Band)是美国股市分析家约翰·布林根据统计学中的标准差原理设计出来的一种非常实用的技术指标,它由三条线组成:

中轨:移动平均线(图中白色线条)

上轨:中轨+2x5日收盘价标准差 (图中黄色线条,顶部的压力)

下轨:中轨-2x5日收盘价标准差 (图中紫色线条,底部的支撑力)

布林带收窄代表稳定的趋势,布林带张开代表有较大的波动空间的趋势。

2)布林带的业务指标与含义

利用股价与布林带上轨线、下轨线进行比较,以及结合变化趋势,判断股票买入、卖出的时机。

(1)股价由下向上穿越下轨线(Down)时,可视为买进信号。
(2)股价由下向上穿越中轨时,股价将加速上扬,是加仓买进的信号。
(3)股价在中轨与上轨(UPER)之间波动运行时为多头市场,可持股观望。
(4)股价长时间在中轨与上轨(UPER)间运行后,由上向下跌破中轨为卖出信号。
(5)股价在中轨与下轨(Down)之间向下波动运行时为空头市场,此时投资者应持币观望。
(6)布林中轨经长期大幅下跌后转平,出现向上的拐点,且股价在2~3日内均在中轨之上。此时,若股价回调,其回档低点往往是适量低吸的中短线切入点。
(7)对于在布林中轨与上轨之间运作的强势股,不妨以回抽中轨作为低吸买点,并以中轨作为其重要的止盈、止损线。
(8)飚升股往往股价会短期冲出布林线上轨运行,一旦冲出上轨过多,而成交量又无法持续放出,注意短线高抛了结,如果由上轨外回落跌破上轨,此时也是一个卖点。

3)绘制布林带

以下是一个绘制布林带的示例。

# 布林带示例
import numpy as np
import datetime as dt#### 1.读取数据
# 日期格式转换函数: 将日月年转换为年月日格式
def dmy2ymd(dmy):dmy = str(dmy, encoding="utf-8")# 从指定字符串返回一个日期时间对象dat = dt.datetime.strptime(dmy, "%d-%m-%Y").date()  # 字符串转日期tm = dat.strftime("%Y-%m-%d")  # 日期转字符串return tmdates, open_prices, highest_prices, lowest_prices, close_prices = \np.loadtxt("../da_data/aapl.csv",  # 文件路径delimiter=",",  # 指定分隔符usecols=(1, 3, 4, 5, 6),  # 读取的列(下标从0开始)unpack=True,  # 拆分数据dtype="M8[D], f8, f8, f8, f8",  # 指定每一列的类型converters={1: dmy2ymd})  ##### 2.绘制图像
import matplotlib.pyplot as mp
import matplotlib.dates as md# 绘制k线图,x轴为日期
mp.figure("APPL K-Line", facecolor="lightgray")
mp.title("APPL K-Line")
mp.xlabel("Day", fontsize=12)
mp.ylabel("Price", fontsize=12)# 获取坐标轴
ax = mp.gca()
# 设置主刻度定位器为周定位器(每周一显示刻度文本)
ax.xaxis.set_major_locator(md.WeekdayLocator(byweekday=md.MO))
ax.xaxis.set_major_formatter(md.DateFormatter("%d %b %Y"))  # %b表示月份简写
# 设置次刻度定位器为天定位器
ax.xaxis.set_minor_locator(md.DayLocator())
mp.tick_params(labelsize=8)
dates = dates.astype(md.datetime.datetime)mp.plot(dates, open_prices, color="dodgerblue", linestyle="--")
mp.gcf().autofmt_xdate()  # 旋转、共享日期显示# 绘制5日均值线
ma_5 = np.zeros(close_prices.size - 4)  # 均值数组
for i in range(ma_5.size):ma_5[i] = close_prices[i: i + 5].mean()  # 切片,求均值,并存入均值数组mp.plot(dates[4:],  # 从第五天开始绘制ma_5,  # 数据color="orangered",label="MA_5")# 计算上轨、下轨线
stds = np.zeros(ma_5.size)
for i in range(stds.size):stds[i] = close_prices[i: i + 5].std()  # 计算标准差
upper = ma_5 + 2 * stds  # 计算上轨
lower = ma_5 - 2 * stds  # 计算下轨
# 绘制线
mp.plot(dates[4:], upper, color="green", label="UPPER")
mp.plot(dates[4:], lower, color="blue", label="LOWER")
# 填充布林带
mp.fill_between(dates[4:], upper, lower, lower < upper, color="orangered", alpha=0.05)mp.grid(linestyle="--")
mp.legend()
mp.show()

执行结果:

基于函数矢量化的股票回测模型

def  model(data):# 基于均线、布林带等各种业务指标进行分析,从而得到结果。if xxx and  or xxx:return 1elif xxxx:return -1if  xx:return 1x = linalg.lstsq(xxx)if xx  xxx:return 0...............return 1 ? -1 ? 0

函数的矢量化指通过一个只能处理标量数据的函数得到一个可以处理矢量数据的函数,从而可以对大量数据进行矢量化计算。

numpy提供了vectorize函数,可以把处理标量的函数矢量化,返回的函数可以直接处理ndarray数组。

# vectorize函数矢量化示例
import math
import numpy as npdef func(x, y):return math.sqrt(x ** 2 + y ** 2)# 标量计算
x, y = 3, 4
print(func(x, y))# 矢量化计算
X = np.array([3, 6, 9])
Y = np.array([4, 8, 12])vect_func = np.vectorize(func)  # 创建函数矢量化对象
print(vect_func(X, Y))

执行结果:

5.0
[ 5. 10. 15.]

案例:定义一种投资策略,传入某日期,基于均线理论返回是否应该按收盘价购买,并通过历史数据判断这种策略是否值得实施。

import numpy as np
import matplotlib.pyplot as mp
import datetime as dt
import matplotlib.dates as md# 日期格式转换函数: 将日月年转换为年月日格式
def dmy2ymd(dmy):dmy = str(dmy, encoding="utf-8")# 从指定字符串返回一个日期时间对象dat = dt.datetime.strptime(dmy, "%Y/%m/%d").date()tm = dat.strftime("%Y-%m-%d")  # 格式化return tmdates, opening_prices, highest_prices, lowest_prices, closing_prices, ma5, ma10= \np.loadtxt("../data/pfyh.csv", #文件路径delimiter=",", #指定分隔符usecols=(0,1,2,3,4,5,6), #读取的列(下标从0开始)unpack=True, #拆分数据dtype="M8[D], f8, f8, f8, f8, f8, f8") #
mp.plot(dates, closing_prices)
mp.show()
# 定义一种投资策略,传入日期,基于均线理论返回是否应该按收盘价购买 1:应买入  0:应持有现状  -1:应卖出
def profit(m8date):mma5 = ma5[dates < m8date]mma10 = ma10[dates < m8date]# 至少两天数据才可以进行预测if mma5.size < 2:return 0# 出现金叉,则建议买入if (mma5[-2] <= mma10[-2]) and (mma5[-1] >= mma10[-1]):return 1# 出现死叉,则建议卖出if (mma5[-2] >= mma10[-2]) and (mma5[-1] <= mma10[-1]):return -1return 0# 矢量化投资函数
vec_func = np.vectorize(profit)
# 使用适量换函数计算收益
profits = vec_func(dates)
print(profits)# 定义资产
assets = 1000000
stocks = 0
payment_price = 0
status = 0
for index, profit in enumerate(profits):current_price = closing_prices[index]# 如果是买入并且赔了的状态,若已经跌出5%,则强制卖出if status == 1:payment_assets = payment_price * stockscurrent_assets = current_price * stocksif (payment_assets > current_assets) and ((payment_assets-current_assets) > payment_assets *0.05):payment_price = current_priceassets = assets + stocks * payment_pricestocks = 0status = -1print('止损:dates:{}, curr price:{:.2f}, assets:{:.2f}, stocks:{:d}'.format(dates[index], current_price, assets, stocks))if (profit == 1) and (status != 1): # 买入payment_price = current_pricestocks = int(assets / payment_price)assets = assets - stocks * payment_pricestatus = 1print('买入:dates:{}, curr price:{:.2f}, assets:{:.2f}, stocks:{:d}'.format(dates[index], current_price, assets, stocks))if (profit == -1) and (status != -1): # 卖出payment_price = current_priceassets = assets + stocks * payment_pricestocks = 0status = -1print('卖出:dates:{}, curr price:{:.2f}, assets:{:.2f}, stocks:{:d}'.format(dates[index], current_price, assets, stocks))print('持有:dates:{}, curr price:{:.2f}, assets:{:.2f}, stocks:{:d}'.format(dates[index], current_price, assets, stocks))

代码总结

量化交易常用指标

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

移动平均线

data = pd.read_csv('../../data/aapl.csv', header=None, usecols=[1, 6])
data.columns = ['date', 'close']
# 把date字段,转成日期类型
def todate(item):datestr = '-'.join(item.split('-')[::-1])return pd.to_datetime(datestr)
data['date'] = data['date'].apply(todate)
data.plot(x='date', y='close')
<matplotlib.axes._subplots.AxesSubplot at 0x1ed49ca95b0>

data
date close
0 2011-01-28 336.10
1 2011-01-31 339.32
2 2011-02-01 345.03
3 2011-02-02 344.32
4 2011-02-03 343.44
5 2011-02-04 346.50
6 2011-02-07 351.88
7 2011-02-08 355.20
8 2011-02-09 358.16
9 2011-02-10 354.54
10 2011-02-11 356.85
11 2011-02-14 359.18
12 2011-02-15 359.90
13 2011-02-16 363.13
14 2011-02-17 358.30
15 2011-02-18 350.56
16 2011-02-22 338.61
17 2011-02-23 342.62
18 2011-02-24 342.88
19 2011-02-25 348.16
20 2011-02-28 353.21
21 2011-03-01 349.31
22 2011-03-02 352.12
23 2011-03-03 359.56
24 2011-03-04 360.00
25 2011-03-07 355.36
26 2011-03-08 355.76
27 2011-03-09 352.47
28 2011-03-10 346.67
29 2011-03-11 351.99
# 计算5日移动平均线
ma5 = np.zeros(len(data)-4) # 存储5日移动均线的值
for i in range(ma5.size):ma5[i] = np.mean(data['close'][i:i+5])
ma5
0.0
#把ma5追加到data['ma5']
ma5 = pd.Series(ma5,index=np.arange(4,len(data)))
data['ma5'] = ma5
data
date close ma5
0 2011-01-28 336.10 NaN
1 2011-01-31 339.32 NaN
2 2011-02-01 345.03 NaN
3 2011-02-02 344.32 NaN
4 2011-02-03 343.44 341.642
5 2011-02-04 346.50 343.722
6 2011-02-07 351.88 346.234
7 2011-02-08 355.20 348.268
8 2011-02-09 358.16 351.036
9 2011-02-10 354.54 353.256
10 2011-02-11 356.85 355.326
11 2011-02-14 359.18 356.786
12 2011-02-15 359.90 357.726
13 2011-02-16 363.13 358.720
14 2011-02-17 358.30 359.472
15 2011-02-18 350.56 358.214
16 2011-02-22 338.61 354.100
17 2011-02-23 342.62 350.644
18 2011-02-24 342.88 346.594
19 2011-02-25 348.16 344.566
20 2011-02-28 353.21 345.096
21 2011-03-01 349.31 347.236
22 2011-03-02 352.12 349.136
23 2011-03-03 359.56 352.472
24 2011-03-04 360.00 354.840
25 2011-03-07 355.36 355.270
26 2011-03-08 355.76 356.560
27 2011-03-09 352.47 356.630
28 2011-03-10 346.67 354.052
29 2011-03-11 351.99 352.450
data.plot(x = 'date',y=['close','ma5'])
<matplotlib.axes._subplots.AxesSubplot at 0x1ed4bd75160>

# 计算10日移动平均线
ma10 = np.zeros(len(data) - 9)  # 存储10日移动均线的值
for i in range(ma10.size):ma10[i] = np.mean(data['close'][i:i+10])
# 把ma10追加到data['ma10']
ma10 = pd.Series(ma10, index=np.arange(9, len(data)))
data['ma10'] = ma10
data.plot(x='date', y=['close', 'ma5', 'ma10'])
<matplotlib.axes._subplots.AxesSubplot at 0x1ed4be50df0>

布林带

# 计算上轨与下轨
stds = np.zeros(len(data)-4)
for i in range(stds.size):stds[i] = np.std(data['close'][i:i+5])
stds = pd.Series(stds, index=np.arange(4, len(data)))
data['stds'] = stds
data['upper'] = data['ma5'] + 2*data['stds']
data['lower'] = data['ma5'] - 2*data['stds']
data.plot(x='date', y=['close' ,'ma5', 'upper', 'lower'])
<matplotlib.axes._subplots.AxesSubplot at 0x1ed4bebd640>

浦发银行量化回测模型

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

加载pfyh文件

data = pd.read_csv('../data/pfyh.csv', header=None, names=['date', 'open', 'high', 'low', 'close', 'ma5', 'ma10', 'volume'])
data['date'] = pd.to_datetime(data['date'])
data.describe()
open high low close ma5 ma10 volume
count 487.000000 487.000000 487.000000 487.000000 487.000000 487.000000 4.870000e+02
mean 11.302238 11.406242 11.198768 11.296715 11.297713 11.299458 3.742897e+05
std 0.964352 0.981289 0.954958 0.968787 0.960244 0.952560 3.517131e+05
min 9.260000 9.350000 9.170000 9.240000 9.312000 9.402000 8.995716e+04
25% 10.565000 10.660000 10.465000 10.555000 10.555000 10.549500 1.980381e+05
50% 11.390000 11.460000 11.300000 11.370000 11.396000 11.382000 2.732542e+05
75% 11.950000 12.040000 11.840000 11.920000 11.899000 11.881000 4.008432e+05
max 13.650000 14.000000 13.360000 13.660000 13.450000 13.383000 3.796536e+06
data.plot(x='date', y='close')
<matplotlib.axes._subplots.AxesSubplot at 0x2725e966668>

设计投资策略

def profit(mdate):""" 传入日期作为参数,通过日期与近几天的股价,进行分析,得出结论:建议买入:1    建议卖出:-1   建议观望:0 """# 获取当天与昨天的ma5、ma10数据:mask = data['date']<=mdate# 必须要求,掩码可以获取两个及两个以上的日期数据if len(data[mask]) < 2: return 0today_data = data[mask].iloc[-1]yest_data = data[mask].iloc[-2]tma5, tma10 = today_data['ma5'], today_data['ma10']yma5, yma10 = yest_data['ma5'], yest_data['ma10']if (yma5 <= yma10) and (tma5 >= tma10):# 出现金叉:返回 1return 1if (yma5 >= yma10) and (tma5 <= tma10):# 出现死叉:返回-1return -1return 0
# 测试
profit(pd.to_datetime('2018-11-12'))
-1

回测模型

# 把每一个日期都传入profit得到每一天的策略建议:
profits = data['date'].apply(profit)# 模拟交易过程,实现回测模型
assets = 1000000  # 现金 100w
stocks = 0        # 股票 0
status = 0        # 保存当前交易状态   -1  1  0
for k, v in profits.items():# 获取当天的交易价格:收盘价payment_price = data.loc[k]['close']if v==1 and status!=1:# 模拟买入:现金换股票stocks = int(assets / payment_price) assets = assets - stocks*payment_pricestatus = 1print('买入操作{}----当前现金:{}, 当前股票数量:{}'.format(data.loc[k]['date'], assets, stocks))if v==-1 and status!=-1:assets = assets + stocks*payment_pricestocks = 0status = -1print('卖出操作{}----当前现金:{}, 当前股票数量:{}'.format(data.loc[k]['date'], assets, stocks))
买入操作2018-01-04 00:00:00----当前现金:11.92000000004191, 当前股票数量:78988
卖出操作2018-02-02 00:00:00----当前现金:1037914.2400000001, 当前股票数量:0
买入操作2018-02-07 00:00:00----当前现金:4.640000000130385, 当前股票数量:77168
卖出操作2018-02-12 00:00:00----当前现金:964604.6400000001, 当前股票数量:0
买入操作2018-03-01 00:00:00----当前现金:1.2800000000279397, 当前股票数量:77416
卖出操作2018-03-02 00:00:00----当前现金:960733.8400000001, 当前股票数量:0
买入操作2018-03-12 00:00:00----当前现金:3.3700000001117587, 当前股票数量:76797
卖出操作2018-03-15 00:00:00----当前现金:950750.2300000002, 当前股票数量:0
买入操作2018-04-10 00:00:00----当前现金:1.270000000251457, 当前股票数量:80846
卖出操作2018-04-19 00:00:00----当前现金:952367.1500000003, 当前股票数量:0
买入操作2018-04-24 00:00:00----当前现金:1.270000000251457, 当前股票数量:80846
卖出操作2018-04-26 00:00:00----当前现金:933772.5700000003, 当前股票数量:0
买入操作2018-05-15 00:00:00----当前现金:4.570000000298023, 当前股票数量:84888
卖出操作2018-05-18 00:00:00----当前现金:924434.8900000004, 当前股票数量:0
买入操作2018-06-07 00:00:00----当前现金:6.810000000405125, 当前股票数量:87128
卖出操作2018-06-08 00:00:00----当前现金:907009.2900000004, 当前股票数量:0
买入操作2018-07-10 00:00:00----当前现金:2.9700000003213063, 当前股票数量:94776
卖出操作2018-07-19 00:00:00----当前现金:907009.2900000004, 当前股票数量:0
买入操作2018-07-20 00:00:00----当前现金:5.640000000479631, 当前股票数量:91895
卖出操作2018-08-03 00:00:00----当前现金:903333.4900000005, 当前股票数量:0
买入操作2018-08-09 00:00:00----当前现金:1.4500000004190952, 当前股票数量:89086
卖出操作2018-08-17 00:00:00----当前现金:888188.8700000005, 当前股票数量:0
买入操作2018-08-22 00:00:00----当前现金:6.530000000493601, 当前股票数量:88026
卖出操作2018-09-05 00:00:00----当前现金:890829.6500000004, 当前股票数量:0
买入操作2018-09-18 00:00:00----当前现金:5.150000000372529, 当前股票数量:86825
卖出操作2018-10-10 00:00:00----当前现金:883015.4000000004, 当前股票数量:0
买入操作2018-10-19 00:00:00----当前现金:9.56000000028871, 当前股票数量:85068
卖出操作2018-11-12 00:00:00----当前现金:918743.9600000003, 当前股票数量:0
买入操作2018-12-03 00:00:00----当前现金:6.560000000405125, 当前股票数量:83370
卖出操作2018-12-12 00:00:00----当前现金:894566.6600000005, 当前股票数量:0
买入操作2019-01-07 00:00:00----当前现金:9.360000000451691, 当前股票数量:89635
卖出操作2019-03-11 00:00:00----当前现金:1028122.8100000005, 当前股票数量:0
买入操作2019-03-21 00:00:00----当前现金:0.3700000004610047, 当前股票数量:89714
卖出操作2019-03-25 00:00:00----当前现金:989545.7900000004, 当前股票数量:0
买入操作2019-04-03 00:00:00----当前现金:5.290000000386499, 当前股票数量:86047
卖出操作2019-04-15 00:00:00----当前现金:986964.3800000005, 当前股票数量:0
买入操作2019-04-17 00:00:00----当前现金:6.500000000465661, 当前股票数量:82868
卖出操作2019-04-25 00:00:00----当前现金:956303.2200000004, 当前股票数量:0
买入操作2019-05-08 00:00:00----当前现金:6.380000000470318, 当前股票数量:83084
卖出操作2019-05-10 00:00:00----当前现金:940517.2600000005, 当前股票数量:0
买入操作2019-05-21 00:00:00----当前现金:6.380000000470318, 当前股票数量:83084
卖出操作2019-05-23 00:00:00----当前现金:922238.7800000005, 当前股票数量:0
买入操作2019-06-03 00:00:00----当前现金:8.540000000502914, 当前股票数量:81758
卖出操作2019-06-27 00:00:00----当前现金:951671.6600000005, 当前股票数量:0
买入操作2019-07-17 00:00:00----当前现金:2.6200000004610047, 当前股票数量:82898
卖出操作2019-08-05 00:00:00----当前现金:931776.1400000005, 当前股票数量:0
买入操作2019-08-14 00:00:00----当前现金:3.0200000004842877, 当前股票数量:82604
卖出操作2019-08-21 00:00:00----当前现金:942514.6600000005, 当前股票数量:0
买入操作2019-08-22 00:00:00----当前现金:8.290000000502914, 当前股票数量:82459
卖出操作2019-08-29 00:00:00----当前现金:926022.8600000006, 当前股票数量:0
买入操作2019-09-05 00:00:00----当前现金:1.8200000006472692, 当前股票数量:79692
卖出操作2019-09-23 00:00:00----当前现金:936382.8200000006, 当前股票数量:0
买入操作2019-10-08 00:00:00----当前现金:7.520000000600703, 当前股票数量:78687
卖出操作2019-10-24 00:00:00----当前现金:1030020.3500000006, 当前股票数量:0
买入操作2019-11-07 00:00:00----当前现金:7.630000000586733, 当前股票数量:80722
卖出操作2019-11-12 00:00:00----当前现金:988044.9100000006, 当前股票数量:0
买入操作2019-12-11 00:00:00----当前现金:6.3900000005960464, 当前股票数量:82474
卖出操作2019-12-26 00:00:00----当前现金:1013611.8500000006, 当前股票数量:0

数据分析08-金融领域数据分析相关推荐

  1. Python 中 pct_change 函数是一种非常实用的函数,它可以帮助我们计算一个时间序列的百分比变化率。在数据分析和金融领域中,我们经常需要计算某个指标...

    Python 中 pct_change 函数是一种非常实用的函数,它可以帮助我们计算一个时间序列的百分比变化率.在数据分析和金融领域中,我们经常需要计算某个指标相对于前一期的变化率,这时可以使用 pc ...

  2. 2017年大数据分析在金融领域的10大发展趋势

    大数据时代,互联网时代,大数据应用越来越广泛的时代,互联网科技应用越来越频繁的时代,大数据分析的应用魅力愈发绽放异彩.而在这大数据发展如火如荼的迅猛盛况下,互联网金融应运而生且茁壮成长,再到后来的独挡 ...

  3. Python金融大数据分析:用pandas处理金融时间序列数据的基础知识

    时间是阻止所有事情同时发生的力量.--雷•卡明斯 本节使用的是以CSV文件形式在本地存储的金融数据集形式为本地存储的CSV文件.从技术上讲,CSV文件是包含数据行结构的文本文件,其特征是以逗号分隔单个 ...

  4. python金融大数据分析视频_Python金融大数据分析 PDF 全书超清版

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python金融.大数据分析方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小47.8 MB,希尔皮斯科编写,目前豆瓣.亚马逊. ...

  5. python金融数据分析电子版_python 金融大数据分析 pdf

    书籍:Python金融大数据分析 Python for Finance_ Mastering Data-Driven Finance 2nd - 2019.pdf 简介 金融业最近以极高的速度采用了P ...

  6. python与金融数据分析论文_python 金融大数据分析 pdf

    python 金融大数据分析 pdf相关的博客 查看更多 写博客 作者: skin778 966人浏览 评论数:0 6个月前 ![5_6_3](https://yqfile.alicdn.com/b5 ...

  7. 金融科技、算法交易、量化金融必读书:Python金融大数据分析第2版

    银行本质上是技术公司. --胡戈•班齐格 近来,Python无疑是金融业的重要策略性技术平台之一.到2018年底,这已经不再是个问题:全世界的金融机构现在都尽最大努力利用Python及其强大的数据分析 ...

  8. 用Python进行数据分析之金融和经济数据应用

    金融经济数据方面应用Python非常广泛,也可以算是用Python进行数据分析的一个实际应用. 数据规整化方面的应用 时间序列与截面对齐 在处理金融数据时,最费神的一个问题就是所谓的"数据对 ...

  9. python for finance pdf_python金融大数据分析 pdf

    书籍:Python金融大数据分析 Python for Finance_ Mastering Data-Driven Finance 2nd - 2019.pdf 简介 金融业最近以极高的速度采用了P ...

最新文章

  1. 不错的jquery插件
  2. Climbing Stairs - Print Path
  3. 不要笑!写 | 还是 || ,还真是一个问题
  4. CSS的三种定位,成功入职字节跳动
  5. CI(持续集成)/CD(持续部署)
  6. Ruby设计模式透析之 —— 适配器(Adapter)
  7. 20172330 2017-2018-2 《程序设计与数据结构》实验一报告
  8. 快速提取PPT文件里面的视频、音频素材
  9. 软件工程—实践者的研究方法
  10. Ubuntu firefox无法加载视频
  11. 洛谷 T2691 桶哥的问题——送桶
  12. 技术融合:使用区块链的5G——未来无线通信的序章
  13. 重复启动Tomcat时,大概率出现Deploying web application direct
  14. 虚拟存储器:页面置换算法
  15. NOIP2012 提高组 Day 2
  16. 将中文字符串转为拼音
  17. MATLAB画双纵轴曲线。
  18. 有感而发:总结很重要
  19. Web网站模板-横向滚动个人简历响应式网站模板(HTML+CSS+JavaScript)
  20. IOS版aplayer使用教程_Google地球 安卓手机版(教程)流畅使用

热门文章

  1. 分享一个文件监听器类:FileMonitor
  2. 数字电路46( 倒T型电阻网络的数模转换器)
  3. Vue生命周期及钩子
  4. 诺贝尔经济学家的著作——值得读
  5. python pyserial 无法识别VSPD创建的虚拟串口 windons 10
  6. tflearn教程_TensorFlow TFLearn安装和使用
  7. ISACA将于2016年6月更新CISA考试大纲
  8. Android_常驻进程(杀不死的进程)
  9. Ubuntu上搭建自己的ngrok服务器
  10. 博客群发:及时一文多发,不要等到在其他平台看到别人抄去而懊恼~