资源简介
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
- 上一篇:A*算法解迷宫
- 下一篇:斗地主小游戏MFC版源程序
评论
共有 条评论