精华内容
下载资源
问答
  • Java版本欧式期权计算器使用Java编写欧式期权计算器先看一下欧式期权计算公式完整Java代码 使用Java编写欧式期权计算器 目前公司一个小程序项目需要用到欧式期权器,计算看涨期权与看跌期权理论价格,鉴于网上也没有...

    使用Java编写欧式期权计算器

    目前公司一个小程序项目需要用到欧式期权器,计算看涨期权与看跌期权理论价格,鉴于网上也没有Java版本的。所以本人打算亲自写一个,使用java编写,解决这一个小知识点的同时,也希望能帮到大家,欢迎转载

    先看一下欧式期权计算公式

    这里直接引入欧式期权理论价格计算公式

    参数说明:
    C:看涨期权初始合理价格 P:看跌期权初始合理价格
    X:执行价格 S:期货价格 T:期权有效期
    r:无风险利率 b:持有持本,默认取0
    σ2:年度化方差 N():正态分布变量的累积概率分布函数
    其中正太分布函数excel中可以通过normsdist函数求出,这里直接用java编写

    完整Java代码

    // 包名需要自行引入
    
    /**
     * @author TaoZhiQun 武汉量投网络科技有限公司
     * @version v1.0
     * @desc 欧式看涨看跌期权计算器
     * @date 2019/12/11 11:47
     */
    public final class EuropeanOptionCalculate {
        private EuropeanOptionCalculate() {
        }
    
        /**
         * 年取365天
         */
        private static double yearDays = 365L;
    
        /**
         * 正态分布函数
         * 化解定积分,取5阶导数
         *
         * @param a d1 d2的值
         * @return double
         */
        private static double n(double a) {
            double p = 0.2316419;
            double b1 = 0.31938153;
            double b2 = -0.356563782;
            double b3 = 1.781477937;
            double b4 = -1.821255978;
            double b5 = 1.330274429;
            double x = Math.abs(a);
            double t = 1 / (1 + p * x);
            double val = 1 - (1 / (Math.sqrt(2 * Math.PI)) * Math.exp(-1 * Math.pow(a, 2) / 2)) * (b1 * t + b2 * Math.pow(t, 2) + b3 * Math.pow(t, 3) + b4 * Math.pow(t, 4) + b5 * Math.pow(t, 5));
            if (a < 0) {
                val = 1 - val;
            }
            return val;
        }
    
        /**
         * 获取看涨期权价格,持有成本b取0
         * 期货价格 S,执行价格X,有效天数T 即相隔天数,r无风险利率 ,sigma年度波动率
         * 若传入两个日期,先计算两个日期出相隔天数
         */
        public static double getCallPrice(double s, double x, int t, double r, double sigma) {
            final double powER = Math.pow(Math.E, -r * (t / yearDays));
            double d1 = getD1(s, x, t, sigma);
            return s * powER * n(d1) - x * powER * n(getD2(d1, t, sigma));
        }
    
        /**
         * 获取看跌期权价格,持有成本b取0
         * 期货价格 S,执行价格X,有效天数T 即相隔天数,r无风险利率 ,sigma年度波动率
         * 若传入两个日期,先调用DateUtil getBetweenDays计算出相隔天数
         */
        public static double getPutPrice(double s, double x, int t, double r, double sigma){
            final double powER = Math.pow(Math.E, -r * (t / yearDays));
            double d1 = getD1(s, x, t, sigma);
            return x*powER*n(-getD2(d1,t,sigma))-s*powER*n(-d1);
        }
    
        /**
         * 获取d1
         *
         * @param s     :期货价格
         * @param x     :执行价格
         * @param t     :有效天数
         * @param sigma :年度波动率
         * @return d1
         */
        private static double getD1(double s, double x, int t, double sigma) {
            return (Math.log(s / x) + 0.5 * Math.pow(sigma, 2) * (t / yearDays)) / (sigma * Math.sqrt((t / yearDays)));
        }
    
        /**
         * 获取d2
         * @param d1 :计算的d1值
         * @param t:相隔天数
         * @param sigma :年度波动率
         * @return :d2
         */
        private static double getD2(double d1, int t, double sigma) {
            return d1 - sigma * (Math.sqrt((t / yearDays)));
        }
    
        public static void main(String[] args) {
            // 期货价格
            double s = 5500L;
            // 执行价格
            double x = 6000L;
            // 相隔天数
            int t = 365;
            // 无风险利率
            double r =0.06;
            // 年度波动率
            double sigma = 0.12;
            final double callPrice = getCallPrice(s, x, t, r, sigma);
            final double putPrice = getPutPrice(s,x,t,r,sigma);
            System.out.println("看涨期权理论价格"+callPrice);
            System.out.println("看跌期权理论价格"+putPrice);
        }
    
    }
    
    • 有任何问题欢迎及时指正,不胜感激
    展开全文
  • 期权重要公式计算

    2020-09-01 20:56:37
    合约乘数*开仓张数*费率(手续费不得超过期权费的12.5%) 假设当前BTCUSD-20200515-8500-C的市场报价为0.1BTC,在此价格开仓一张,账户等级为LV1,吃单成交,吃单费率万分之五(0.05%) 手续费=合约...
    手续费 合约乘数*开仓张数*费率(手续费不得超过期权费的12.5%)

    假设当前BTCUSD-20200515-8500-C的市场报价为0.1BTC,在此价格开仓一张,账户等级为LV1,吃单成交,吃单费率万分之五(0.05%)

    手续费=合约乘数*开仓张数*费率               0.1*1*0.0005=0.00005BTC

    期权费 开仓均价*合约乘数*开仓张数

    假设当前BTCUSD-20200515-8500-C的市场报价为0.1BTC,在此价格开仓一张                                                       

    期权费=开仓均价*合约乘数*开仓张数              0.1*1*0.1=0.01BTC                                     

    持仓收益(未实现盈亏) (标记价格-开仓均价)*合约乘数*持仓张数(张数取正负值)

    假设当前BTCUSD-20200515-8500-C的市场报价为0.1BTC时开仓1张,1小时候标记价格变动为0.2BTC,此时的持仓收益为

    (标记价格-开仓均价)*合约乘数*持仓张数                              (0.2-0.1)*0.1*1=0.01BTC

    平仓收益(已实现盈亏) (平仓价格-开仓均价)*合约乘数*持仓张数(张数取正负值)

    假设当前BTCUSD-20200515-8500-C的市场报价为0.1BTC时开仓1张,1小时候后在价格为0.2BTC平仓,此时的平仓仓收益为

    (平仓价格-开仓均价)*合约乘数*持仓张数                       (0.2-0.1)*0.1*1=0.01BTC

    买入看涨自动行权收益 (最终结算价-执行价)/最终结算价*合约乘数*张数

    假设在BTCUSD-20200515-1000-C期权中买入100张,到期时BTC价格为2000USD,此时是实值期权,系统会进行自动行权

    行权收益=(最终结算价-执行价)/最终结算价*合约乘数*张数                         (2000-1000)/2000*0.1*10=5BTC

    买入看跌自动行权收益 (执行价-最终结算价)/最终结算价*合约乘数*张数

    假设在BTCUSD-20200515-2000-P期权中买入100张,到期时BTC价格为1000USD,此时是实值期权,系统会进行自动行权 

    行权收益=(执行价-最终结算价)/最终结算价*合约乘数*张数                 (2000-1000)/1000*0.1*10=10BTC

    买方开仓挂单冻结保证金 买入开仓挂单保证金 = (挂单价格x合约乘数 + 单张手续费) x挂单张数 假设现在BTCUSD指数是$8500,你想买入100张看涨期权。当前BTCUSD-20200515-8500-C的标记价格为0.05 BTC,你以0.0475 BTC的价格挂单。LV1级的用户,挂单手续费为万二(0.02%),那么每张的挂单手续费 = 1张X合约乘数0.1 X 0.02%的费率 = 0.00002 BTC。
    买入开仓挂单保证金= (挂单价格x合约乘数 + 单张手续费) x挂单张数
    = (0.0475 x 0.1 + 0.00002) x 100
    = 0.477 BTC
    卖方开仓挂单冻结保证金 卖出开仓挂单保证金 = max (卖出单张的持仓保证金 - 挂单价格x合约乘数 + 单张手续费,单张最低挂单保证金*x合约乘数) x挂单张数。卖出期权订单成交时,卖方支付手续费、收到期权费,冻结持仓保证金。
    BTCUSD、ETHUSD期权卖出开仓挂单保证金 = max (卖出单张的持仓保证金 - 挂单价格x合约乘数 + 单张手续费,0.1x合约乘数) x挂单张数;
    EOSUSD期权卖出开仓挂单保证金 = max (卖出单张的持仓保证金 - 挂单价格x合约乘数 + 单张手续费,0.125x合约乘数) x挂单张数
    假设现在BTCUSD指数是$6000,你想卖出100张看涨期权。当前BTCUSD-20200327-6000-C的标记价  格为0.0575 BTC,你以0.06 BTC的价格挂单。且同到期日的交割合约BTCUSD当周0327的标记价格为$5900, 虚值程度为$ 6000- $5900= $100。LV1级的用户,挂单手续费为万二 (0.02%), 每张挂单手续费 = 1张X合约乘数0.1 X 0.02%的费率 = 0.00002 BTC。
    看涨期权的卖方:
    卖出单张的持仓保证金= [max (0.1, 0.15 - 虚值程度/同到期日交割合约的标记价格) + 期权标记价格] x合约乘数x持仓张数
    = [max (0.1, 0.15 - 100/5900) + 0.0575] x 0.1x 1
    = 0.01905 BTC
    卖出开仓挂单保证金= max (卖出单张的持仓保证金 - 挂单价格x合约乘数 + 手续费,最低挂单保证金x合约乘数) x挂单张数
    = max (0.01905 – 0.06 x 0.1 + 0.00002,0.1 x 0.1) x100
    = 1.307 BTC
    买方平仓挂单冻结保证金 0  
    卖方平仓挂单冻结保证金 0  
    买方(看涨、看跌)持仓保证金 0  
    虚值程度 卖出看涨期权虚值程度 执行价-标的价格
    卖出看跌期权虚值程度 标的价格-执行价格
    看涨期权卖方持仓保证金 BTCUSD、ETHUSD期权持仓保证金= [max (0.1, 0.15 - 虚值程度/同到期日交割合约的标记价格) + 期权标记价格] x合约乘数x持仓张数;
    EOSUSD期权持仓保证金= [max (0.125, 0.2 - 虚值程度/同到期日交割合约的标记价格) + 期权标记价格] x合约乘数x持仓张数
    假设现在BTCUSD指数是$6000,你想卖出50张看涨期权。当前BTCUSD-20200327-6000-C的标记价格为0.0575 BTC,你以0.06 BTC的价格挂单。且同到期日的交割合约BTCUSD-20200327的标记价格为$5900, 虚值程度为$ 6000- $5900= $100.
    看涨期权的卖方:
    持仓保证金= [max (0.1, 0.15 - 虚值程度/同到期日交割合约的标记价格) + 期权标记价格] x合约乘数x持仓张数;
    = [max (0.1, 0.15 - 100/5900) + 0.0575] x 0.1 x 50
    = 0.95275 BTC
    看跌期权卖方持仓保证金 BTCUSD、ETHUSD期权持仓保证金= [max (0.1 x (1 + 期权标记价格), 0.15 - 虚值程度/同到期日交割合约的标记价格) + 期权标记价格] x合约乘数x持仓张数。
    EOSUSD期权持仓保证金= [max (0.125 x (1 + 期权标记价格), 0.2 - 虚值程度/同到期日交割合约的标记价格) + 期权标记价格] x合约乘数x持仓张数
    假设现在BTCUSD指数是$8600,你想卖出100张看跌期权来平仓。当前BTCUSD-20200515-8500-P的标记价格为0.0225 BTC,你以0.0235 BTC的价格挂单。且同到期日的交割合约BTCUSD当周0515的标记价格为$8640, 虚值程度为$ 8640- $8500= $140.
    LV1级的用户,挂单手续费为万二(0.02%),每张挂单手续费 = 1张X每张0.1BTC的面值X 0.02%的费率 = 0.002% BTC。
    看跌期权的卖方:
    持仓保证金= [max (0.1 x (1 + 期权标记价格), 0.15 - 虚值程度/同到期日交割合约的标记价格) + 期权标记价格] x合约乘数x持仓张数
    = [max (0.1 x (1 + 0.0225), 0.15 - 140/8640) + 0.0225] x 0.1 x 100
    = 1.56296 BTC
    买方(看涨、看跌)维持保证金 0  
    看涨期权卖方维持保证金 BTCUSD期权维持保证金 = (0.075 + 期权标记价格) x合约乘数x持仓张数*;

    ETHUSD期权维持保证金 = (0.1 + 期权标记价格) x合约乘数x持仓张数*;

    EOSUSD期权维持保证金 = (0.125 + 期权标记价格) x合约乘数x持仓张数*
    假设现在BTCUSD指数是$6000,你卖出了100张看涨期权。当前BTCUSD-20200327-6000-C的标记价格为0.0575 BTC。
    看涨期权的卖方:
    维持保证金 = (0.075 + 标记价格) x合约乘数x持仓张数
    = (0.075 + 0.0575) x 0.1 x 100
    = 1.325 BTC
    看跌期权卖方维持保证金 BTCUSD期权维持保证金 = (0.075 x (1 + 期权标记价格) + 期权标记价格) x合约乘数x持仓张数*;
    ETHUSD期权维持保证金 = (0.1 x (1 + 期权标记价格) + 期权标记价格) x合约乘数x持仓张数*;
    EOSUSD期权维持保证金 = (0.125 x (1 + 期权标记价格) + 期权标记价格) x合约乘数x持仓张数*
    假设现在BTCUSD指数是$9500,你卖出了100张看跌期权。当前BTCUSD-20200515-9000-P的标记价格为0.0725 BTC。
    看跌期权的卖方:
    维持保证金 = (0.075 x (1 + 标记价格) + 标记价格) x合约乘数x持仓张数
    = (0.075 x (1 + 0.0725) + 0.0725) x 0.1 x100
    = 1.52938 BTC
    展开全文
  • 基于不付息的欧式期权看涨BSM公式 假定股票服从下列微分方程: 期权定价公式: 二.蒙特卡洛模拟 import numpy as np import math from time import time np.random.seed(20000) t0=time() ...

    一.基于不付息的欧式期权看涨BSM公式

    假定股票服从下列微分方程:

    期权定价公式:

    二.蒙特卡洛模拟

     

    import numpy as np
    import math
    from time import time
    
    np.random.seed(20000)
    
    
    t0=time()
    
    s0=100.0;K=105.0;T=1.0;r=0.05;sigma=0.2
    m=50;dt=T/m;I=250
    
    S=np.zeros((m+1,I))   
    S[0]=s0
    for t in range(1,m+1):
        z=np.random.standard_normal(I)
        S[t]=S[t-1]*np.exp((r-0.5*sigma**2)*dt+ sigma *math.sqrt(dt)*z)
    
    c0=np.exp(-r*T)*np.sum( np.maximum(S[-1]-K,0))/I
    
    tnp1=time()-t0
    
    print(c0,tnp1)

    7.124219040864565 0.0

      

    转载于:https://www.cnblogs.com/jin-liang/p/8981542.html

    展开全文
  • 文献[1]给出了买入和卖出期权定价的基本概念、资产定价定理和资产定价的数学结构,本文进一步阐述了欧式买入和卖出期权定价的基本原理及其数学模型,并导出Slack-Scholes期权定价公式
  • 该函数根据 Heston 和 Nandi(2000) 的 GARCH 期权定价公式计算看涨期权的价格。 该函数的输入是:标的资产的当前价格、执行价格、标的资产的无条件方差、到期时间(以天为单位)和每日无风险利率。
  • 基于Black-scholes公式下美式期权价格的计算 bs模型计算
  • 在对求解期权定价B- S方程的积分变换中,运用残数定理把公式中的两个积分式子化简为被积函数衰减较快的函数积分,提高了数值计算效率并缩短了计算时间,还为投资者快速计算期权价值节约了时间.
  • 期权定价模型为期权等金融衍生工具定价问题的研究带来了创新,但是该模型的一些基本假设与现实情况不符,使得由此计算出来的期权价格和实际金融市场上的期权价格有较大出入。作者通过改变无交易成本和无红利支付这2...
  • 前言:很多人都了解Black-Scholes公式,但是关于这个公式具体应该怎么用,要代入哪些变量计算,还不是非常清楚。 本文用python编程,代入变量具体计算B-S公式的隐含波动率,并且会指明哪些变量用哪些值代入。 B-S...

    前言:很多人都了解Black-Scholes公式,但是关于这个公式具体应该怎么用,要代入哪些变量计算,还不是非常清楚。
    本文用python编程,代入变量具体计算B-S公式的隐含波动率,并且会指明哪些变量用哪些值代入。

    B-S公式:
    在这里插入图片描述

    C:期权的理论价值
    S:标的证券的当前价格
    K:期权的行权价
    r:无风险利率
    σ:股票收益率的波动率
    T:期权有效期限

    并且期权的理论价值C与期权股票收益率的波动率σ呈反比,σ越大,期权理论价值越小。

    计算代码如下:
    以上证50ETF购6月,行权价为2.05为例。
    得到2019年3月25日收盘时,上证50ETF的价格为0.9551,期权价格为0.6750,隐含波动率为35%,剩余交易日为63天。
    需要特别说明的是,

    1. 50ETF标的价格S取的是华夏上证50ETF,510050,收盘价为0.9551;
    2. T取的是期权剩余有效期限t与一年交易日的比值,T = t/252,认为一年平均有252个交易日;
    3. 无风险利率取的是余额宝的最新7日年化收益率,2.51%,当然可以取最新国债收益率或者国开债,whatever。

    代码如下

    from math import *
    from scipy.stats import *
    
    def bs_call_value(target_price, strike_price, rf_rate, maturity, volatility):
        d1 = log(target_price/strike_price, e) + (rf_rate + pow(volatility, 2))*maturity
        d1 = d1/(volatility * maturity ** 0.5)
        d2 = d1 - volatility * maturity ** 0.5
        call_value = target_price * norm.cdf(d1, 0, 1) - strike_price * pow(e, -rf_rate * maturity) * norm.cdf(d2, 0, 1)
        return call_value
    
    
    if __name__ == "__main__":
        target_price = 2.702
        strike_price = 2.05
        rf_rate = 0.025
        maturity = 63/252
        call_value = 0.6750
        volatility = 0
        while True:
            volatility += 0.001
            print(volatility, abs(bs_call_value(target_price, strike_price, rf_rate, maturity, volatility) - call_value))
            if  abs(bs_call_value(target_price, strike_price, rf_rate, maturity, volatility) - call_value) <= 0.001:
                break
        print(volatility)
    

    计算出隐含波动率为35.2%。因为是暴力搜索隐含波动率,也可以根据隐含波动率与期权价值之间的单调性关系,设计二分法等算法进行求解,加快求解速度。

    展开全文
  • 在我们的定义中,定量分析是数学或统计学方法在市场数据上的应用。 ——John Forman ...欧式期权价值的计算。通过蒙特卡罗技术,模拟股票在一段时间中变化。 像Black-Scholes-Merton(1973)这样有深远影响...
  • 此代码计算股息支付股票的看涨期权和看跌期权的价格
  • 期权定价 期权定价(Option Valuation)...布莱克-斯科尔斯公式 1997年10月10日,第二十九届诺贝尔经济学奖授予了两位美国学者,哈佛商学院教授罗伯特·默顿(RoBert Merton)和斯坦福大学教授迈伦·斯克尔斯(Myron Sc...
  • Black-Scholes期权定价 公式以及 McDonald和 Siegel是否继续生产期权计算公式,所以计算结果比基于传统的现金流量图 的 NPV方法更加客观、科学,同时按照风险投资经验法则计算出的股权占有比例合理且易于接 受,可为...
  • 在基于傅立叶变换的欧式和美式期权定价中满足PIDE的财务索赔的近似形式特征公式已完成。 用于研究欧洲期权定价的基于数字的傅立叶变换算法FFT已扩展到正在研究的模型。 通过将溢价添加到欧洲看涨期权价格,该算法...
  • 期权的内涵价值计算

    2020-12-09 20:57:42
    我是这么记忆这个公式的, 看涨期权 是 买权, 买的话肯定希望价格越低越好,看跌期权 是 卖权, 卖的话肯定希望价格越高越好。 那么计算的话就把期望是价格高的放在前边。 买 期望资产价格高, 卖期望执行价格高...
  • 期货 公式:ContractValue * ...期权 公式: Buy Options:0 Sell Options:Max(①,②) ①Settlement Price * Underlying Future Contract LotSize + Underlying Future Contract Margin - 1/2 * Out-of-the
  • 目录 QuantLib 金融计算——案例之普通欧式期权分析 概述 普通欧式期权公式法定价 1. 配置期权合约条款 2. 构建期权对象 3. 配置定价引擎 4. 计算 题外话:天数计算规则 Quote ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 104
精华内容 41
关键字:

期权计算公式