A comprehensive web application featuring financial mathematics calculators designed to help students studying for the Society of Actuaries (SOA) Exam FM.
Visit the live application: ActuarialCalc
ActuarialCalc provides interactive calculators for various financial mathematics concepts covered in the SOA Exam FM. The application allows users to perform complex actuarial calculations with ease, visualize payment schedules, and understand the underlying formulas.
- Convert between different interest rate types:
- Effective annual rate (i)
- Nominal annual rate with various compounding frequencies (i^(m))
- Force of interest (continuous compounding) (δ)
- Discount rate (d)
- Simple interest
- Display all equivalent rates with proper mathematical notation
- Calculate time value of money (future value and present value)
- Comprehensive formula references with explanations
- Calculate present values of regular and callable bonds
- Support for different bond types:
- Regular bonds with fixed coupon payments
- Callable bonds with multiple call dates and prices
- Premium/discount analysis
- Bond amortization schedules
- Book value tracking
- Cash flow visualization
- Interactive timeline diagrams
- Formula references with explanations
- Calculate present value, future value, payment amount, interest rate, or number of periods
- Support for different annuity types:
- Immediate (ordinary) annuities
- Annuities due (payments at beginning)
- Deferred annuities
- Support for different payment variations:
- Level (constant) payments
- Increasing (arithmetic) payments
- Geometric growth payments
- Interactive amortization/payment schedules
- Formula tooltips with explanations
- Interest rate conversions (effective, nominal, force of interest, discount rate)
- Adjustable payment frequency
-
Duration & Convexity Calculator
- Macaulay and Modified duration
- Convexity calculations
- Portfolio analysis
- First-order approximations
-
Immunization Calculator
- Redington and full immunization
- Asset allocation optimization
- Portfolio rebalancing
-
Advanced Interest Calculator
- Variable force of interest
- Real vs nominal rates
- Inflation adjustments
- Added proper mathematical notation for interest rates throughout the application
- Implemented superscript formatting for rate notation (e.g., i^(12) for monthly compounding)
- Enhanced display of conversion results with clear rate notation
- Updated dropdowns to include rate notation for better clarity
- Improved formula displays with proper mathematical symbols
- Frontend: React, TypeScript
- Styling: TailwindCSS
- Math Rendering: KaTeX, react-katex
- Math Calculations: mathjs
- Build Tool: Vite
- Node.js (v14 or higher)
- npm or yarn
-
Clone the repository
git clone https://github.com/brandostrong/ActuarialCalc.git cd ActuarialCalc
-
Install dependencies
npm install # or yarn
-
Start the development server
npm run dev # or yarn dev
-
Open your browser and navigate to
http://localhost:5173
npm run build
# or
yarn build
The built files will be in the dist
directory and can be deployed to any static hosting service.
This project can be easily deployed to GitHub Pages. For detailed instructions, see the GitHub Pages Deployment Guide.
In summary, you'll need to:
- Install the
gh-pages
package:npm install gh-pages --save-dev
- Update
vite.config.ts
to set the base path to your repository name - Add deployment scripts to
package.json
- Run
npm run deploy
to publish to GitHub Pages
Your site will be available at https://brandostrong.github.io/ActuarialCalc/
ActuarialCalc/
├── public/ # Static assets
│ └── calculator-icon.svg # Site favicon
├── src/ # Source code
│ ├── components/ # React components
│ │ ├── AmortizationTable.tsx # Displays payment schedules
│ │ ├── AnnuityCalculator.tsx # Main annuity calculator component
│ │ ├── BondCalculator.tsx # Bond valuation calculator
│ │ ├── BondVisualization.tsx # Bond cash flow diagrams
│ │ ├── FormulaTooltip.tsx # Tooltip component for formulas
│ │ ├── InterestRateCalculator.tsx # Interest rate conversion calculator
│ │ └── PerpetuityCalculator.tsx # Perpetuity calculator
│ ├── utils/ # Utility functions and types
│ │ ├── annuityCalculations.ts # Core annuity calculation functions
│ │ ├── bondCalculations.ts # Bond valuation functions
│ │ ├── formulaTooltips.ts # Formula explanations
│ │ ├── interestRateCalculations.ts # Interest rate conversion functions
│ │ └── types.ts # TypeScript type definitions
│ ├── App.tsx # Main application component
│ ├── index.css # Global styles
│ └── main.tsx # Application entry point
├── index.html # HTML template
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── vite.config.ts # Vite configuration
└── tailwind.config.js # TailwindCSS configuration
- Enter your interest rate
- Select the source rate type (effective, nominal, force of interest, etc.)
- If applicable, choose the compounding frequency
- Select the target rate type you want to convert to
- Click "Calculate" to see the conversion result
- View all equivalent rates by clicking "Show All Equivalent Rates"
- Calculate time value of money by clicking "Show Time Value Calculations"
- Select what you want to solve for (payment, present value, future value, interest rate, or periods)
- Choose the annuity type (immediate, due, or deferred)
- Select the variation type (level, increasing, or geometric)
- Enter the known values
- Click "Calculate" to get the result
- View the amortization/payment schedule by clicking "Show Amortization Table"
- Select the bond type (regular or callable)
- Enter the face value, coupon rate, and redemption value
- Enter the yield rate and number of periods
- For callable bonds, add call dates and prices
- Click "Calculate" to get:
- Bond price
- Premium/discount status
- Book value amortization schedule
- Cash flow visualization
The application includes a comprehensive set of formula references with explanations for:
- Bond pricing and valuation
- Present and future value formulas
- Interest rate conversions
- Increasing and geometric annuities
- Amortization calculations
The application implements various financial mathematics concepts including:
- Time value of money
- Interest rate conversions and equivalencies
- Annuities (immediate, due, deferred)
- Increasing and geometric payment patterns
- Amortization schedules
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Society of Actuaries (SOA) for the Exam FM curriculum
- The React and TypeScript communities for their excellent documentation
- TailwindCSS for the styling framework
- KaTeX for the mathematical typesetting