How a monthly return is computed
A monthly return compares two prices. The first is the price at the open of a calendar month. The second is the price at the close of the same month. The return is the close divided by the open, minus one, written as a percentage.
The month is a calendar month, not a rolling window of thirty days. January always means the days of January. The app counts calendar months in UTC time. A return for one month therefore never overlaps with the return of the next month.
Small choices change the result. One source may take the open as the first price of the month. Another source may take the close of the previous month. For a market that trades all day, these two prices are almost the same, but they are not always identical.
The time zone also matters. A month that ends at midnight UTC ends at a different hour for a reader in another time zone. Check the time zone and the price source before you compare two tables.
- Return = close ÷ open − 1, as a percentage.
- The period is one calendar month in UTC.
- The open and the close come from one price source.
The partial current month
The newest month in a returns table is usually not finished. Its “return” is a month-to-date value. It compares the latest known price with the open of the month.
A month-to-date value changes every time the price changes. It can move from positive to negative and back within one day. Only the close of the month fixes it.
Do not compare a partial month with complete months as if they were equal. A partial month has had fewer days to move. It also has not yet seen the events that fall at the end of the month.
Check whether each statistic on a page includes the current month. An average of a month column can change when the current year enters the calculation. Good tables mark the partial month so that the reader can see it.
A month-to-date number is a progress report. The month return is known only at the close.
Reading the year-by-month grid
The usual layout puts years in rows and months in columns. Each cell holds the return of one month in one year. Reading across a row shows one year. Reading down a column shows one calendar month over many years.
The app adds a yearly figure for each row. It is the year-to-date return, built by multiplying the monthly returns. It also shows an average and a median for each month column.
Average and median answer different questions. The average adds all values and divides by their count, so one extreme month pulls it far. The median is the middle value after sorting, so one extreme month changes it little. When the two differ a lot, a few large months drive the average.
Look at the spread, not only at the center. A column where values range from deep losses to large gains tells a different story from a column where values sit close together, even if both have the same average.
The block below shows dated figures from the app for the returns table. Read them with the definitions above in mind.
Compounding and drawdowns
Monthly returns multiply. They do not add. A gain of 50 percent followed by a loss of 50 percent does not return to the start. It ends 25 percent below the start. The loss acts on a larger base.
The same logic explains why recovery needs more than the loss. A fall of 50 percent needs a gain of 100 percent to return to the old level. A table that lists monthly percentages does not show this asymmetry by itself.
The yearly figure in the app follows this rule. It takes each monthly return, converts it to a growth factor, multiplies the factors and converts the result back to a percentage. If you add the monthly percentages by hand, you get a different and wrong yearly number.
A monthly figure also hides what happened inside the month. A month can close with a small gain after a deep fall in the middle. A drawdown is the fall from a peak to a later low. Monthly closes can miss it completely.
If you want to judge risk, add a measure of the largest intra-month fall or of volatility. Returns tell you where the month ended. They do not tell you how hard the path was.
Add growth factors, not percentages. Percentages of different bases do not add.
Why the sample is small
Each calendar month has exactly one observation per year. The bitcoin market is young, so the number of years is small. A column of a monthly returns table therefore holds only a handful of values compared with what a statistician usually wants.
With few values, one extreme year dominates. If one year had an unusually large move in a given month, the average of that column reflects that single year. Remove the year, and the picture changes.
The observations are also not independent. Bitcoin has moved in multi-year cycles. Neighboring months share the same phase of the cycle. Twelve months of one year are not twelve separate experiments.
A simple check helps. Count how many values sit behind a statistic. Then ask how much the statistic changes when you drop the single highest and the single lowest value. If it changes a lot, the statistic is fragile.
Early years, market size and scale
Percent returns hide the size of the market. In the early years, bitcoin traded in a small and thin market. A modest amount of money could move the price by a large percentage. The same amount of money moves a large market by a much smaller percentage.
As a result, the largest monthly percentages in a table often come from the early rows. These values enter the average of a column with full weight. A column average can therefore describe a market that was much smaller than today’s market.
Two simple checks reduce this problem. First, read the median, which resists large values. Second, compare the recent rows with the older rows. If the recent rows look calmer, a combined average mixes two different markets.
Some analysts use logarithmic returns for this reason. A logarithmic return adds across months, and it treats gains and losses in a symmetric way. The table in the app uses ordinary percentage returns, so convert with care if you compare it with a source that uses logarithms.
Seasonality claims and their limits
Seasonality means that a calendar period tends to behave in a similar way from year to year. Online posts often name a month as “strong” or “weak” based on the average of its column.
Four limits apply to such claims. The first is the small sample described above. The second is multiple comparison. A table has twelve columns. If you search twelve columns for a pattern, some column will look special by chance alone.
The third limit is a change in regime. The investor base, the products that give access to bitcoin and the macro setting have changed since the early years. A pattern from the early years may describe a market that no longer exists.
The fourth limit is the link with cycles. If a cycle turning point fell in one month by chance, that month inherits the cycle effect and looks seasonal. The calendar was not the cause.
A fair statement is descriptive: in the years covered by the table, this month had these returns. A claim that the month will repeat the pattern is a forecast, and the table cannot support it.
A table with twelve columns will always show one column that looks unusual. Unusual is not the same as predictive.
Using monthly returns responsibly
Monthly returns are good for one job: they describe the range of outcomes that a calendar month has had. Use them to set expectations about dispersion. A month can produce large gains and large losses, and the table shows how wide that range has been.
Compare a month with the rest of the same year, not only with the same month of other years. Place the year in its cycle. Ask whether the market was in a long rise, a long fall or a range.
Add the events that can move a month: policy meetings, data releases and token or fund events. The economic calendar on this site lists many of them. A cluster of events can explain a month better than the calendar name of the month.
Finally, compare bitcoin with another asset. The Ethereum table uses the same method. Differences between the two tables help you see which patterns belong to one asset and which belong to the whole market.
Checklist
- Check that the current month is marked as partial.
- Compare the average with the median for each month.
- Count how many years sit behind a statistic.
- Multiply monthly growth factors, never add percentages.
- Describe past months; do not forecast with them.
Questions
How is a monthly return calculated?
Divide the price at the close of a calendar month by the price at its open, subtract one, and write the result as a percentage. The app counts calendar months in UTC. The newest month is partial until it closes, so its value is month-to-date.
Why is the yearly return not the sum of the months?
Returns compound. Each month acts on the value left by the previous month. The correct yearly figure multiplies the monthly growth factors. Adding percentages ignores the change of base, so the sum can differ a lot from the true yearly result.
Do monthly returns prove that some months are strong?
No. Each month has one value per year, so the sample is small. Twelve columns also invite chance patterns, and the market has changed since the early years. A table describes what happened. It cannot show that a month will repeat its past behavior.
Why does the average differ from the median?
The average is pulled by extreme values. The median is the middle value after sorting, so it resists them. A large gap between the two means that a few big months drive the average. In that case, trust the median more and look at the spread.