可视化工具——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是关于买卖点的输入数据集,该数据集是可选择的,可以不传入。 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 | 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 | 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为输入数据集。 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 | chart = WPie(title='海康威视:主营收入构成', subtitle='002335.SZ', data=segment_sales_df) 三、热力图¶在分析工作中,需要查看一些对象两两之间的关系,例如查看所有人工智能概念股,两两之间的相关性。而直接查看他们的相关性矩阵不直观,用热力图来表示更为直观,可读性更强。 corr_df为输入数据集(即相关性矩阵)。得到图形后,通过拖动图形左侧的条形旁指针,可以依据相关性而改变热力图的形态,方便查看相关性强的对象是哪一些。 | 浪潮信息 | 紫光国芯 | 软控股份 | 海得控制 | 江南化工 | 科大讯飞 | 川大智胜 | 高乐股份 | 汉王科技 | 海康威视 | ... | 东方网力 | 劲拓股份 | 昆仑万维 | 全志科技 | 景嘉微 | 华胜天成 | 佳都科技 | 浪潮软件 | 浙大网新 | 中科曙光 | 浪潮信息 | 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 chart = WHeatmap(title='人工智能版块股票联动分析', data=corr_df) 四、线形图¶在分析工作中,需要同时查看多个时间序列的走势情况,可用线形图。例如查看07年至16年机器人公司的主营业务收入分布情况。 all_data_df为输入数据集。 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 | chart = WLine(title='机器人:业务营收占比变化情况分析',subtitle=code,data=all_data_df) 五、雷达图¶雷达图常用于展示组成分布的变化情况。例如,用雷达图可视化万科自14年至16年的财务数据变化情况。 yoy_df为输入数据集。 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 | chart = WRadar(title='万科A:财务指标雷达图',subtitle=code,data=yoy_df,category=list(yoy_df.index)) 六、关系图¶关系图用来展示几个对象之间的关系。例如使用关系图可视化上市公司浦发银行与大股东的关系。 holder_data为输入数据集。注意该图形是可以拖动,而改变形态的。 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 | chart=WGraph(title='浦发银行股东关系图',data=holder_data) 七、日历图¶日历图可用来直观展示某个序列的变化情况。例如使用日历图可视化大盘的每日的涨跌。 index_chg_df为输入数据集。得到图形后,通过拖动图形下方的条形上的指针,可以改变图形的形态,方便查看大涨是哪几天。 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 | chart=WCalendar(title='大盘涨跌日历图', data=index_chg_df,category=['2016']) 八、堆叠条形图¶堆叠条形图常用于展示几个对象组成构成的差异性。例如查看几个基金在大类资产持仓分布情况。 data为输入数据集。 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 | chart = WStacking_bar(title='基金大类资产持仓分布', data=data) 九、每日回撤和净值组合图¶在量化策略回测完成后,通常希望将每日回撤和净值曲线画在同一个图中。这里以一个MA均线策略为例。 nav_df为作图输入数据集。如果不想查看每日回撤,点击图形右侧的图例——Max_Drawdown就可以取消显示每日回撤。 from WindAlgo import * #引入回测框架 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 | chart= WMax_Drawdown('MA均线策略净值和每日回撤组合图', data=nav_df)
|