如何在Python中求解step函数?

2024-04-30 06:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写一个期权交易程序。这个程序产生交易,然后确定基础股票的价格点,在这个价格点上特定的交易将是盈利的。在

我将尝试用短语表达问题,以便任何人,无论他们的选择知识如何,都可以提供解决方案。

一个示例交易包括买入n看跌期权和y买入。(其中n和{}是整数)。交易成本被称为变量cost_of_trade

如果cost_of_trade < profit_from_trade,这项交易是有利可图的


profit_of_trade = profit_from_calls + profit_from_puts

如果股票价格在到期时高于买入期权的执行价格,则:

profit_from_calls = (final_stock_price - calls.strike_price) * y)

其他:

profit_from_calls = 0

如果股票价格低于到期卖出的执行价,则:

profit_from_puts = (-final_stock_price + puts.strike_price) * n)

其他:

profit_from_puts = 0


我需要解这个方程,其中cost_of_trade == profit_from_trade。解这个方程应该得到两个值。我面临的根本问题是,我不知道如何用python可以解决的术语来表示这个等式。等式中使事情变得困难的if statement

在等式之外创建if语句并不是一个真正的选择。虽然对于这个简单的示例问题可能有意义,但在实际的程序中,有太多不同的交易和不同的交易组合,我必须编写1000+if statements,这不是我想做的事情。在


Tags: offrom程序示例if价格交易price
1条回答
网友
1楼 · 发布于 2024-04-30 06:28:06

你能解出你能计算的大多数东西,例如用二等分法…:

def bisection(f, a, b, TOL=0.001, NMAX=100):
    """
    Takes a function f, start values [a,b], tolerance value(optional) TOL and
    max number of iterations(optional) NMAX and returns the root of the equation
    using the bisection method.
    """
    n=1
    while n<=NMAX:
        c = (a+b)/2.0
        # decomment to learn more about the process
        # print "a=%s\tb=%s\tc=%s\tf(c)=%s"%(a,b,c,f(c))
        if f(c)==0 or (b-a)/2.0 < TOL:
            return c
        else:
            n = n+1
            if f(c)*f(a) > 0:
                a=c
            else:
                b=c
    return None

def solve(y, call_strike, call_premium, n, put_strike, put_premium):
    cost = y * call_premium + n * put_premium
    def net(fp):
        call_profit = max(fp-call_strike, 0)
        put_profit = max(put_strike-fp, 0)
        tot_profit = call_profit * y + put_profit * n
        return tot_profit - cost
    return bisection(net, 0, 2 * max(call_strike, put_strike))

if __name__ == '__main__':
    # an example...:
    print solve(12, 20.0, 3.0, 15, 25.0, 2.0)

有关bisection的原始代码和其他任意方程数值解的方法,请参见https://gist.github.com/swvist/3775568。在

相关问题 更多 >