When I make a Tensor that requires_grad an attribute of an object and return a clone of it with an @property method, it does not obtain any gradient for backpropagation. However, the same computation does give gradients for other Tensors (v in the example below), eventhough they go through the same operations. Removing the clone() operation does work from the my_parameter() method does work. However, according to the documentation clone() should backpropagate changes to the original, and it does so for v. Could someone please hint me what I am missing?
import torch
import torch.nn as nn
class MyModule(nn.Module):
    def __init__(self):
        super().__init__()
        self.__my_parameter = nn.Parameter(torch.tensor([1.0], requires_grad=True))

    @property
    def my_parameter(self) -> torch.Tensor:
        return self.__my_parameter.clone()

v = torch.tensor([1.0], requires_grad=True)
my_module = MyModule()
loss = torch.sum(v.clone() + my_module.my_parameter)
loss.backward()
print(v.grad, my_module.my_parameter.grad)

Output:
tensor([1.]) None