close

1

 

這篇基本上用任何程式語法都可以做到和C# 無關, 但是在程式上會應用到, 所以我就把它規在 C# ~^^”.

 

如果你是用迴圈加比對的方式0來找到選擇權履約價在第幾列, 或許你可以參考本篇看看.

 

 

一、線性轉換(單位化):

如果履約價的間距一樣,  我們要快速得知某一履約價的位置可以用單位化的方式來達到, 假設今天 TXO 掛牌的履約價為 6300 ~ 8200. 各履約價之間最小間距為 100 起始履約價為6300, 履約價 8000 的列數為 (8000-6300)/100 . 數示如下:

 

令起始履約價為 KStart, Ki為第i個履約價, 履約價最小間距為 mindK, 任一履約價的列數為Rowi,

則取得列數的公式為:   

 

Rowi = (Ki – KStart)/mindK;

  

 

 

二、以空間換取時間:

假設今天的履約價是跨越萬點級距(雖然不知民國幾年才會發生), 我們知道近月TXO過萬點後, 履約價間距會從100200, 如下:

 

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];    // 取得履約價的列數

 

 

 

 

 

arrow
arrow
    全站熱搜

    Keep Practicing 發表在 痞客邦 留言(0) 人氣()