# luna.financial.annuity_calculator

## ComparisonType Objects

`@enum.unique`

class ComparisonType(enum.Enum)

Enum for specifying comparison types in loan calculations.

### Values:

`RELATIVE_VALUE`

: Represents a relative value comparison.`ACTUAL_VALUE`

: Represents an actual value comparison.`ABSOLUTE_VALUE`

: Represents an absolute value comparison.

## LastPaymentTreatment Objects

`class LastPaymentTreatment(LunaModel)`

Model defining how the last payment in a loan is treated.

### Attributes:

`treatment_type`

(str): Type of the last payment treatment.`threshold`

(Decimal): Threshold for determining the treatment type.`writedown_amount`

(Decimal): Amount for writedown.

## RepaymentDetails Objects

`class RepaymentDetails(LunaModel)`

Model capturing details of loan repayments.

### Attributes:

`processing_date`

(date): The date when the repayment was processed.`repayment_due_date`

(date): The due date for the repayment.`repayment_amount`

(Decimal): The total repayment amount.`interest_payment`

(Decimal): The interest payment portion of the repayment.`capital_payment`

(Decimal): The capital payment portion of the repayment.`opening_balance`

(Decimal): The opening balance before the repayment.`closing_balance`

(Decimal): The closing balance after the repayment.`previous_closing_balance`

(Decimal): The previous closing balance before this repayment.

#### calc_annuity

`def calc_annuity(term: int, payment_period_rate: Decimal,`

balance: Decimal) -> SixteenDecimal

Calculates the annuity payment for a loan based on term, rate, and balance.

### Arguments:

`term`

(int): The term length of the loan.`payment_period_rate`

(Decimal): The payment period interest rate.`balance`

(Decimal): The initial loan balance.

### Returns:

`SixteenDecimal`

: The calculated annuity payment.

#### solve_for_term

`def solve_for_term(target_annuity: Decimal, balance: Decimal,`

payment_period_rate: Decimal) -> int | None

Determines the term length for a loan given target annuity, balance, and rate.

### Arguments:

`target_annuity`

(Decimal): The target annuity payment.`balance`

(Decimal): The initial loan balance.`payment_period_rate`

(Decimal): The payment period interest rate.

### Returns:

`int | None`

: The calculated term length or None if it cannot be determined.