# i05nagai/mafipy

mafipy/function/sabr.py

### Summary

F
1 mo

#### File sabr.py has 1413 lines of code (exceeds 250 allowed). Consider refactoring. Open

#!/bin/python
# -*- coding: utf-8 -*-

from __future__ import division, print_function, absolute_import
import math
Found in mafipy/function/sabr.py - About 3 days to fix

#### Cyclomatic complexity is too high in function sabr_implied_vol_hagan. (12) Open

def sabr_implied_vol_hagan(
underlying, strike, maturity, alpha, beta, rho, nu):
"""sabr_implied_vol_hagan
calculate implied volatility under SABR model.



## Cyclomatic Complexity

Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

Construct Effect on CC Reasoning
if +1 An if statement is a single decision.
elif +1 The elif statement adds another decision.
else +0 The else statement does not cause a new decision. The decision is at the if.
for +1 There is a decision at the start of the loop.
while +1 There is a decision at the while statement.
except +1 Each except branch adds a new conditional path of execution.
finally +0 The finally block is unconditionally executed.
with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
assert +1 The assert statement internally roughly equals a conditional statement.
Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

#### Cyclomatic complexity is too high in function sabr_payers_swaption_delta. (6) Open

def sabr_payers_swaption_delta(
init_swap_rate, option_strike, swap_annuity, option_maturity,
alpha, beta, rho, nu):
"""sabr_payers_swaption_delta
calculate payer's swaption delta under SABR model.

## Cyclomatic Complexity

Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

Construct Effect on CC Reasoning
if +1 An if statement is a single decision.
elif +1 The elif statement adds another decision.
else +0 The else statement does not cause a new decision. The decision is at the if.
for +1 There is a decision at the start of the loop.
while +1 There is a decision at the while statement.
except +1 Each except branch adds a new conditional path of execution.
finally +0 The finally block is unconditionally executed.
with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
assert +1 The assert statement internally roughly equals a conditional statement.
Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

#### Function sabr_implied_vol_hagan has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring. Open

def sabr_implied_vol_hagan(
underlying, strike, maturity, alpha, beta, rho, nu):
"""sabr_implied_vol_hagan
calculate implied volatility under SABR model.


Found in mafipy/function/sabr.py - About 1 hr to fix

# Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

### A method's cognitive complexity is based on a few simple rules:

• Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
• Code is considered more complex for each "break in the linear flow of the code"
• Code is considered more complex when "flow breaking structures are nested"

#### Function sabr_implied_vol_hagan_fhess_by_underlying has 35 lines of code (exceeds 25 allowed). Consider refactoring. Open

def sabr_implied_vol_hagan_fhess_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""sabr_implied_vol_hagan_fhess_by_underlying
second derivative of Hagan's SABR implied volatility formula
with respect to underlying.
Found in mafipy/function/sabr.py - About 1 hr to fix

#### Function sabr_implied_vol_hagan_fhess_by_strike has 35 lines of code (exceeds 25 allowed). Consider refactoring. Open

def sabr_implied_vol_hagan_fhess_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""sabr_implied_vol_hagan_fhess_by_strike
second derivative of Hagan's SABR implied volatility formula
with respect to strike.
Found in mafipy/function/sabr.py - About 1 hr to fix

#### Function sabr_implied_vol_hagan has 27 lines of code (exceeds 25 allowed). Consider refactoring. Open

def sabr_implied_vol_hagan(
underlying, strike, maturity, alpha, beta, rho, nu):
"""sabr_implied_vol_hagan
calculate implied volatility under SABR model.


Found in mafipy/function/sabr.py - About 1 hr to fix

#### Function sabr_payers_swaption_value has 8 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_payers_swaption_value(
Found in mafipy/function/sabr.py - About 1 hr to fix

#### Function sabr_receivers_swaption_value has 8 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_receivers_swaption_value(
Found in mafipy/function/sabr.py - About 1 hr to fix

#### Function sabr_payers_swaption_delta has 8 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_payers_swaption_delta(
Found in mafipy/function/sabr.py - About 1 hr to fix

#### Function sabr_implied_vol_hagan has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_implied_vol_hagan(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A2_fprime_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A2_fprime_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A2_fhess_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A2_fhess_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A3_fprime_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A3_fprime_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A11 has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A11(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function sabr_implied_vol_hagan_fprime_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_implied_vol_hagan_fprime_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A11_fprime_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A11_fprime_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A4_fprime_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A4_fprime_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A4_fhess_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A4_fhess_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function sabr_pdf has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_pdf(underlying, strike, maturity, alpha, beta, rho, nu):
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A11_fprime_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A11_fprime_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A1_fhess_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A1_fhess_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function sabr_implied_vol_hagan_fhess_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_implied_vol_hagan_fhess_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A12_fhess_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A12_fhess_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A1 has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A1(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A2_fhess_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A2_fhess_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A4_fhess_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A4_fhess_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A11_fhess_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A11_fhess_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A12_fhess_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A12_fhess_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A31_fhess_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A31_fhess_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function sabr_implied_vol_hagan_fprime_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_implied_vol_hagan_fprime_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A11_fhess_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A11_fhess_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A12_fprime_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A12_fprime_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A1_fhess_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A1_fhess_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A1_fprime_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A1_fprime_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A2_fprime_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A2_fprime_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A4_fprime_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A4_fprime_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A31 has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A31(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A31_fhess_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A31_fhess_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A1_fprime_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A1_fprime_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A2 has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A2(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A3_fhess_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A3_fhess_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function sabr_cdf has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_cdf(underlying, strike, maturity, alpha, beta, rho, nu):
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A31_fprime_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A31_fprime_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A3 has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A3(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A3_fhess_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A3_fhess_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A4 has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A4(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A12 has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A12(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A31_fprime_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A31_fprime_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A12_fprime_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A12_fprime_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function _sabr_implied_vol_hagan_A3_fprime_by_underlying has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def _sabr_implied_vol_hagan_A3_fprime_by_underlying(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function sabr_implied_vol_hagan_fhess_by_strike has 7 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_implied_vol_hagan_fhess_by_strike(
Found in mafipy/function/sabr.py - About 50 mins to fix

#### Function sabr_atm_implied_vol_hagan has 6 arguments (exceeds 4 allowed). Consider refactoring. Open

def sabr_atm_implied_vol_hagan(
Found in mafipy/function/sabr.py - About 45 mins to fix

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def sabr_implied_vol_hagan_fhess_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""sabr_implied_vol_hagan_fhess_by_strike
second derivative of Hagan's SABR implied volatility formula
with respect to strike.
Found in mafipy/function/sabr.py and 1 other location - About 6 days to fix
mafipy/function/sabr.py on lines 1535..1607

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 637.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def sabr_implied_vol_hagan_fhess_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""sabr_implied_vol_hagan_fhess_by_underlying
second derivative of Hagan's SABR implied volatility formula
with respect to underlying.
Found in mafipy/function/sabr.py and 1 other location - About 6 days to fix
mafipy/function/sabr.py on lines 1403..1475

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 637.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def sabr_implied_vol_hagan_fprime_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""sabr_implied_vol_hagan_fprime_by_strike
first derivative of Hagan's SABR implied volatility formula
with respect to strike.
Found in mafipy/function/sabr.py and 1 other location - About 3 days to fix
mafipy/function/sabr.py on lines 1478..1532

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 335.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def sabr_implied_vol_hagan_fprime_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""sabr_implied_vol_hagan_fprime_by_underlying
first derivative of Hagan's SABR implied volatility formula
with respect to underlying.
Found in mafipy/function/sabr.py and 1 other location - About 3 days to fix
mafipy/function/sabr.py on lines 1346..1400

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 335.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A4_fhess_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A4_fhess_by_strike
See :py:func:_sabr_implied_vol_hagan_A4.


Found in mafipy/function/sabr.py and 1 other location - About 2 days to fix
mafipy/function/sabr.py on lines 1310..1343

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 270.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A4_fhess_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A4_fhess_by_underlying
See :py:func:_sabr_implied_vol_hagan_A4.


Found in mafipy/function/sabr.py and 1 other location - About 2 days to fix
mafipy/function/sabr.py on lines 1239..1272

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 270.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A31_fhess_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A31_fhess_by_strike
See :py:func:_sabr_implied_vol_hagan_A31.


Found in mafipy/function/sabr.py and 1 other location - About 2 days to fix
mafipy/function/sabr.py on lines 983..1014

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 224.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A31_fhess_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A31_fhess_by_underlying
See :py:func:_sabr_implied_vol_hagan_A31.


Found in mafipy/function/sabr.py and 1 other location - About 2 days to fix
mafipy/function/sabr.py on lines 921..952

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 224.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A31_fprime_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A31_fprime_by_strike
See :py:func:_sabr_implied_vol_hagan_A31.


Found in mafipy/function/sabr.py and 1 other location - About 1 day to fix
mafipy/function/sabr.py on lines 955..980

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 161.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A31_fprime_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A31_fprime_by_underlying
See :py:func:_sabr_implied_vol_hagan_A31.


Found in mafipy/function/sabr.py and 1 other location - About 1 day to fix
mafipy/function/sabr.py on lines 893..918

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 161.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A1_fhess_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A1_fhess_by_strike
See :py:func:_sabr_implied_vol_hagan_A1.


Found in mafipy/function/sabr.py and 1 other location - About 1 day to fix
mafipy/function/sabr.py on lines 679..708

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 144.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A1_fhess_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A1_fhess_by_underlying
See :py:func:_sabr_implied_vol_hagan_A1.


Found in mafipy/function/sabr.py and 1 other location - About 1 day to fix
mafipy/function/sabr.py on lines 619..648

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 144.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A3_fhess_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A3_fhess_by_strike
See :py:func:_sabr_implied_vol_hagan_A3.


Found in mafipy/function/sabr.py and 1 other location - About 6 hrs to fix
mafipy/function/sabr.py on lines 1133..1157

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 101.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A3_fhess_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A3_fhess_by_underlying
See :py:func:_sabr_implied_vol_hagan_A3.


Found in mafipy/function/sabr.py and 1 other location - About 6 hrs to fix
mafipy/function/sabr.py on lines 1081..1105

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 101.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A1_fprime_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A1_fprime_by_underlying
See :py:func:_sabr_implied_vol_hagan_A1.


Found in mafipy/function/sabr.py and 1 other location - About 5 hrs to fix
mafipy/function/sabr.py on lines 591..616

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 96.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A1_fprime_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A1_fprime_by_strike
See :py:func:_sabr_implied_vol_hagan_A1.


Found in mafipy/function/sabr.py and 1 other location - About 5 hrs to fix
mafipy/function/sabr.py on lines 651..676

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 96.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A3_fprime_by_strike(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A3_fprime_by_strike
See :py:func:_sabr_implied_vol_hagan_A3.


Found in mafipy/function/sabr.py and 1 other location - About 3 hrs to fix
mafipy/function/sabr.py on lines 1108..1130

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 68.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

def _sabr_implied_vol_hagan_A3_fprime_by_underlying(
underlying, strike, maturity, alpha, beta, rho, nu):
"""_sabr_implied_vol_hagan_A3_fprime_by_underlying
See :py:func:_sabr_implied_vol_hagan_A3.


Found in mafipy/function/sabr.py and 1 other location - About 3 hrs to fix
mafipy/function/sabr.py on lines 1056..1078

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 68.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

    numerator2 = math.sqrt(1.0 - 2 * rho * z + z * z) + z - rho
Found in mafipy/function/sabr.py and 1 other location - About 2 hrs to fix
mafipy/function/tests/test_sabr.py on lines 102..102

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 53.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Identical blocks of code found in 2 locations. Consider refactoring. Open

    term3 = (2.0 - 3.0 * rho * rho) * nu * nu / 24.0
Found in mafipy/function/sabr.py and 1 other location - About 1 hr to fix
mafipy/function/sabr.py on lines 1201..1201

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 41.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Identical blocks of code found in 2 locations. Consider refactoring. Open

    term3 = (2.0 - 3.0 * rho * rho) * nu * nu / 24.0
Found in mafipy/function/sabr.py and 1 other location - About 1 hr to fix
mafipy/function/sabr.py on lines 260..260

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 41.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

    numerator2 = rho * beta * nu * alpha * (strike ** (-three_minus_beta_half))
Found in mafipy/function/sabr.py and 1 other location - About 1 hr to fix
mafipy/function/sabr.py on lines 1302..1303

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 39.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 2 locations. Consider refactoring. Open

    numerator2 = (rho * beta * nu * alpha
* (underlying ** (-three_minus_beta_half)))
Found in mafipy/function/sabr.py and 1 other location - About 1 hr to fix
mafipy/function/sabr.py on lines 1232..1232

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 39.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Similar blocks of code found in 3 locations. Consider refactoring. Open

    numerator33 = (2.0 - 3.0 * rho * rho) * nu * nu
Found in mafipy/function/sabr.py and 2 other locations - About 45 mins to fix
mafipy/function/tests/test_sabr.py on lines 113..113
mafipy/function/tests/test_sabr.py on lines 144..144

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 35.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Identical blocks of code found in 2 locations. Consider refactoring. Open

        factor2 = 1.0 if (abs(x - z) < 1E-10) else z / x
Found in mafipy/function/sabr.py and 1 other location - About 35 mins to fix
mafipy/function/sabr.py on lines 204..204

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 33.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Identical blocks of code found in 2 locations. Consider refactoring. Open

        factor2 = 1.0 if (abs(x - z) < 1E-10) else z / x
Found in mafipy/function/sabr.py and 1 other location - About 35 mins to fix
mafipy/function/sabr.py on lines 207..207

## Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

## Tuning

This issue has a mass of 33.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

## Refactorings

#### Invalid escape sequence '\l' Open

                    + \\frac{(1 - \\beta)^{2}}{24}\log^{2}
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \left(
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\s' Open

            \sigma_{B}(K, S; T)
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                        \log^{4}\\frac{S}{K}
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                    \log^{2}\\frac{S}{K}
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \left(
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                        \log^{4}\\frac{S}{K}
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\s' Open

                        \sqrt{1 - 2\\rho z + z^{2}} + z - \\rho
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\s' Open

                        \sqrt{1 - 2\\rho z + z^{2}} + z - \\rho
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \log
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                    \log^{4}\\frac{S}{K}
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \left(
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\s' Open

            := \sigma_{B}(S, S; T)
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

            \left[
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                        \log^{2}\\frac{S}{K}
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \left[
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

            \left(
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \left(
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                    \log\left( \\frac{S}{K} \\right),
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                    \left(
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \left(
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

            \left(
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \left(
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\e' Open

        \end{eqnarray}
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\s' Open

        \sigma_{ATM}(S; T)
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \log\left( \\frac{S}{K} \\right),
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \log\left( \\frac{S}{K} \\right),
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\s' Open

                \sqrt{1 - 2\\rho z + z^{2}} + z - \\rho
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                \log
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'

#### Invalid escape sequence '\l' Open

                    \log\left( \\frac{S}{K} \\right),
Found in mafipy/function/sabr.py by pep8

Invalid escape sequences are deprecated in Python 3.6.

Okay: regex = r'\.png$' W605: regex = '\.png$'