IDX Position Sizing Calculator API

Menghitung ukuran posisi optimal berdasarkan modal, persentase risiko, dan level stop-loss. Menghasilkan tiga skenario risiko beserta saran manajemen posisi dari FLARIA AI.

Base Information

  • BASE_URL_API: https://api.maelyn.eu/api
  • Path / Endpoint: /financial/idx/position-sizing
  • Method: POST
  • Credit Usage: 12

Authentication

x-maelyn-auth: YOUR_API_KEY
Content-Type: application/json

Description

Endpoint ini menghitung berapa lot/lembar yang harus dibeli berdasarkan prinsip risk management. Dengan modal dan persentase risiko yang ditentukan, kalkulator akan menghitung jumlah lot optimal agar potensi kerugian tidak melebihi batas risiko yang ditetapkan. Juga menghasilkan tiga skenario (1%, 2%, 3% risiko) dan saran dari FLARIA AI.

Request Body

{
  "symbol": "BBCA",
  "capital": 50000000,
  "entry_price": 9500,
  "stop_loss_price": 9000,
  "take_profit_price": 10500,
  "risk_pct": 2,
  "lot_size": 100,
  "market_context": "Pasar sedang sideways, IHSG di sekitar 7200"
}

Body Parameters

NameTypeRequiredDescription
symbolstringYesKode saham IDX. Contoh: BBCA
capitalnumberYesModal total dalam IDR
entry_pricenumberYesHarga entry per lembar saham
stop_loss_pricenumberYesHarga stop-loss per lembar. Harus lebih kecil dari entry_price
take_profit_pricenumberNoHarga take-profit per lembar. Harus lebih besar dari entry_price
risk_pctnumberNoPersentase risiko per trade (0.1–10). Default: 2
lot_sizenumberNoJumlah lembar per lot. Default: 100
market_contextstringNoKonteks tambahan untuk analisis AI

Example Usage

1. Kalkulasi dengan take profit

{
  "symbol": "BBCA",
  "capital": 50000000,
  "entry_price": 9500,
  "stop_loss_price": 9000,
  "take_profit_price": 10500,
  "risk_pct": 2
}

2. Kalkulasi konservatif tanpa take profit

{
  "symbol": "GOTO",
  "capital": 10000000,
  "entry_price": 68,
  "stop_loss_price": 60,
  "risk_pct": 1,
  "lot_size": 100
}

Success Response

{
  "success": true,
  "data": {
    "symbol": "BBCA",
    "calculation": {
      "capital": 50000000,
      "risk_pct": 2,
      "entry_price": 9500,
      "stop_loss_price": 9000,
      "take_profit_price": 10500,
      "lot_size": 100,
      "risk_amount": 1000000,
      "risk_per_share": 500,
      "lots_optimal": 20,
      "shares_optimal": 2000,
      "capital_required": 19000000,
      "capital_usage_pct": 38.0,
      "actual_risk": 1000000,
      "rr_ratio": 2.0,
      "potential_profit": 2000000,
      "expected_value": 500000,
      "scenarios": [
        { "risk_pct": 1, "lots": 10, "shares": 1000, "capital_required": 9500000, "risk_amount": 500000 },
        { "risk_pct": 2, "lots": 20, "shares": 2000, "capital_required": 19000000, "risk_amount": 1000000 },
        { "risk_pct": 3, "lots": 30, "shares": 3000, "capital_required": 28500000, "risk_amount": 1500000 }
      ],
      "warnings": []
    },
    "ai_advice": {
      "penilaian_rencana": "Cukup",
      "komentar_sizing": "Posisi 38% dari modal cukup besar, pertimbangkan 2 lot lebih sedikit...",
      "komentar_rr": "R/R 2.0 sudah memadai untuk trade ini",
      "kondisi_saham_saat_ini": "BBCA dalam uptrend dengan RSI moderat...",
      "saran_penyesuaian": "Pertimbangkan turunkan entry ke 9.450 untuk R/R lebih baik",
      "faktor_risiko_tambahan": ["Rilis data inflasi AS akhir bulan", "RUPS BBCA minggu depan"],
      "tips_manajemen_posisi": "Jual 50% posisi di TP1 (10.000), trailing stop untuk sisanya",
      "disclaimer": "Analisis ini bukan saran investasi resmi."
    },
    "sources": []
  }
}

Response Fields

FieldTypeDescription
calculation.lots_optimalnumberJumlah lot optimal berdasarkan risk management
calculation.capital_usage_pctnumberPersentase modal yang digunakan
calculation.rr_rationumberRisk/Reward ratio (null jika take_profit tidak diisi)
calculation.potential_profitnumberPotensi profit jika TP tercapai
calculation.scenariosarrayTiga skenario: 1%, 2%, 3% risiko
calculation.warningsarrayPeringatan jika ada parameter yang tidak ideal
ai_advice.penilaian_rencanastringBaik, Cukup, atau Perlu Revisi

Error Response

Field wajib tidak diisi

{
  "success": false,
  "message": "Field berikut wajib diisi: capital, entry_price"
}

Stop loss >= entry price

{
  "success": false,
  "message": "\"stop_loss_price\" harus lebih kecil dari \"entry_price\"."
}

Playground