Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

exponential_moving_average returns an incorrect second value when window_size=1

Aberta Para iniciantes
#15,449 1 comentário 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
88/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
python
Domínio
fintech-quant

Direção de pesquisa

Comece em financial/exponential_moving_average.py e execute a reprodução relatada com window_size=1. Verifique o ramo de inicialização em torno de i <= window_size e o doctest existente para obter contexto. Está concluído quando exponential_moving_average retornar [10.0, 20.0, 30.0] para essa entrada, preservando o comportamento existente de window_size=3.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug
Repository commit

7f81fcd68c195ce71534de09d1b69d2b61665902

Python version (python --version)

Python 3.14.7

Dependencies version (pip freeze)

No third-party dependencies are required for this reproduction; the function uses only the Python standard library.

Expected behavior

For window_size=1, the documented smoothing factor is:

alpha = 2 / (1 + window_size) = 1

Therefore, the documented recurrence should return each input value unchanged.

For input [10.0, 20.0, 30.0], the expected output is:

[10.0, 20.0, 30.0]

Actual behavior

The function returns [10.0, 15.0, 30.0], so the second value is incorrect.

Reproduction from the repository root:

from financial.exponential_moving_average import exponential_moving_average

actual = list(
    exponential_moving_average(iter([10.0, 20.0, 30.0]), window_size=1)
)
print(actual)
# [10.0, 15.0, 30.0]

assert actual == [10.0, 20.0, 30.0]
# AssertionError

The initialization branch uses if i <= window_size. At i=1 and window_size=1, it calculates (moving_average + stock_price) * 0.5, producing 15.0 instead of applying alpha=1.

The existing doctest uses window_size=3 and passes, but does not cover this case.

The unmodified source file at the reported commit was tested with Python 3.14.7.

Linguagem predominante
Python
Estrelas
225k
Forks
51.1k
Merge médio
18h 46min
PRs com merge (30d)
176

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de TheAlgorithms/Python

Todas as issues de TheAlgorithms/Python

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.