這篇基本上用任何程式語法都可以做到和C# 無關, 但是在程式上會應用到, 所以我就把它規在 C# 裡~^^”.
如果你是用迴圈加比對的方式0來找到選擇權履約價在第幾列, 或許你可以參考本篇看看.
一、線性轉換(單位化):
如果履約價的間距一樣, 我們要快速得知某一履約價的位置可以用單位化的方式來達到, 假設今天 TXO 掛牌的履約價為 6300 ~ 8200. 各履約價之間最小間距為 100 起始履約價為6300, 履約價 8000 的列數為 (8000-6300)/100 . 數示如下:
令起始履約價為 KStart, Ki為第i個履約價, 履約價最小間距為 mindK, 任一履約價的列數為Rowi,
則取得列數的公式為:
Rowi = (Ki – KStart)/mindK;
二、以空間換取時間:
假設今天的履約價是跨越萬點級距(雖然不知民國幾年才會發生), 我們知道近月TXO過萬點後, 履約價間距會從100變200, 如下:
|
9800 |
|
|
9900 |
|
|
10000 |
|
|
10200 |
|
|
10400 |
|
只用單位化是不夠的, 我們必須捨棄一些空間來換取時間, 我們先定義一個指標陣列, int[] RowIndex; 令他的長度為履約價最大值減去最小值再除上履約價最小間距, 將每一個履約價正確的列數放到 RowIndex 裡, 存放位置為自己單位化後的值, 如此我們便可經由履約價單位化後, 在RowIndex 快速取得履約價正確的列數.
令 KStart 為起始履約價, KEnd 為最後一個履約價, Ki 為第i個履約價, 履約價最小間距為mindx, RowLength 為 RowIndex 的長度, 我們必須先土法鍊鋼記錄一次所有履約價對應的正確列數:
步驟一:先土法鍊鋼記錄下每一個履價正確的列數到 RowIndex 陣列裡
int KStart, Kend, dK, RowLength, Ki;
int[] RowIndex;
int tmpRowi;
for (int i = 0; i < RowLength; i++)
{
tmpRowi = (Ki-KStart)/dK; // 取得各履約價單位化的值,
RowIndex[tmpRowi] = i; // 將履約價正確的列數放到RowIndex, 存放位置為履約價單位化後的值
}
步驟二:
tmpRowi = (Ki-KStart)/dK; // 先行單位化取得履約價列數存放位置
Rowi = RowIndex[tmpRowi]; // 取得履約價的列數
留言列表