• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: C/C++
  • 标签: blackScholes  

资源简介

C++隐含波动率计算函数库

资源截图

代码片段和文件信息

//--------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corp. 
//
// File: BlackScholes.cpp
//
// Licensed under the Apache License Version 2.0 (the “License“); you may not use this 
// file except in compliance with the License. You may obtain a copy of the License at 
// http://www.apache.org/licenses/LICENSE-2.0  
//  
// THIS CODE IS PROVIDED *AS IS* BASIS WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND 
// EITHER EXPRESS OR IMPLIED INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR 
// CONDITIONS OF title FITNESS FOR A PARTICULAR PURPOSE MERCHANTABLITY OR NON-INFRINGEMENT. 
//  
// See the Apache Version 2.0 License for specific language governing permissions and 
// limitations under the License.
//--------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------
// Implements Black Scholes sample in C++ AMP
// Refer README.txt
//--------------------------------------------------------------------------------------

#include “blackscholes.h“

#include 
#include 
#include 
#include 

blackscholes::blackscholes(float _volatility float _riskfreerate int _size)
{
    data_size = _size;
    riskfreerate = _riskfreerate;
    volatility = _volatility;

    stock_price.resize(data_size);
    option_strike.resize(data_size);
    option_years.resize(data_size);
    call_result_amp.resize(data_size); 
    put_result_amp.resize(data_size);

    srand(2012);

    for (int i = 0; i < data_size; i++)
    {
        stock_price[i] = 100.0f * (((float)rand()) / RAND_MAX);
        option_strike[i] = stock_price[i] * ((float)rand()) / RAND_MAX;
        option_years[i] = 20.0f * ((float)rand()) / RAND_MAX;
        call_result_amp[i] = 0;
        put_result_amp[i] = 0;
    }
}

blackscholes::~blackscholes()
{

}

void blackscholes::execute()
{
    const array a_stock_price(data_size stock_price.begin());
    const array a_option_strike(data_size option_strike.begin());
    const array a_option_years(data_size option_years.begin());
    array a_call_result(data_size);
    array a_put_result(data_size);

    float R = riskfreerate;
    float V = volatility;

    assert((data_size%BSCHOLES_TILE_SIZE) == 0);

    parallel_for_each(extent<1>(data_size).tile()
    [= &a_stock_price &a_option_strike &a_option_years &a_call_result &a_put_result] (tiled_index tidx) restrict(amp)
    {
        float S = a_stock_price(tidx.global[0]);
        float X = a_option_strike(tidx.global[0]);
        float T = a_option_years(tidx.global[0]);
            
        float sqrtT = fast_math::sqrtf(T);
        float d1 = (fast_math::logf(S / X) + (R + 0.5f * V * V) * T) / (V * sqrtT);
        float d

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        6126  2013-02-11 10:09  BlackScholes\BlackScholes.cpp
     文件        2032  2013-02-11 09:59  BlackScholes\BlackScholes.h
     文件        7560  2013-02-11 09:57  BlackScholes\BlackScholes.vcxproj
     文件        1694  2012-11-09 13:39  BlackScholes\README.txt

评论

共有 条评论

相关资源