分享

7

 LQuan 2018-02-12

可视化工具——WindChart

WindChart是交互式的可视化工具,可以点击图形图例改变图形的形态,且鼠标移动到图形上会自动输出标签等内容。
WindChart库中图形种类丰富,包含K线图,饼图,热力图,线型图,雷达图,关系图,日历图,堆叠条形图,每日回撤和净值组合图。
在使用WindChart时要注意的是,作图函数输入数据集一般都是数据框的格式,而数据框中的日期要求是字符型('yyyy-mm-dd')的格式。

x
from WindCharts import * #导入WindCharts库

一、K线图

K线图是投资者常用的分析工具。在K线图中,除了画出K线和均线之外,还可以自己定义想画的曲线(如一些技术指标)。而且在K线图中也可以标记买卖点。
在本例中,除了画出平安银行从2017-03-17至2017-06-18的基础行情及均线之外,还画出了其布林带的上界和下界。
data_df是用于作图的输入数据集(输入数据集中的日期格式需为字符型),注意作图函数中的ma=[5,10,20,30,60,120]是为了自动画出均线。
data_trade是关于买卖点的输入数据集,该数据集是可选择的,可以不传入。

1
wsd_data=w.wsd('000001.SZ', 'open,high,low,close,volume', '2017-03-17', '2017-06-18', '')
open high low close volume date upperband lowerband
0 9.45 9.46 9.30 9.31 158364708.0 2017-03-17 NaN NaN
1 9.29 9.31 9.22 9.25 71502177.0 2017-03-20 NaN NaN
2 9.25 9.26 9.20 9.24 55464874.0 2017-03-21 NaN NaN
3 9.20 9.22 9.14 9.16 56612363.0 2017-03-22 NaN NaN
4 9.16 9.24 9.15 9.20 43358829.0 2017-03-23 9.332717 9.131283
1
data_trade = pd.DataFrame([['sell','2017-04-05',9.21],['buy','2017-05-08',8.57],['sell','2017-05-31',9.2]],columns=['buysell','date','price'])
buysell date price
0 sell 2017-04-05 9.21
1 buy 2017-05-08 8.57
2 sell 2017-05-31 9.20
1
chart = WCandlestick('平安银行', '数据来源: wind', data=data_df, data_trade=data_trade,ma=[5,10,20])
2017-05-08[['2017-05-08', 8.5700000000000003]]

二、饼图

常用饼图来看各个组成部分的占比情况,来判断重要程度。segment_sales_df为输入数据集。

1
wss_data=w.wss('002415.SZ', 'segment_sales','rptDate=20161231;order=2')
name value
0 前端音视频产品 49.75
1 后端音视频产品 16.28
2 其他 13.68
3 中心控制设备 12.49
4 工程施工 4.55
1
chart = WPie(title='海康威视:主营收入构成', subtitle='002335.SZ', data=segment_sales_df)

三、热力图

在分析工作中,需要查看一些对象两两之间的关系,例如查看所有人工智能概念股,两两之间的相关性。而直接查看他们的相关性矩阵不直观,用热力图来表示更为直观,可读性更强。
corr_df为输入数据集(即相关性矩阵)。得到图形后,通过拖动图形左侧的条形旁指针,可以依据相关性而改变热力图的形态,方便查看相关性强的对象是哪一些。

1
def get_data(code):
浪潮信息 紫光国芯 软控股份 海得控制 江南化工 科大讯飞 川大智胜 高乐股份 汉王科技 海康威视 ... 东方网力 劲拓股份 昆仑万维 全志科技 景嘉微 华胜天成 佳都科技 浪潮软件 浙大网新 中科曙光
浪潮信息 1.000000 0.131407 0.499670 0.475139 0.305924 0.156910 0.301137 0.294072 0.364145 -0.062725 ... 0.0 0.402093 -0.011570 0.359233 0.385817 0.447959 0.346184 0.672534 0.347324 0.116669
紫光国芯 0.131407 1.000000 0.134045 0.146658 -0.092960 -0.148339 0.031772 0.260964 0.082782 -0.184257 ... 0.0 0.042380 -0.058536 0.220855 0.128064 0.159771 -0.009776 0.167732 0.286438 -0.048080
软控股份 0.499670 0.134045 1.000000 0.624108 0.523634 0.183029 0.535281 0.450490 0.522607 -0.070831 ... 0.0 0.600415 -0.009715 0.516727 0.566816 0.520609 0.535913 0.403362 0.463250 0.102614
海得控制 0.475139 0.146658 0.624108 1.000000 0.514650 0.196144 0.457451 0.400997 0.531105 -0.163110 ... 0.0 0.589405 0.023414 0.569664 0.588716 0.492042 0.438262 0.369345 0.390721 -0.001316
江南化工 0.305924 -0.092960 0.523634 0.514650 1.000000 0.312631 0.600706 0.464126 0.650147 -0.118576 ... 0.0 0.454466 -0.077570 0.423645 0.506875 0.387427 0.564116 0.206329 0.289252 0.092274

5 rows × 28 columns

1
chart = WHeatmap(title='人工智能版块股票联动分析', data=corr_df)

四、线形图

在分析工作中,需要同时查看多个时间序列的走势情况,可用线形图。例如查看07年至16年机器人公司的主营业务收入分布情况。
all_data_df为输入数据集。

1
def get_segment_sales(code):
交通自动化系统 其他业务 工业机器人 物流与仓储自动化成套装备 自动化装配与检测生产线及系统集成
2007 6.40 0.04 37.30 31.75 24.51
2008 9.44 0.04 35.66 29.72 25.14
2009 15.65 0.82 32.42 28.62 22.49
2010 11.65 1.55 36.46 30.53 19.82
2011 11.48 1.46 28.37 28.33 30.36
1
chart = WLine(title='机器人:业务营收占比变化情况分析',subtitle=code,data=all_data_df)

五、雷达图

雷达图常用于展示组成分布的变化情况。例如,用雷达图可视化万科自14年至16年的财务数据变化情况。
yoy_df为输入数据集。

1
def get_yoy_equity(code):
净资产(同比增长) 每股收益(同比增长) 营业总收入(同比增长) 现金净流量(同比增长) 净利润(同比增长) 总负债(同比增长)
2014 14.654324 4.379562 8.1002 329.780664 5.410419 5.016305
2015 13.632401 14.685315 33.5828 -153.116027 34.540017 21.010861
2016 13.236957 15.853659 22.9754 380.064993 9.251905 40.845775
1
chart = WRadar(title='万科A:财务指标雷达图',subtitle=code,data=yoy_df,category=list(yoy_df.index))

六、关系图

关系图用来展示几个对象之间的关系。例如使用关系图可视化上市公司浦发银行与大股东的关系。
holder_data为输入数据集。注意该图形是可以拖动,而改变形态的。

1
wset_data=w.wset('top10shareholders','windcode=600000.SH;year=2016;period=年报')
holder stock ratio
1 上海国际集团有限公司 浦发银行 19.53
2 中国移动通信集团广东有限公司 浦发银行 18.98
3 富德生命人寿保险股份有限公司-传统 浦发银行 9.89
4 富德生命人寿保险股份有限公司-资本金 浦发银行 6.27
5 上海上国投资产管理有限公司 浦发银行 4.97
1
chart=WGraph(title='浦发银行股东关系图',data=holder_data)

七、日历图

日历图可用来直观展示某个序列的变化情况。例如使用日历图可视化大盘的每日的涨跌。
index_chg_df为输入数据集。得到图形后,通过拖动图形下方的条形上的指针,可以改变图形的形态,方便查看大涨是哪几天。

1
wsd_data=w.wsd('000001.SH', 'pct_chg', '2016-01-01', '2016-12-31', '')
2016
01-04 -6.863846
01-05 -0.259294
01-06 2.254730
01-07 -7.044892
01-08 1.965119
1
chart=WCalendar(title='大盘涨跌日历图', data=index_chg_df,category=['2016'])

八、堆叠条形图

堆叠条形图常用于展示几个对象组成构成的差异性。例如查看几个基金在大类资产持仓分布情况。
data为输入数据集。

1
list_fund = ['000001.OF','000011.OF','000017.OF','000020.OF']
000001.OF 000011.OF 000017.OF 000020.OF
股票市值占比 69.898849 86.157951 80.801704 79.168274
债券市值占比 20.329468 5.918952 0.000000 0.000000
基金市值占比 0.000000 0.000000 0.000000 0.000000
权证市值占比 0.000000 0.000000 0.000000 0.000000
银行存款市值占比 9.552553 8.281549 5.411527 17.216549
其他资产市值占比 1.267640 0.541430 14.203008 4.169689
1
chart = WStacking_bar(title='基金大类资产持仓分布', data=data)

九、每日回撤和净值组合图

在量化策略回测完成后,通常希望将每日回撤和净值曲线画在同一个图中。这里以一个MA均线策略为例。
nav_df为作图输入数据集。如果不想查看每日回撤,点击图形右侧的图例——Max_Drawdown就可以取消显示每日回撤。

1
from WindAlgo import * #引入回测框架
1
nav_df = nav_df.get_dataframe()
date nav benchmark
0 2015-01-05 0.9998 1.0305
1 2015-01-06 0.981 1.0304
2 2015-01-07 0.9614 1.0312
3 2015-01-08 0.9567 1.0072
4 2015-01-09 0.9509 1.0037
1
chart= WMax_Drawdown('MA均线策略净值和每日回撤组合图', data=nav_df)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多