Algos
Skew
Estratégia de três pernas para expressar uma visão de valor relativo entre duas opções do mesmo ativo-objeto, com o próprio ativo-objeto servindo como hedge de delta (ou vega). O algo gerencia as três pernas juntas para que a posição combinada mantenha o skew de volatilidade desejado.
Quando usar
- Você está operando um par de volatilidade no mesmo ativo-objeto e quer a posição delta-neutra ou vega-neutra.
- Quer que a plataforma coordene as execuções para que a estrutura permaneça balanceada.
- Está protegendo risco direcional enquanto expressa uma visão sobre o diferencial relativo de preço entre duas opções.
Início rápido
from investflex import AsyncInvestflexClient
from investflex.models.algos import Skew
from investflex.models.common import DeltaType, ExecutionLimit, ExecutionMode, Side
skew = Skew(
name="petr-skew",
init_time="09:00:00",
end_time="17:00:00",
trigger_value=2.0, # limiar do vol-spread (%)
execution_limit=ExecutionLimit.MARKET,
execution_limit_value=200.0,
delta_type=DeltaType.FIXED,
execution_mode=ExecutionMode.OPTION_ARBITRAGE,
delta_fixed_value_1=0.001,
delta_fixed_value_2=0.001,
interest_rate=6.5,
days_to_expiration_1=1,
days_to_expiration_2=1,
legs=[
dict(symbol="PETRL215", side=Side.BUY, quantity=10000,
alloc_account="YOUR_ACCOUNT", resting="Y", max_clip_size=100),
dict(symbol="PETRL102", side=Side.SELL, quantity=10000,
alloc_account="YOUR_ACCOUNT", resting="Y", max_clip_size=100),
dict(symbol="PETR4", side=Side.BUY, quantity=10000,
alloc_account="YOUR_ACCOUNT", resting="N", max_clip_size=100),
],
)
async with AsyncInvestflexClient.from_env() as client:
handle = await client.algos.create(skew)
print(handle.clord_id, handle.status.name)
import {
InvestflexClient,
Skew,
DeltaType,
ExecutionLimit,
ExecutionMode,
Side,
} from "@investflex/sdk";
const skew = new Skew({
name: "petr-skew",
initTime: "09:00:00",
endTime: "17:00:00",
triggerValue: 2.0, // limiar do vol-spread (%)
executionLimit: ExecutionLimit.MARKET,
executionLimitValue: 200.0,
deltaType: DeltaType.FIXED,
executionMode: ExecutionMode.OPTION_ARBITRAGE,
deltaFixedValue1: 0.001,
deltaFixedValue2: 0.001,
interestRate: 6.5,
daysToExpiration1: 1,
daysToExpiration2: 1,
legs: [
{
symbol: "PETRL215",
side: Side.BUY,
quantity: 10000,
allocAccount: "YOUR_ACCOUNT",
resting: "Y",
maxClipSize: 100,
},
{
symbol: "PETRL102",
side: Side.SELL,
quantity: 10000,
allocAccount: "YOUR_ACCOUNT",
resting: "Y",
maxClipSize: 100,
},
{
symbol: "PETR4",
side: Side.BUY,
quantity: 10000,
allocAccount: "YOUR_ACCOUNT",
resting: "N",
maxClipSize: 100,
},
],
});
const client = InvestflexClient.fromEnv();
const handle = await client.algos.create(skew);
console.log(handle.clOrdId, handle.status);
await client.close();
Parâmetros
Estratégia
| Campo | Tipo | Obrigatório | Editável | Padrão | Observações |
|---|---|---|---|---|---|
name |
str | sim | não | — | Rótulo. |
init_time |
HH:MM:SS |
sim | não | — | Início da janela. |
end_time |
HH:MM:SS |
sim | não | — | Fim da janela. |
expire_date |
YYYYMMDD |
não | não | 20380101 |
Validade da ordem-dia. |
text |
str | não | não | — | Comentário livre. |
basket_id |
str | não | não | — | Chave opcional de agrupamento. |
trigger_value |
número | sim | sim | — | Limiar do spread de volatilidade, em %. |
execution_limit |
ExecutionLimit |
sim | não | — | ExecutionLimit.MARKET (fechamento em desbalanço), ExecutionLimit.TOLERANCE_PER_LEG. |
execution_limit_value |
número | sim | não | — | Tolerância em BRL acima do spread. |
delta_type |
DeltaType |
sim | não | — | DeltaType.FIXED, DeltaType.AUTOMATIC. |
execution_mode |
ExecutionMode |
sim | não | — | ExecutionMode.OPTION_ARBITRAGE, ZERO_DELTA_BY_ASSET, ZERO_DELTA_BY_OPTION, ZERO_VEGA_NO_DELTA_HEDGE, ZERO_VEGA_DELTA_HEDGE. |
delta_fixed_value_1 |
número | condicional | não | — | Delta fixo da opção 1 (usado quando execution_mode ∈ {ExecutionMode.OPTION_ARBITRAGE, ExecutionMode.ZERO_VEGA_NO_DELTA_HEDGE} ou delta_type=DeltaType.FIXED). |
delta_fixed_value_2 |
número | condicional | não | — | Delta fixo da opção 2. |
interest_rate |
número | não | não | — | Taxa de juros anual (%) usada no cálculo de delta. |
days_to_expiration_1 |
int | não | não | — | Dias até o vencimento da opção 1. |
days_to_expiration_2 |
int | não | não | — | Dias até o vencimento da opção 2. |
Pernas
Exatamente três pernas, nesta ordem: opção 1, opção 2, ativo-objeto.
| Campo | Tipo | Obrigatório | Editável | Observações |
|---|---|---|---|---|
symbol |
str | sim | não | Código do instrumento. |
side |
Side.BUY / Side.SELL |
sim | não | |
quantity |
int | sim | sim | Quantidade total (> 0). |
alloc_account |
str | sim | não | Conta da corretora. |
security_exchange |
str | não | não | Padrão XBSP. |
resting |
"Y" / "N" |
não | sim | Tipicamente Y nas opções, N no ativo-objeto. |
max_clip_size |
int | não | sim | Maior pedaço visível por ordem filha. |
Editando um Skew em execução
await client.algos.edit(handle.clord_id, TriggerValue=0.04)
await client.algos.edit(
handle.clOrdId,
{
TriggerValue: 0.04,
},
{ strategyCode: "skew" },
);
Editável: TriggerValue.
Comandos de ciclo de vida
await client.algos.commands.cancel(handle.clord_id)
await client.algos.commands.suspend(handle.clord_id)
await client.algos.commands.resume(handle.clord_id)
await client.commands.cancel(handle.clOrdId);
await client.commands.suspend(handle.clOrdId);
await client.commands.resume(handle.clOrdId);
Notas de comportamento
- A terceira perna (ativo-objeto) é o hedge — sua
quantitydeve ser dimensionada pelos deltas das opções, não como exposição direta. execution_modeescolhe o estilo de hedge; modos4/5miram neutralidade de vega e requerem entradas de sensibilidade do par de opções (delta_fixed_value_*,interest_rate,days_to_expiration_*).execution_limit_valueé a tolerância em BRL que a engine aceita antes de forçar o rebalanceamento via ativo-objeto.