常见的股票技术因子学习以及计算

最近在看《量化投资数据挖掘技术与实践(MATLAB版)》。学习了其中的常见的股票衍生变量,并且利用WIND金融数据终端的matlab借口windmatlab导出一些数据进行了一个简单的学习。特此记录。

  1. 下面是我对于书中提到的几个因子的学习总结:

A. 股票当日涨幅:相对于收盘价而言。其计算为:

股票当日涨幅= ii1i1×100%

B. 股票10日涨幅

股票当日涨幅= ii10i10×100%

C. 10日涨跌比率ADR

ADR= 1010

  • 取值范围:

    一般而言,由ADR的数值大小可以把大势分为几个区域。
    (1)ADR数值在0.5——1.5之间是ADR处在正常区域内。当ADR处在正常区域内时,表明多空双方势均力敌,大盘的走势波动不大、比较平稳,股市大势属于一种盘整行情。这个区域是ADR数值经常出现的区域。
    (2)当ADR数值在0.3——0.5之间或1.5——2之间是ADR处在非正常区域内。
    当ADR处在1.5——2之间的非正常区域时,表明多头力量占据优势,大盘开始向上一路上涨,股市大势属于一种多头行情;
    而当ADR处在0.3——0.5之间的非正常区域时,表明空头力量占据优势,大盘开始一路下跌,股市大势属于一种空头行情。这两个区域是ADR数值比较少出现的区域。
    (3)当ADR值是在0.3以下或2以上时是ADR处在极不正常区域内。当ADR处在极不正常区域时,主要是突发的利多、利空消息引起股市暴涨暴跌的情况。此时,股市大势属于一种大空头或大多头行情。

  • 买卖决策:

    (1)当ADR数值小于0.5时,表示大势经过长期下跌,已经出现超卖现象,很多股票价格可能会止跌企稳并出现一轮反弹行情,投资者可以短线少量买入超跌股作反弹。
    (2)当ADR数值大于1.5时,表示大势经过长期上涨,已经出现超买现象,很多股票价格可能已经上涨过度,将会出现一轮幅度比较大的下跌行情,投资者应以及时卖出股票或持币观望为主。
    (3)当ADR数值在0.5——1.5之间时,表示大势基本处于整理行情之中,没有出现特殊的超买和超卖现象,这时投资者更重要的在于研判个股行情。
    (4)当ADR数值在0.3以下时,表示大势处在大空头市场的末期,市场上出现了严重的超卖现象,很多股票的价格已经跌无可跌,此时,投资者可以分批逢低吸纳股票,作中长线的建仓投资。
    (5)当ADR数值在2.0以上时,表示大势处在大多头市场的末期,市场上出现了严重的超买现象,很多股票的价格已经涨幅过大,将面临一轮比较大的下跌行情,此时,投资者应及时卖出持有的股票。

D. 10日相对强弱指标RSI

RSI10=1010

E. 当日k线值

k线=PRICEclosePRICEopenPRICEhighPRICElow

F. 10日乖离日(BIAS)

BIAS=NN

关于BIAS的具体介绍参考MBA智库百科:
http://wiki.mbalib.com/wiki/BIAS

G. RSV-未成熟随机值

RSV=999×100

RSV参考MBA智库百科
http://wiki.mbalib.com/wiki/RSV

F. OBV量比
OBV= sign()×V

其中sign为符号函数,其表达形式为:

sign(x) =

101x>0,x=0.x<0

关于OBV更多的讨论可以参考:
https://baike.baidu.com/item/%E8%83%BD%E9%87%8F%E6%BD%AE?fromtitle=OBV&fromid=3635727#2

2.matlab程序

clc
clear
close all
% w=windmatlab;
% [w_wsd_data,w_wsd_codes,w_wsd_fields,w_wsd_times,w_wsd_errorid,w_wsd_reqid]=...
%     w.wsd('000001.SZ','open,high,low,close,volume','2011-01-01','2013-12-30');
% price(:,1)=w_wsd_times;
% price(:,2:6)=w_wsd_data;
% price=sortrows(price,-1);
price=xlsread('sz000001.xls');
sr=size(price,1);
cp=30;%衍生变量计算日期区间最大跨度。
sampleValue=zeros(sr-cp,11);
for i=1:sr-cp
    %dv1:当日涨幅 100%*(第i天的收盘价-第i-1天的收盘价)/第i-1天的收盘价
    dv1=100*(price(i,5)-price(i+1,5))/price(i+1,5);
    %dv2:十日涨幅 100%*(第i天的收盘价-第i-10天的收盘价)/第i-10天的收盘价
    dv2=100*(price(i,5)-price(i+10,5))/price(i+10,5);
    riseNumber=0;
    decreaseNumber=0;
    %以10为周期,比较10天内的涨的天数和跌的天数
    for j=1:10
        if price(i+j-1,5)-price(i+j,5)>0
            riseNumber=riseNumber+1;
        else
            decreaseNumber=decreaseNumber+1;
        end
    end
    %dv3:10日涨跌比率ADR,10日内涨的天数/10日内跌的天数
    dv3=riseNumber/decreaseNumber;
    %dv4:10日相对强弱指标 10日内涨的天数/10;
    dv4=riseNumber/10;

    %dv5:当日k线值
    %dv6:6日k线值
    kLineValue=zeros(1,6);
    for j=1:6
        kLineValue(1,j)=(price(i+j-1,5)-price(i+j-1,2))/(price(i+j-1,3)-price(i+j-1,4));
    end
    dv5=kLineValue(1);
    dv6=sum(kLineValue(1,1:6))/6;
    %dv7:10日乖离率(BIAS)BIAS=(当日收盘价-N日内移动平均收盘价)/N日内移动平均收盘价
    dv7=(price(i,5)-sum(price(i:i+9,5)/10))/sum(price(i:i+9,5))/10;
    %dv8:9日未成熟随机值 rsv =(收盘价 – 9日内最低收盘价)/(9日内最高收盘价 – 9日内最低收盘价)×100
    dv8=(price(i,5)-min(price(i:i+8,5)))/(max(price(i:i+8,5))-min(price(i:i+8,5)));
    %dv9:30日未成熟随机值 rsv =(收盘价 – 30日内最低收盘价)/(30日内最高收盘价 – 30日内最低收盘价)×100
    dv9=(price(i,5)-min(price(i:i+29,5)))/(max(price(i:i+29,5))-min(price(i:i+29,5)));
    %dv10:OBV能量潮量比
    dv10=sign(price(i,5)-price(i+1,5))*price(i,6)/(sum(price(i:i+4,6))/5);

    % dv11:变动率指标 ROC=(今天的收盘价-N日前的收盘价)/N日前的收盘价*100
    dv11=100*(price(i,5)-price(i+11,5))/price(i+11,5);
   sampleValue(i,:)=[dv1,dv2,dv3,dv4,dv5,dv6,dv7,dv8,dv9,dv10,dv11];
end

3.几个因子的时间变化趋势

这里写图片描述
这里写图片描述
这里写图片描述

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值