Divide by two a number in base -2
General


As per PEP 8 conventions, the variables in functions should be in lowercase.
Adding docstrings is recommended. PEP 257
Names should be short and meaningful. For example, convert_number_to_binary should actually be to_base_minus_two. Also, calculate_number should be from_base_minus_two
Use type hints
Instead of x == 0 python allows you to use use not x. Similarly, x != 0 can be replaced with x.
Envelop the main code inside if __name__ == '__main__':. This will prevent the code from being run if imported from another module.
Following  @Martin R's advice, you can change -2 to a constant BASE


Function solution

value = math.ceil(from_base_minus_two(A) / 2)
p = to_base_minus_two(value)
return p


Can be replaced with the one liner:

return to_base_minus_two(math.ceil(from_base_minus_two(a) / 2))


Function from_base_minus_two

total = 0
for i in range(0, len(a)):
    total += a[i] * BASE ** i
return total


Instead, you can use:

return sum(j * BASE ** i for i, j in enumerate(a)))


Function to_base_minus_two

The value you are finding isn't exactly binary. Change it to base_minus_two

You don't need to use

if number == 0:
    return base_minus_two


Automatically, the while loop will terminate immediately as number is 0, and will return base_minus_two which is []



Here's what the final code might look like:

import math
from typing import List


BASE = -2


def from_base_minus_two(a: List[int]) -&gt; int:
    """ Converts base 'BASE' to decimal """

    return sum(j * BASE ** i for i, j in enumerate(a))


def to_base_minus_two(number: int) -&gt; List[int]:
    """ Converts decimal to 'BASE' """

    base_minus_two = []

    while number:
        number, remainder = divmod(number, BASE)

        if remainder &lt; 0:
            number += 1
            remainder -= BASE

        base_minus_two.append(remainder)

    return base_minus_two


def solution(a: List[int]) -&gt; List[int]:
    """

    * Converts from 'BASE' to decimal
    * Divides the decimal by 2
    * Converts the decimal back to 'BASE'

    """

    return to_base_minus_two(math.ceil(from_base_minus_two(a) / 2))


if __name__ == '__main__':
    print(solution([1, 0, 0, 1, 1, 1]))