Como um programa Python é executado
Um programa Python é um arquivo de texto formado por instruções. O Python o lê de cima para baixo e executa uma instrução por vez, sem código extra: o arquivo main.py é o programa. Clique em Run ou digite python main.py no terminal.
bid = 184.25
ask = 184.50
print(ask - bid) # 0.25Instruções e expressões
Uma expressão produz um valor, como ask - bid ou 2 * 3. Uma instrução faz algo, como bid = 184.25 ou print(bid). Cada instrução fica em sua própria linha, e o fim da linha encerra a instrução: sem ponto e vírgula. Quando uma instrução é longa demais, envolva-a em parênteses e continue nas linhas seguintes.
total_cost = (
price * quantity
+ commission
+ exchange_fee
)Comentários e docstrings
Tudo o que vem depois de # até o fim da linha é um comentário: o Python o ignora. Use comentários para explicar por que o código faz algo, não para repetir o que ele faz. Uma string entre aspas triplas no início de um arquivo ou função é uma docstring, a descrição oficial exibida por ferramentas e por help().
# Mid price: the fair value halfway between bid and ask.
mid = (bid + ask) / 2 # average of the two quotesA indentação faz parte da sintaxe
Onde outras linguagens usam chaves, o Python usa indentação. Uma linha que termina em dois-pontos abre um bloco, e o bloco são as linhas indentadas logo abaixo. Indente com quatro espaços e nunca misture tabs e espaços. O código colado na margem esquerda é código de nível superior.
def spread(bid, ask):
# both lines below are the block: indented by four spaces
width = ask - bid
return width
print(spread(184.25, 184.50)) # back at the left margin: 0.25IndentationError, e dois-pontos esquecidos causam um SyntaxError. O Python para antes de executar qualquer coisa, então leia primeiro o número da linha na mensagem. Configure seu editor para inserir espaços ao pressionar Tab.Variáveis e atribuição
nome = valor associa um nome a um valor. O sinal = significa atribuir, não igual: o Python calcula primeiro o lado direito e depois associa o nome ao resultado. Nomes diferenciam maiúsculas de minúsculas, podem ter letras, dígitos e sublinhados, não podem começar com dígito nem ser uma palavra reservada como if ou for. O estilo Python é snake_case, como last_price.
price = 184.25
quantity = 200
notional = price * quantity
price = 185.00 # rebinds price; notional is unchanged
quantity += 50 # shorthand for quantity = quantity + 50
print(notional) # 36850.0Aritmética e precedência de operadores
+,-e*somam, subtraem e multiplicam./é a divisão verdadeira e sempre dá um resultado decimal:7 / 2é3.5.//divide e arredonda para baixo;%dá o resto:7 // 2é3,7 % 2é1.**eleva a uma potência:1.05 ** 10capitaliza 5% dez vezes.
O Python segue a ordem da matemática: primeiro **, depois * e /, depois + e -. Assim, 2 + 3 * 4 é 14, enquanto (2 + 3) * 4 é 20. Na dúvida, use parênteses: não custam nada e deixam a intenção clara. Sublinhados dentro de números, como 10_000, são ignorados e tornam números grandes legíveis.
spread = ask - bid # 0.25
mid = (bid + ask) / 2 # 184.375
spread_bps = spread / mid * 10_000 # the spread in basis pointsExibindo resultados com print
print() escreve valores no terminal, separados por espaços. Texto entre aspas é uma string; os próximos tópicos tratam de strings e números em profundidade. Por enquanto, print é sua forma de olhar dentro do programa: imprima um valor, confira à mão e siga em frente.
print("bid", bid, "ask", ask)
print("mid", mid)No lab você escreverá pequenas fórmulas de preço usando apenas o que está nesta página: atribuição, aritmética e parênteses. A seguir: como o Python guarda números e por que 0.1 + 0.2 não é exatamente 0.3.
Lab: o que é avaliado
- Calcular o valor de uma posição com
notional25 pts - Encontrar o preço médio com
midpoint25 pts - Medir a diferença bid-ask com
spread25 pts - Expressar o spread em pontos-base com
spread_bps25 pts