𝗦𝗰𝗮𝗿𝗮𝗯 𝗗𝗶𝗮𝗴𝗻𝗼𝘀𝘁𝗶𝗰 𝗙𝗶𝗲𝗹𝗱 𝗧𝗲𝘀𝘁 #𝟬𝟯𝟮: 𝗢𝗽𝘁𝗶𝗼𝗻 𝗧𝗮𝗿𝗴𝗲𝘁 𝗣𝗿𝗶𝗰𝗶𝗻𝗴 𝗕𝗼𝘂𝗻𝗱𝗮𝗿𝘆
QuantConnect Lean ਵਿੱਚ ਓਪਸ਼ਨ ਟਾਰਗੇਟ ਸਾਈਜ਼ਿੰਗ ਵਿੱਚ ਇੱਕ ਗੰਭੀਰ ਬੱਗ ਸੀ।
ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਓਪਸ਼ਨ ਪੋਜੀਸ਼ਨ ਲਈ 10% ਟਾਰਗੇਟ ਦੀ ਮੰਗ ਕੀਤੀ ਸੀ, ਤਾਂ ਇੰਜਣ ਤੁਹਾਡੀ ਮੰਗ ਤੋਂ ਵੱਧ ਦੇ ਸਕਦਾ ਸੀ।
ਇਹ ਇਸ ਲਈ ਹੋਇਆ ਕਿਉਂਕਿ ਸਿਸਟਮ ਨੇ ਮਾਤਰਾ (quantity) ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ ਗਲਤ ਕੀਮਤ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਸੀ। ਇਸਨੇ ਅਸਲ ਕੀਮਤ ਦੀ ਬਜਾਏ ਮਿਡ (mid) ਜਾਂ ਲਾਸਟ (last) ਕੀਮਤ ਦੀ ਵਰਤੋਂ ਕੀਤੀ, ਜੋ ਕਿ ਤੁਹਾਨੂੰ ਓਪਸ਼ਨ ਖਰੀਦਣ ਲਈ ਅਦਾ ਕਰਨੀ ਪੈਂਦੀ ਹੈ।
ਜਦੋਂ ਬਿਡ/ਆਸਕ ਸਪਰੈਡ (bid/ask spread) ਜ਼ਿਆਦਾ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਹ ਗਲਤੀ ਵਧ ਜਾਂਦੀ ਹੈ।
ਇੰਜਣ ਮਾਰਜਿਨ ਗਣਨਾਵਾਂ ਲਈ security.Price ਦੀ ਵਰਤੋਂ ਕਰ ਰਿਹਾ ਸੀ। ਲੌਂਗ ਓਪਸ਼ਨ ਲਈ, ਤੁਹਾਨੂੰ ਆਸਕ (ask) ਕੀਮਤ 'ਤੇ ਖਰੀਦਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇਕਰ ਇੰਜਣ ਘੱਟ ਮਿਡ-ਪ੍ਰਾਈਸ ਦੇ ਅਧਾਰ 'ਤੇ ਸਾਈਜ਼ਿੰਗ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈ, ਤਾਂ ਆਰਡਰ ਪੂਰਾ ਹੋਣ ਤੋਂ ਬਾਅਦ ਤੁਹਾਡੀ ਅੰਤਿਮ ਪੋਜੀਸ਼ਨ ਤੁਹਾਡੇ ਟਾਰਗੇਟ ਵੇਟ ਤੋਂ ਵੱਧ ਜਾਵੇਗੀ।
ਅਸੀਂ ਸਹੀ ਰਿਪੇਅਰ ਬਾਊਂਡਰੀ ਦੀ ਪਛਾਣ ਕੀਤੀ ਹੈ।
ਅਸੀਂ ਪੂਰੇ ਪੋਰਟਫੋਲੀਓ ਕੰਸਟ੍ਰਕਸ਼ਨ ਇੰਜਣ ਨੂੰ ਦੁਬਾਰਾ ਨਹੀਂ ਲਿਖਿਆ। ਅਸੀਂ ਹਰ ਸੁਰੱਖਿਆ ਕਿਸਮ (security type) ਦੇ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ ਨਹੀਂ ਬਦਲਿਆ। ਅਸੀਂ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਲੇਅਰ ਨੂੰ ਨਹੀਂ ਬਦਲਿਆ।
ਇਸ ਦੀ ਬਜਾਏ, ਅਸੀਂ ਓਪਸ਼ਨ-ਵਿਸ਼ੇਸ਼ ਮਾਰਜਿਨ ਪ੍ਰਾਈਸਿੰਗ ਪਾਥ ਨੂੰ ਠੀਕ ਕੀਤਾ।
ਇਹ ਫਿਕਸ ਇਹਨਾਂ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ:
- ਲੌਂਗ ਓਪਸ਼ਨ ਟਾਰਗੇਟਾਂ ਲਈ: ਜਦੋਂ ਉਪਲਬਧ ਹੋਵੇ ਤਾਂ ਆਸਕ (ask) ਕੀਮਤ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਸ਼ਾਰਟ ਓਪਸ਼ਨ ਟਾਰਗੇਟਾਂ ਲਈ: ਜਦੋਂ ਉਪਲਬਧ ਹੋਵੇ ਤਾਂ ਬਿਡ (bid) ਕੀਮਤ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਜੇਕਰ ਕੋਈ ਕੋਟ (quote) ਉਪਲਬਧ ਨਹੀਂ ਹੈ: ਮੌਜੂਦਾ ਲਾਸਟ/ਮਾਰਕ (last/mark) ਕੀਮਤ ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਇਹ ਰਿਪੇਅਰ ਨੂੰ ਸਥਾਨਕ ਅਤੇ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ। ਇਹ ਉੱਤਮ ਡੇਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਜਦੋਂ ਇਹ ਮੌਜੂਦ ਹੁੰਦਾ ਹੈ, ਪਰ ਜਦੋਂ ਨਹੀਂ ਹੁੰਦਾ ਤਾਂ ਪੁਰਾਣੇ ਵਿਵਹਾਰ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦਾ ਹੈ।
ਵੈਲੀਡੇਸ਼ਨ ਨਤੀਜੇ:
- ਰਿਲੀਜ਼ ਬਿਲਡ ਪਾਸ ਹੋ ਗਿਆ।
- ਫੋਕਸਡ ਓਪਸ਼ਨ-ਮਾਰਜਿਨ ਟੈਸਟ: 41/41 ਪਾਸ ਹੋ ਗਏ।
- ਲੌਂਗ-ਸਾਈਡ ਆਸਕ ਪ੍ਰਾਈਸਿੰਗ ਅਤੇ ਸ਼ਾਰਟ-ਸਾਈਡ ਬਿਡ ਪ੍ਰਾਈਸਿੰਗ ਦੋਵਾਂ ਲਈ ਰੈਗਰੈਸ਼ਨ ਕਵਰੇਜ ਜੋੜੀ ਗਈ।
ਇਹ ਫਿਕਸ ਸਾਈਜ਼ਿੰਗ ਲਈ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਕੀਮਤਾਂ (executable prices) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਇੰਜਣ ਤੁਹਾਡੇ ਰਿਸਕ ਕੰਟਰੈਕਟ ਦਾ ਸਤਿਕਾਰ ਕਰੇ।
Optional learning community: https://t.me/GyaanSetuAi