第3章SAS与股票市场技术分析.docx
- 文档编号:23610451
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:52
- 大小:395.86KB
第3章SAS与股票市场技术分析.docx
《第3章SAS与股票市场技术分析.docx》由会员分享,可在线阅读,更多相关《第3章SAS与股票市场技术分析.docx(52页珍藏版)》请在冰豆网上搜索。
第3章SAS与股票市场技术分析
第3章:
SAS与股票市场技术分析
基本面分析和技术分析是最常用的两种证券投资分析方法。
基本面分析的研究对象是宏观经济环境、公司所处行业状况及发展前景、公司财务状况等。
基本面分析从这些影响公司价值的基本因素出发,采用适当的方法来估算公司股票的内在价值,以判断公司当前的股票价格是被高估还是被低估。
技术分析的研究对象是市场行为。
技术分析通过对反映市场状况变化的股票成交价及成交量的历史数据、以及由这些历史数据所绘制成的各种图形的分析,来判断整个股市或者个股股价的未来变化趋势。
在股票市场上,不同的投资者会采用不同的方法来选择股票。
一般而言,长期投资者偏好于采用基本面分析的方法,如著名投资大师沃伦·巴菲特就是一个例子。
巴菲特选择股票的方法是利用基本面分析法,选择那些股价被低估、并且具有良好发展前景的公司,以进行长期投资。
而许多中短期投资者往往偏好于采用技术分析方法来选择股票。
当然,长期投资者也可以采用技术分析方法,通过对股市的长期趋势(主要趋势)的分析和把握,选择股票进行长期投资。
本章介绍如何运用SAS来实现股票市场的技术分析。
通过本章学习读者可以了解:
如何利用PROCPLOT语句和PROCGPLOT语句来绘制用于股票市场技术分析的数据图形;
如何利用DATA步语句和PROCPLOT语句计算和绘制各种移动平均线;
如何利用SAS来建立移动平均线的交叉模式,以捕捉股票买入与卖出的信号;
在SAS中如何利用成交量来证实买入与卖出的信号,如何运用移动平均的带状约束来控制投资风险;
本章有关的SAS基础知识。
3.1股票市场的数据图形绘制
3.1.1生成与检查SAS数据集
为了运用SAS系统进行股票市场的技术分析,必须创建一个包含有合适数据的SAS数据集,并且利用SAS系统的图形绘制功能,将相关变量的数据绘制成能够适用于技术分析的各种数据图形。
在技术分析的各种要素中,价格是最重要的要素。
股票市场的价格数据中通常包含开盘价、收盘价、最高价和最低价这四种价格。
股票市场的技术分析者认为,与其它价格数据相比,股票的收盘价中往往包含有更多信息。
这样在运用于技术分析的数据集中,应该包括股票或指数的收盘价数据。
另外在技术分析中,成交量和成交日期同样也是重要的分析依据,因此在创建运用于技术分析的SAS数据集时,数据集中应该包括个股或指数收盘价、成交量、以及交易日期等变量的观测数据。
一般情况下,我们可以从相关金融数据库中获得包括这些数据的外部数据集,因此可采用导入并转换外部数据集的方式,来创建对应的SAS数据集。
如Excel数据集sjk3-1中包括了某只股票从2004年1月2日起,至2004年11月15日止,每个交易日的相关数据,其中的8个变量分别为交易日期date、当日收盘价close、当日最高价high、当日最低价low、外盘买入成交量volume1(单位万手,后同)、内盘卖出成交量volume2、当日总成交量volume、以及该股票当日的百分比收益率percent。
将sjk3-1导入转换为SAS数据集,并命名为sjk3_1后,可以采用PRINT语句来打印输出这个数据集的前面几个观测数据,以检查数据集的变量或观测中是否存在错误。
[例3-1]打印数据集sjk3_1的前10个观测,并对这个数据集进行检查。
打印这个数据集的SAS程序如下(cx3-1),打印结果见表3-1。
procprindata=sjk3_1(obs=10);/*打印数据集中的前10个观测*/
vardateclosehighlowvolume1volume2volumepercent;/*需要打印的变量*/
title“打印sjk3_1的前10个观测”;
run;
表3-1:
数据集sjk3_1的打印结果
打印sjk3_1的前10个观测
OBSDATECLOSEHIGHLOWVOLUME1VOLUME2VOLUMEPERCENT
101/02/0443.7943.7943.577.666.8314.48-0.0011400
201/05/0443.7343.8143.665.009.5214.52-0.0013702
301/06/0443.6443.7343.615.7913.9519.75-0.0020581
401/07/0443.5543.6543.454.6413.7118.35-0.0020623
501/08/0443.6343.6343.476.144.9211.060.0018370
601/09/0443.8843.9443.6310.446.0916.530.0057300
701/12/0443.9143.9243.825.3510.3515.700.0006837
801/13/0443.8943.9843.836.268.9115.16-0.0004555
901/14/0443.7643.9343.685.4910.5316.02-0.0029620
1001/15/0443.9143.9143.7610.585.3915.970.0034278
3.1.2绘制相关数据的图形
3.1.2.1散点图的绘制方法
生成、打印并检查SAS数据集后,就可以对这些数据进行技术分析了。
通常情况下,技术分析者首先需要画出相关变量的数据图形,因为利用这些变量的数据图形,技术分析者可以分析股票价格的变化趋势、股票价格的转折点(股价最高点和股价最低点)、以及股票价格的阻挡水平线、支撑水平线,等等。
在SAS中,PROCPLOT过程(图形过程)可以用来生成散点图及连线图。
在进行技术分析时,可以利用这个语句所生成的散点图和连线图来直观地展现数据集中各个变量之间的相互关系。
这里给出一个例子。
[例3-2]利用PROCPLOT语句及sjk3_1数据集,生成这个股票从2004年1月2日至2004年11月15日期间的每日收盘价close的走势图。
下面是绘制这个走势图的SAS程序:
(cx3-2)
procplotdata=sjk3_1avpct=15hpct=50;
plotclose*date;
run;
句法说明:
*PROCPLOT——调用PLOT过程。
PROCPLOT过程的选项有:
data=数据集名字。
指定使用数据集的名字,若没有指定数据集,系统将调用最新创建的数据集;
vpct=数字,hpct=数字。
规定散点图的显示在垂直方向和水平方向占SAS输出页的百分比,本例垂直方向为15%、水平方向为50%。
*PLOTvar1*var2——规定散点图的纵轴变量为var1、横轴变量为var2。
本例中,散点图以收盘价close为纵轴,以交易日期date为横轴。
*散点图3-1中的英文字符表示数据集中有多少个观测在该字符处,其中A表示在该字符处有1个观测,B表示在该字符处有2个观测,依次类推。
当该字符处有26个、或者26个以上的观测时,用字符Z表示。
图3-1:
收盘价与日期的散点图
这个程序递交后,SAS绘制的散点图见图3-1。
然而,正如图3-1所显示的,用PROCPLOT语句生成的散点图是一种低分辨率的图形,这种图形可以向用户直观地展现各变量之间的相互关系,但这种图形并不能很好地适用于股票市场的技术分析。
因此,技术分析者还需要其它可以绘制更高分辨率的图形的方法。
在SAS中,除了用PROCPLOT语句绘制只有较低分辨率的散点图外,还可以通过菜单方式、以及通过PROCGPLOT语句来绘制具有较高分辨率的图形。
3.1.2.2用PROCGPLOT语句绘制较高分辨率图形
如果要绘制更加复杂的较高分辨率图形,就需要采用另一种方法,即采用PROCGPLOT过程(绘图过程)编程来实现。
下面几个例子是通过PROCGPLOT语句编程,来绘制股票价格的走势图和其它更加复杂的图形。
[例3-3]利用PROCGPLOT过程绘制数据集sjk3_1中收盘价close随时间变化的图形。
这个图形的绘制,可以通过以下的PROCGPLOT语句来实现(cx3-3a)。
这个程序的运行结果见图3-2。
procgplotdata=sjk3_1;
plotclose*day;
symbolv=.h=1I=joinL=1font=swissb;
run;
图3-2:
变量close的走势图2
利用PROCGPLOT语句编程,可以绘制同时包含股票的最高价、最低价和收盘价的图形。
然而在绘制这个图形前,首先需要对sjk3_1数据集进行编辑,建立新变量。
下列DATA步语句生成一个新数据集sjk3_1a,与数据集sjk3_1a相比,这个数据集中多了一个新变量value,这个变量分别取了最高价、最低价、收盘价三个数值。
(cx3-3b)
datasjk3_1a;
setsjk3_1;
day=_n_;/*变量day的取值为观测所在的序号,即第几个交易日*/
value=high;output;
value=low;output;
value=close;output;
run;
句法说明:
*value=high;output;——将变量high的观测值赋予变量value,并且将value的当前观测输出到正在创建的数据集sjk3_1b。
后面的语句同。
在运行这个SAS程序后,对数据集sjk3_1a中的每一个观测,系统都会在数据集sjk3_1a中生成value的三个观测,依次为sjk3_1中对应那个观测的最高价、最低价、以及收盘价。
这样,sjk3_1a中的观测数据的个数就sjk3_1中观测数据的个数的3倍。
利用这个程序所生成的数据集sjk3_1a,采用PROCGPLOT语句编程,可以绘制同时包含最高价、最低价、以及收盘价的图形,见图3-3。
在图形中,每个交易日的线的长度表示最高价、最低价的变化范围,交叉线所在的位置表示每天的收盘价。
绘制这个图形的SAS程序如下:
(cx3-3c)
datasjk3_1b;
setsjk3_1a;
ifday<=60;
run;
procgplotdata=sjk3_1b;
plotvalue*day/vaxis=axis1haxis=axis2;
symbolI=hilocL=1h=1font=swissb;
axis1label=(“price”)order=(43to49by1);
axis2label=(“day”)order=(0to60by3);
run;
图3-3:
最高价-最低价-收盘价的图形
句法说明:
*PLOTvalue*day/——规定绘图使用的纵轴变量为value、横轴变量为day,斜杆后面是其它选项。
本例中,下列选项被指定:
haxis=axis1:
规定用axis语句定义该图形的横轴
vaxis=axis2:
规定用axis语句定义该图形的纵轴
*axis规定图形的轴。
本例中AXIS语句的下列选项被指定:
label=:
规定该轴的标签。
order=:
规定该轴的取值范围,本例中,纵轴取值从43到49,并且每隔0.5取一个刻度;横轴取值从2004年1月2日第1个交易日,到2004年3月25日第60个交易日,每三个交易日取一个刻度。
由于页面篇幅所限,以及为了使图形显示清晰,本例中没有画出这个股票从2004年1月2日至2004年11月15日期间全部209个交易日的图形,而只画出了60个交易日的图形。
3.1.2.3绘制包括成交量的股价走势图
与股票价格变动一样,股票成交量的变动,在技术分析中,同样可以提供十分重要的信息。
因此技术分析者希望在反映股票价格变化的图形中,能够同时包含有反映股票成交量变化的信息。
下面介绍如何绘制包括成交量的股票价格走势图。
由于成交量的取值与变化范围,和股票价格的取值与变化范围,通常存在着一定差别,为了要在一张图形中同时绘制出股票价格与成交量的信息,就需要给图形加上一个与原纵轴(表示价格)刻度不同的新纵轴(表示成交量),以表示两个纵轴变量不同的取值范围。
这样的图形被称为双y轴(双纵轴)图形,其中一条纵轴在图形的左边,另一条纵轴在图形的右边,两条纵轴上的不同刻度分别表示两个不同纵轴变量的取值。
利用PROCGPLOT语句编程,利用已经创建的数据集sjk3_1b,可以绘制同时包括最高价、最低价、收盘价和成交量的双纵轴数据图形。
其中:
股票价格用图形左边的纵轴来度量,成交量用图形右边的纵轴来度量。
绘制这个双纵轴图形的SAS程序如下(cx3-3d)。
这个程序递交后,SAS的输出结果见图3-4。
procgplotdata=sjk3_1b;
plotvalue*day/vaxis=axis1haxis=axis2;
plot2volume*day/vaixs=axis3;
symbol1I=hilocL=1h=1font=swissb;
symbol2v=noneI=needle;
axis1=(‘price’)order=(43to49by3)offset=(10,0);
axis2label=(“day”)order=(0to60by3);
axis3label=(“volume”)order=(10to36by3)offset=(0,10);
run;
quit;
图3-4:
包括成交量的股价走势图
句法说明:
*plot2volume*day——规定绘图使用的横轴变量为day,第二个纵轴(右纵轴)的纵轴变量为volume,并用Axis3语句给右纵轴赋值。
*axis——规定绘图轴。
在本例中,下述选项的含义为:
offset=:
规定从该轴第一个主刻度、或最后一个主刻度上下位移的空间大小。
上下位移的目的是使不同数据能够在图形的不同空间显示。
本例在axis1语句中,选项offset=(10,0)用来从左轴的第一个绘图刻度向上位移图形空间的10%。
在axis3语句中,选项offset=(0,10)用来由右轴的最后一个绘图刻度向下位移空间的10%。
*quit——结束当前的procgplot程序。
3.2移动平均线的计算与绘制
推崇技术分析的投资者认为,股票价格是按趋势方式运行的,投资者针对经济、货币、政策和心理力量的变化而不断改变的态度,决定了股票价格的运行趋势。
技术分析者还认为,技术分析就是要尽可能地识别股票市场上各种不同规模、不同方向的趋势,并且在这些趋势的反转点附近识别出趋势的改变。
然而,由于股票市场时常受到各种随机因素的影响,因此股票价格的演变同时会具有一定的随机性,股票价格的随机波动会干扰投资者对趋势的识别,会遮掩趋势的反转点,或者会给出虚假的反转点信息。
因此,在进行股票市场的技术分析时,必须借助股票价格序列的各种移动平均来降低这种随机波动,从而有效地识别出股票价格的变动趋势,识别出反转点的信息。
3.2.1移动平均的计算
在股票市场上,各种随机因素对股票价格的影响通常是相互独立的,如果连续观察一个较长的时间段,那么这些随机因素对股票价格运行趋势的影响,通常会在一定程度上相互抵消。
因此,可以采取股票价格序列的移动平均方式来平滑这种随机波动,而不会改变股票价格变动的本来趋势。
在股票市场的技术分析中,可以采用不同方法来构建原始股价序列的移动平均序列,其中包括下面四种常用的方法。
在进行技术分析时,用不同方法得到的不同移动平均序列,往往适用于不同的分析目的。
1.简单移动平均
在股票市场的技术分析中,简单移动平均线是得到投资者广泛应用的一种移动平均线。
简单移动平均通过将最近一段时间的股票价格数据加总,然后除以时间长度,得到股票价格的平均值。
如果采用某个股票或股票价格指数的收盘价
来构建移动平均序列,则时间段长度为n个交易日的简单平均值为:
。
在构建简单移动平均序列时,为了使平均值可以“移动”,需要将最新的交易日数据加入求和序列,把原来求和序列中的第一项去掉,得到的新和数再除以时间长度即得到新的简单平均值。
不断重复上述过程,可以得到一个简单移动平均序列。
2.加权移动平均
从统计学的角度看,只有把移动平均线绘制在价格时间跨度的中点,才能准确地反映股票价格的演变趋势。
然而这样构建的移动平均序列,可能会使所产生的信号在时间上滞后。
解决既要准确反映股票价格的演变趋势,又不要在时间上滞后这个问题的一种方法,是增大最新价格数据在求和中的权重,同时降低较远价格数据的权重,这样形成的移动平均序列称为加权移动平均序列。
加权移动平均序列认为,就识别一只股票的未来价格运行趋势而言,这只股票最近的价格数据要比这只股票以往的价格数据,能够提供更多的信息。
对股票价格数据的加权可以采用许多种方法,最常用的方法是,在求和序列中,将最远期的价格数据乘以1,第二远期的价格数据乘以2,以此类推,直到最近一个价格数据(第n期)乘以n,然后再除以前n个自然数的和。
即计算方法为:
。
当然,投资者也可以选取其它形式的权重序列,来计算加权移动平均序列。
3.指数平滑移动平均
指数平滑移动平均(又称指数加权滑动平均)是用一个平滑系数来计算加权移动平均的方法。
这种方法认为,要反映价格变动的平均趋势,应该考虑当日收盘价和价格过去的变动趋势这两个因素,由于这两个因素对价格变动的影响程度不同,因此需要用平滑系数来区分它们的影响差异。
指数平滑移动平均的计算方法为:
。
其中
为投资者指定的平滑系数,取值在0与1之间。
平滑系数
越大,当日收盘价格对价格变动的平均趋势的影响越大;平滑系数
越小,当日收盘价对价格变动的平均趋势的影响越小。
作为一般规则,较小的平滑系数适用于缓慢改变趋势的序列,而较大的平滑系数则适用于快速改变趋势的序列。
4.中心移动平均
中心移动平均是通过一个交易日前后各n个交易日的收盘价、和该交易的收盘价共2n+1个数据组成的简单算术平均值。
中心移动平均的计算方法为:
。
从这个计算公式可以看到,由于某个交易日的股票价格的中心移动平均值的计算需要用到此后n个交易日的收盘价数据,或者说,只有在过了n个交易日后,才能得到以前的那个交易日的中心移动平均数据,因此与前面几个移动平均相比,中心移动平均线所给出的信号相对滞后。
3.2.2移动平均线的分类
对于给定的时间序列,移动平均序列的数值不仅依赖于计算移动平均时所采用的方法,而且依赖于计算移动平均的时间段长度。
为了便于区别,按照不同的分类标准,移动平均线可以分成各种不同的类型。
除了可以按照计算方法的不同将移动平均线分为简单移动平均线、加权移动平均线、指数平滑移动平均线、中心移动平均线等,还可以按照计算移动平均的时间段长度,将移动平均线分为短期移动平均线、中期移动平均线和长期移动平均线。
对于短期、中期与长期移动平线的区别,其划分标准并不统一。
如有些投资者会根据自己的使用习惯,将15天以下的移动平均线称为短期线,将15天以上至6个月的移动平均线称为中期线,将6个月以上的移动平均线称为长期线。
而《投资者每日商情》的编辑们,在其1993年出版的《高性能投资指南》中是这样划分的:
基于25个或更少的交易日的移动平均线,可以认为是短期移动平均线;基于26到100个交易日的移动平均线,可以认为是中期移动平均线;而基于100个交易日以上的移动平均线,可以认为是长期移动平均线。
然而,Gordon(1968),Golby和Meyers(1968),和Pring(1991)则按照表3-2的标准,来划分短期、中期与长期的移动平均线。
表3-2:
移动平均的一种划分方法
时间结构移动平均长度
短期移动平均10,15,20,25,30天
中期移动平均30天和10周,13周,26周
长期移动平均200天,45周和12,18,24月
不同期限的移动平均线有不同的特点。
一般而言,短期移动平均线最贴近市场、敏感性强,但起伏较大且不规则,在行情震荡时可能会出现扭曲现象。
短期移动平均线中的10天线在技术分析中使用较为广泛,一些投资者认为,10天线能较好地反映价格短期的变动趋势,因此将其作为短线进出的依据。
当价格横向延伸、无明显趋势时,较敏感的短期移动平均线能够捕捉更多的短线价格波动。
中期移动平均线比较平缓,可以很好地解释中期价格的变动趋势。
中期移动平均线的期限选择可以有多种:
有15天、20天、30天、60天等,其中60天被很多投资者认为是中期进出的依据。
长期移动平均线则更加平缓,对短期价格的变动不敏感,因此但能较好地反映股票价格的长期运行趋势。
当市场趋势良好时,长期移动平均线可以更好的把握股票市场的主要趋势变化,尤其是250天的年线,被许多人称为“牛熊分界线”,许多投资者将其视作划分多头市场与空头市场的一个重要标志。
3.2.3用Data步语句计算移动平均
用SAS中,可以采用DATA步语句编程来计算简单移动平均序列、加权移动平均序列和指数移动平均序列。
这里给出一个计算移动平均序列的具体例子。
[例3-4]Excel数据集sjk3-2中包含了从2005年12月19日至2008年12月31日期间上证A股指数的相关数据,其中变量date为交易日期,变量close为收盘指数。
利用这个数据集生成从2006年1月2日至2008年12月31日期间,各交易日上证指数的简单移动平均序列、加权移动平均序列和指数加权平均序列。
将sjk3-2导入转换为SAS数据集,并将其命名为sjk3_2,可以利用PROCDATA语句编程,来生成时间长度为10个交易日的简单移动平均序列、加权移动平均序列、以及指数移动平均序列。
对应的SAS程序如下。
(cx3-4)
datasjk3_2a;
setsjk3_2;
ma10=(close+lag(close)+lag2(close)+lag3(close)+lag4(close)+lag5(close)
+lag6(close)+lag7(close)+lag8(close)+lag9(close))/10;
wma10=(10*close+9*lag(close)+8*lag2(close)+7*lag3(close)+6*lag4(close)
+5*lag5(close)+4*lag6(close)+3*lag7(close)+2*lag8(close)+lag9(close))/55;
w1=0.6;
retainewma1;
if_n_=1thenewma1=close;
elseewma1=w1*close+(1-w1)*ewma1;
w2=0.75;
retainewma2;
if_n_<2thenewma2=ewma1;
elseewma2=w2*ewma1+(1-w2)*ewma2;
run;
3.2.4绘制原始序列和移动平均的图形
利用PROCGPLOT语句,我们可以在同一张图中绘制原始股价序列和各种移动平均序列的图形,以便进行股票市场的技术分析。
下面利用刚才创建的SAS数据集sjk3_2a来绘制这个图形。
[例3-5]利用PROCGPLOT语句在同一张图形上绘制2006年全年上证指数的收盘价序列和上证指数收盘价的简单移动平均序列的图形。
绘制这个图形的SAS程序如下(cx3-5):
datasjk3_2b;
setsjk3_2a;
day=_n_;
run;
procgplotdata=sjk3_2b;
where10 pl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAS 股票市场 技术 分析