Wednesday, 13 February 2013

IT and Business Applications Lab - Day6 Assignments



Assignment 1: Create a log of returns data and calculate its historical volatility. Create ACF plot for log returns, do ADF test and analyse it.


We have the formula, (log St - log St-1 )/ log St-1


Commands:

data<-read.csv(file.choose(),header=T)
close<-data$Close
close.ts<-ts(close,frequency=252)
closeshift.ts<-lag(close.ts,k=-1)
numerator<-log(close.ts)-log(closeshift.ts)
numerator
returns<-numerator/log(closeshift.ts)
plot(returns,main="Log Returns;NIFTY 1 Jan 2012 to 31 Jan 2013")
acf(returns,main="Auto Correlation Function on log returns")
adf.test(returns)
T<-252^0.5
histvol<-sd(returns)/T
histvol

Plots :

1. Values




2. log returns:

3. ACF plot of log returns



Autocorrelation computes the correlation between different time steps(lags) within the same variable. Since the correlation measurements lie within the confidence interval of 95% (the 2 dotted lines) and pattern exists in the correlation, time series is stationary.


Asgmt 2:
Create ACF plot for the above log of returns data and perform the adf test and comment on it

The ACF plot can be done using the below formula

acf(log.returns)

ADF test and Historical Volatility:


Confidence interval = 95%
implies, Alpha = 0.05
p-value obtained after ADF test = 0.01 which is < alpha
Hence, we reject the null hypothesis.



Thursday, 7 February 2013

IT and Business Applications Lab - Day5 Assignments



Assignment 1: To find and plot the returns for NSE data for more than months.


Solution :

> z<-read.csv(file.choose(),header=T)
> head(z)
Date Open High Low Close Shares.Traded Turnover..Rs..Cr.
1 02-Jul-2012  5283.85 5302.15 5263.35 5278.60 126161441 4991.57
2 03-Jul-2012  5298.85 5317.00 5265.95 5287.95 133117055 5161.82
3 04-Jul-2012  5310.40 5317.65 5273.30 5302.55 155995887 5750.10
4 05-Jul-2012  5297.05 5333.65 5288.85 5327.30 118915392 4709.79
5 06-Jul-2012  5324.70 5327.20 5287.75 5316.95 113300726 4760.51
6 09-Jul-2012  5283.70 5300.60 5257.75 5275.15 101169926 4189.25
> open<-z$Open[10:95]
> open.ts<-ts(open,deltat=1/252)
> open.ts
Time Series:
Start = c(1, 1)
End = c(1, 86)
Frequency = 252
[1] 5242.75 5232.35 5228.05 5199.10 5249.85 5233.55 5163.25 5128.80 5118.40
[10] 5126.30 5124.30 5129.75 5214.85 5220.70 5233.10 5195.60 5260.85 5295.40
[19] 5345.25 5348.30 5308.20 5316.35 5343.25 5385.95 5368.60 5368.70 5395.75
[28] 5426.15 5392.60 5387.85 5348.05 5343.85 5268.60 5298.20 5276.50 5249.15
[37] 5243.90 5217.65 5309.45 5343.65 5361.90 5336.10 5404.45 5435.20 5528.35
[46] 5631.75 5602.40 5536.95 5577.00 5691.95 5674.90 5653.40 5673.75 5684.80
[55] 5704.75 5727.70 5751.55 5815.00 5751.85 5708.15 5671.15 5663.50 5681.70
[64] 5674.25 5705.60 5681.10 5675.30 5703.30 5667.60 5715.65 5688.80 5683.55
[73] 5665.20 5656.35 5596.75 5609.85 5696.35 5693.05 5694.10 5718.60 5709.00
[82] 5731.10 5688.45 5689.70 5650.35 5624.80
> summary(open.ts)
Min. 1st Qu. Median Mean 3rd Qu. Max.
5118 5281 5431 5474 5682 5815
> z.diff<-diff(open.ts)
> z.diff
Time Series:
Start = c(1, 2)
End = c(1, 86)
Frequency = 252
[1] -10.40 -4.30 -28.95 50.75 -16.30 -70.30 -34.45 -10.40 7.90 -2.00
[11] 5.45 85.10 5.85 12.40 -37.50 65.25 34.55 49.85 3.05 -40.10
[21] 8.15 26.90 42.70 -17.35 0.10 27.05 30.40 -33.55 -4.75 -39.80
[31] -4.20 -75.25 29.60 -21.70 -27.35 -5.25 -26.25 91.80 34.20 18.25
[41] -25.80 68.35 30.75 93.15 103.40 -29.35 -65.45 40.05 114.95 -17.05
[51] -21.50 20.35 11.05 19.95 22.95 23.85 63.45 -63.15 -43.70 -37.00
[61] -7.65 18.20 -7.45 31.35 -24.50 -5.80 28.00 -35.70 48.05 -26.85
[71] -5.25 -18.35 -8.85 -59.60 13.10 86.50 -3.30 1.05 24.50 -9.60
[81] 22.10 -42.65 1.25 -39.35 -25.55
> returns<-cbind(open.ts,z.diff,lag(open.ts,k=-1))
> returns
Time Series:
Start = c(1, 1)
End = c(1, 87)
Frequency = 252
open.ts z.diff lag(open.ts, k = -1)
1.000000 5242.75 NA NA
1.003968 5232.35 -10.40 5242.75
1.007937 5228.05 -4.30 5232.35
1.011905 5199.10 -28.95 5228.05
1.015873 5249.85 50.75 5199.10
1.019841 5233.55 -16.30 5249.85
1.023810 5163.25 -70.30 5233.55
1.027778 5128.80 -34.45 5163.25
1.031746 5118.40 -10.40 5128.80
1.035714 5126.30 7.90 5118.40
1.039683 5124.30 -2.00 5126.30
1.043651 5129.75 5.45 5124.30
1.047619 5214.85 85.10 5129.75
1.051587 5220.70 5.85 5214.85
1.055556 5233.10 12.40 5220.70
1.059524 5195.60 -37.50 5233.10
1.063492 5260.85 65.25 5195.60
1.067460 5295.40 34.55 5260.85
1.071429 5345.25 49.85 5295.40
1.075397 5348.30 3.05 5345.25
1.079365 5308.20 -40.10 5348.30
1.083333 5316.35 8.15 5308.20
1.087302 5343.25 26.90 5316.35
1.091270 5385.95 42.70 5343.25
1.095238 5368.60 -17.35 5385.95
1.099206 5368.70 0.10 5368.60
1.103175 5395.75 27.05 5368.70
1.107143 5426.15 30.40 5395.75
1.111111 5392.60 -33.55 5426.15
1.115079 5387.85 -4.75 5392.60
1.119048 5348.05 -39.80 5387.85
1.123016 5343.85 -4.20 5348.05
1.126984 5268.60 -75.25 5343.85
1.130952 5298.20 29.60 5268.60
1.134921 5276.50 -21.70 5298.20
1.138889 5249.15 -27.35 5276.50
1.142857 5243.90 -5.25 5249.15
1.146825 5217.65 -26.25 5243.90
1.150794 5309.45 91.80 5217.65
1.154762 5343.65 34.20 5309.45
1.158730 5361.90 18.25 5343.65
1.162698 5336.10 -25.80 5361.90
1.166667 5404.45 68.35 5336.10
1.170635 5435.20 30.75 5404.45
1.174603 5528.35 93.15 5435.20
1.178571 5631.75 103.40 5528.35
1.182540 5602.40 -29.35 5631.75
1.186508 5536.95 -65.45 5602.40
1.190476 5577.00 40.05 5536.95
1.194444 5691.95 114.95 5577.00
1.198413 5674.90 -17.05 5691.95
1.202381 5653.40 -21.50 5674.90
1.206349 5673.75 20.35 5653.40
1.210317 5684.80 11.05 5673.75
1.214286 5704.75 19.95 5684.80
1.218254 5727.70 22.95 5704.75
1.222222 5751.55 23.85 5727.70
1.226190 5815.00 63.45 5751.55
1.230159 5751.85 -63.15 5815.00
1.234127 5708.15 -43.70 5751.85
1.238095 5671.15 -37.00 5708.15
1.242063 5663.50 -7.65 5671.15
1.246032 5681.70 18.20 5663.50
1.250000 5674.25 -7.45 5681.70
1.253968 5705.60 31.35 5674.25
1.257937 5681.10 -24.50 5705.60
1.261905 5675.30 -5.80 5681.10
1.265873 5703.30 28.00 5675.30
1.269841 5667.60 -35.70 5703.30
1.273810 5715.65 48.05 5667.60
1.277778 5688.80 -26.85 5715.65
1.281746 5683.55 -5.25 5688.80
1.285714 5665.20 -18.35 5683.55
1.289683 5656.35 -8.85 5665.20
1.293651 5596.75 -59.60 5656.35
1.297619 5609.85 13.10 5596.75
1.301587 5696.35 86.50 5609.85
1.305556 5693.05 -3.30 5696.35
1.309524 5694.10 1.05 5693.05
1.313492 5718.60 24.50 5694.10
1.317460 5709.00 -9.60 5718.60
1.321429 5731.10 22.10 5709.00
1.325397 5688.45 -42.65 5731.10
1.329365 5689.70 1.25 5688.45
1.333333 5650.35 -39.35 5689.70
1.337302 5624.80 -25.55 5650.35
1.341270 NA NA 5624.80
> returns<-z.diff/lag(open.ts,k=-1)
> returns
Time Series:
Start = c(1, 2)
End = c(1, 86)
Frequency = 252
[1] -1.983692e-03 -8.218105e-04 -5.537437e-03 9.761305e-03 -3.104851e-03
[6] -1.343256e-02 -6.672154e-03 -2.027765e-03 1.543451e-03 -3.901449e-04
[11] 1.063560e-03 1.658950e-02 1.121796e-03 2.375160e-03 -7.165925e-03
[16] 1.255870e-02 6.567380e-03 9.413831e-03 5.706001e-04 -7.497710e-03
[21] 1.535360e-03 5.059862e-03 7.991391e-03 -3.221344e-03 1.862683e-05
[26] 5.038464e-03 5.634064e-03 -6.183021e-03 -8.808367e-04 -7.386991e-03
[31] -7.853330e-04 -1.408161e-02 5.618191e-03 -4.095731e-03 -5.183360e-03
[36] -1.000162e-03 -5.005816e-03 1.759413e-02 6.441345e-03 3.415269e-03
[41] -4.811727e-03 1.280898e-02 5.689756e-03 1.713828e-02 1.870359e-02
[46] -5.211524e-03 -1.168249e-02 7.233224e-03 2.061144e-02 -2.995458e-03
[51] -3.788613e-03 3.599604e-03 1.947566e-03 3.509358e-03 4.022963e-03
[56] 4.163975e-03 1.103181e-02 -1.085985e-02 -7.597556e-03 -6.481960e-03
[61] -1.348933e-03 3.213561e-03 -1.311227e-03 5.524959e-03 -4.294027e-03
[66] -1.020929e-03 4.933660e-03 -6.259534e-03 8.478015e-03 -4.697628e-03
[71] -9.228660e-04 -3.228616e-03 -1.562169e-03 -1.053683e-02 2.340644e-03
[76] 1.541931e-02 -5.793183e-04 1.844354e-04 4.302699e-03 -1.678733e-03
[81] 3.871081e-03 -7.441852e-03 2.197435e-04 -6.916006e-03 -4.521844e-03
> plot(returns)





Assignment  2:
Perform LOGIT analysis for 700 data points and then predict for 150 data points.

Solution : 

z<-read.csv(file.choose(),header=T)

head(z)

z.data<-z[1:700,1:9]


sapply(z.data,mean)


z.data$ed<-factor(z.data$ed)


logit.est<-glm(default~age+employ+address+income+debtinc+creddebt+othdebt,data=z.data,family="binomial")


summary(logit.est)


confint.default(logit.est)



logit.eg2<-with(z[701:850,1:8],data.frame(age=age,employ=employ,address=address,income=income,debtinc=debtinc,creddebt=creddebt,othdebt=othdebt,ed=factor(1:3)))


logit.eg2$prob<-predict(logit.est,newdata=logit.eg2,type="response")


head(logit.eg2)