RSI Calculator using Python | Calculate Relative Strength Index


RSI Calculator for Python Developers

An expert tool to calculate the Relative Strength Index and understand its Python implementation.

RSI Financial Calculator



Enter a series of closing prices separated by commas. At least 15 values are recommended for a 14-day period.



The look-back period for the calculation. The standard is 14.


Relative Strength Index (RSI)

Average Gain

Average Loss

Relative Strength (RS)

Formula: RSI = 100 – (100 / (1 + RS)), where RS = Average Gain / Average Loss.

What is the Relative Strength Index (RSI)?

The Relative Strength Index (RSI) is a momentum oscillator used in technical analysis that measures the speed and magnitude of recent price changes to evaluate overbought or oversold conditions in the price of a stock or other asset. The RSI is displayed as an oscillator (a line graph that moves between two extremes) and can have a reading from 0 to 100.

Traditionally, an asset is considered overbought when the RSI is above 70 and oversold when it is below 30. These levels can trigger signals to buy or sell. For anyone looking to calculate RSI using Python, it’s crucial to understand this core concept, as the script will essentially quantify this market momentum.

The RSI Formula and Python Calculation

The RSI calculation is a two-step process. First, you calculate the Relative Strength (RS), which is the ratio of average gains to average losses over a specified period. Then, you plug the RS value into the RSI formula to normalize the output to a 0-100 range.

The primary formula is:

RSI = 100 – [100 / (1 + RS)]

Where:

RS = Average Gain / Average Loss

The initial average gain and loss are simple averages for the chosen period. Subsequent calculations use a smoothed method, which is why implementing it in Python requires careful handling of the series data.

Variable Explanations
Variable Meaning Unit Typical Range
Price Data A series of closing prices for an asset. Currency (e.g., USD, EUR) Any positive number
Period (N) The look-back period for calculating averages. Days / Periods Typically 14, but can be adjusted (e.g., 7, 21).
RS Relative Strength; the core momentum ratio. Unitless Ratio 0 to ∞
RSI The final normalized momentum indicator. Index Value 0 to 100

Practical Examples of Calculating RSI

Let’s walk through an example using a 5-day period for simplicity with the prices: 10, 12, 11, 13, 15.

Example 1: Initial RSI Calculation

  • Inputs: Prices =, Period = 4
  • Changes: [+2, -1, +2, +2]
  • Gains:, Losses:
  • Average Gain: (2+0+2+2) / 4 = 1.5
  • Average Loss: (0+1+0+0) / 4 = 0.25
  • RS: 1.5 / 0.25 = 6
  • Result (RSI): 100 – (100 / (1 + 6)) = 85.71

Example 2: Interpreting the Result

An RSI of 85.71 is well above the 70 threshold, indicating a strong upward momentum and a potentially overbought condition. A Python script would automate these steps, making it easy to analyze large datasets. You can see how a Python trading guide leveraging RSI can help build automated strategies based on these values.

How to Use This RSI Calculator

  1. Enter Price Data: Paste your comma-separated list of closing prices into the “Price Data” text area. Ensure the data is in chronological order.
  2. Set the Period: Adjust the RSI period if needed. 14 is the standard for swing trading, but day traders might use a shorter period like 9.
  3. Calculate: Click the “Calculate RSI” button.
  4. Interpret Results: The calculator will display the final RSI value, along with the intermediate Average Gain, Average Loss, and RS. Use these values to assess market momentum. An RSI above 70 suggests an overbought market, while below 30 suggests an oversold market.

Key Factors That Affect RSI

  • Calculation Period (N): A shorter period makes the RSI more sensitive to recent price changes, leading to more frequent swings between overbought and oversold. A longer period produces a smoother line with fewer signals.
  • Volatility: High-volatility assets will naturally cause the RSI to hit the 70 and 30 levels more frequently. It’s important to consider the asset’s typical behavior.
  • Strong Trends: In a strong uptrend, the RSI can remain in the overbought territory for extended periods without a price reversal. The same is true for downtrends and oversold conditions.
  • Calculation Method: While the core formula is standard, some platforms use a Simple Moving Average (SMA) for the initial calculation, while others use an Exponential Moving Average (EMA). Our calculator uses the Wilder’s Smoothing Method (a form of EMA), which is the standard. This is a key detail when you calculate RSI using Python to match other charting platforms.
  • Price Gaps: Large price gaps up or down can cause a sudden spike or drop in the RSI, which may not accurately reflect the underlying momentum.
  • Data Source: The accuracy of your RSI calculation depends entirely on the quality of the closing price data you provide.

Frequently Asked Questions about RSI in Python

1. What does an RSI of 50 mean?

An RSI of 50 is considered the centerline and indicates a neutral state where there is no significant upward or downward momentum.

2. Can RSI stay overbought for a long time?

Yes, in a strong uptrend, an asset’s RSI can remain at or above 70 for an extended period. This is why RSI should not be used as the sole indicator for a sell signal.

3. What is the best period to use for RSI?

The standard is 14 periods, but it depends on your trading style. Swing traders often use 14, while scalpers might use a shorter period like 5 or 7 for more sensitivity.

4. How do I handle the first calculation in Python?

The first “Average Gain” and “Average Loss” for the initial period are simple averages. Subsequent calculations must use a smoothing formula (e.g., Wilder’s method) that incorporates the previous average. Check out a guide on algorithmic trading using RSI in Python for code examples.

5. Is RSI a leading or lagging indicator?

RSI is a lagging indicator because it uses past price data for its calculations. However, it’s used to anticipate potential future reversals, giving it some leading characteristics.

6. What is RSI divergence?

Divergence occurs when the price makes a new high or low, but the RSI does not. For example, if the price makes a new high but the RSI makes a lower high, it’s called bearish divergence and can signal a potential reversal downwards.

7. How is the average loss calculated?

The average loss is the average of the *absolute values* of the price drops over the period. It is always a positive number.

8. Are there Python libraries to calculate RSI?

Yes, libraries like `pandas_ta`, `ta`, and `talib` have built-in functions to calculate RSI using Python, which simplifies the process significantly and helps avoid common implementation errors.

© 2026 Financial Calculators Inc. For educational purposes only. Not financial advice.



Leave a Reply

Your email address will not be published. Required fields are marked *