Posts tagged: coding

10 August 2017, Index Futures on HOSE

By , August 10, 2017 3:24 am

Trước giờ Hợp Đồng Giao Sau Chỉ Số chính thức đi vào hoạt động.

1. VN30 đầu ngày 741.36, cuối ngày 743.42.

Trần – Sàn – Tham Chiếu – Cuối Ngày

VN30F1708 – 811 – 705 – 758 – 745.9
VN30F1709 – 809.3 – 703.5 – 756.4 – 749.1
VN30F1712 – 804.7 – 699.5 – 752.1 – 755
VN30F1803 – 800.4 – 695.8 – 748.1 – 758

Open Interest dịch là Khối Lượng Tích Luỹ dễ hiểu.

2. Ngoài áp lực chốt lãi T+ equity thường có thì giờ còn có áp lực đến ngày đáo hạn (maturity / expiry) của Futures.

3. Value at Risk VN30 Futures theo yêu cầu Basel III = VND 3,696,661

Rất thấp do implied volatility.

Có 4 phương pháp cổ điển tính VaR: (1) Linear Probabilistic (2) Complementary Error Function erfc (3) Normality (4) Monte Carlo Simulation. Pseudo-code cuối bài.

4. 3 yếu tố ảnh hưởng chính đến VN30 Futures: lãi suất, dividend yield, thời gian đến đáo hạn (time to maturity).

Mối liên quan đơn giản nhất là: F = Se^[(r-q)t]

VN30 = SIGMA(PiSifi) / Cap(i) * Zi

Tử số là tổng giá trị vốn hoá của các cổ phiếu tham gia sau khi điều chỉnh free float.
Z: điều chỉnh trường hợp vượt quá tỉ trọng cho phép.

5. Dividend yield hiện tại đang là 2.81%.

6. PE 12.88

7. Vốn hoá VND 1,147,725,989,265,190
Index Point đang được thị trường định giá VND 1,548,135,843,942

8. Dữ liệu lịch sử VN30:

Mean = 0.00048807
Standard Error = 0.000283514
Median = 0.0007096
Mode = 0
Standard Deviation = 0.013124581
Sample Variance = 0.000172255
Kurtosis = 1.920261699
Skewness = -0.060551087
Range = 0.103634608
Minimum = -0.056110646
Maximum = 0.047523962
Count = 2143
Confidence Level (99.0%) = 0.000730935
Mean dương là do horizon bias.

9. Sau 17 năm, lần đầu tiên chúng ta có sản phẩm đánh xuống (Bearish) hợp pháp và công khai và chính thức.

Dùng dữ liệu lịch sử chắc chắn bị chúng khinh là chưa chắc dự đoán được tương lai. Mà lỡ không biết làm thế nào cho hay mà đang bị dí báo cáo thì có nhiêu sống bấy nhiêu thôi.

/** Linear Probabilistic */
for (i = 0 ; i < n-1 ; i++)
{
	r[i] = p[i+1] / p[i] - 1;
	sumr += r[i];
}

muyr = sumr / n;

for (i = 0 ; i < n-1 ; i++)
{
	varianceNum += (r[i] - muyr) ^ 2;
}

vol = sqrt(varianceNum / (n-2));

VaR = getCriticalValue(confidence) * sqrt(multiplyMatrix(multiplyMatrix(w[n]*vol[n], varCov[n][n]),transposeMatrix(w[n]*vol[n]))) * sqrt(BaselForecast / tradingDays);

/** Complementary Error Function */

for (i = 0 ; i < a ; i++)
{
	while(probability[i][0] < p)
	{
	probability[i][0] = 1/2 * erf((rmean[i][0] + ln(value) - ln(value - var[i][0])) / (volatility[i][0] * sqrt(2 * 1)));
	var[i][0] += 1;
	}
	var[i][0] = var[i][0] * (goBackDays - 1);
}

/** Normality */
for (i = 0 ; i < numberOfAssets1 ; i++)
{
	weight[i][0] = securityValue1 / (pdt[startPeriod1][i]);
}

for (i = 0 ; i < a ; i++)
{
	pdtdfu = pdtdf[(startBack1+i):(startPeriod1+i)][];
	pdtdfuv = variance(pdtdfu);
	pdtdfuvf = weight' * pdtdfuv * weight;
	meanp = meanc(pdtdfu);
	var = (-1 * horizon) * weight' * (meanp') - (zValueOnePercent * sqrt(horizon*pdtdfuvf));
	realv = ( (pdt[startPeriod1+i][]) * weight) - ( (pdt[startPeriod1+i+horizon][]) * weight );
	efficiency = -realv / var;
	fprint(file, var,"\t",realv,"\t",efficiency,"\n");
}

/** Monte Carlo Simulation */
for (i = 0 ; i < numberOfAssets1 ; i++)
{
	weight[i][0] = securityValue1 / (pdt[startPeriod1][i]);
}

for (i = 0 ; i < numberOfTradingDays ; i++)
{
	for (b = 0 ; b < repeatB ; b++)
	{
		portrl = pdt[startPeriod1+i][] + pdtdf[startBack1+i+(ranu(1,1)*scaleMultiplier)][];
		for (j = 0 ; j < repeatDeltaP ; j++)
		{
			portrl += pdtdf[startBack1+i+(ranu(1,1)*scaleMultiplier)][];
		}
		portrlv[b][0] = weight' * (portrl)';
	}
	portq = quantilec(portrlv, mq);
	var = ((pdt[startPeriod1+i][]) * weight) - portq[0][0];
	realv = ((pdt[startPeriod1+i][]) * weight) - ((pdt[startPeriod1+i+horizon][]) * weight);
	efficiency = -realv / var;
	fprint(file, var,"\t",realv,"\t",efficiency,"\n");
}

Panorama Theme by Themocracy