EcoStox - 맞춤형 로직으로 분석하고 추천하는 한국 코스피 및 코스닥 주식 서비스

EcoStox - 맞춤형 로직으로 분석하고 추천하는 한국 코스피 및 코스닥 주식 서비스 · Actions GPT

EcoStox Stock Recommendation API

이 API는 최신 재무 및 기술 데이터를 반영하여 투자 가능성이 높은 한국 주식을 추천합니다.

  • POST /recommendation주식 추천을 요청했을 때 호출
  • POST /companies회사 정보 조회
  • POST /evaluate종목코드 및 종목 이름이 질문에 추가되면 이를 파라미터로 하여 각종 지표 조회 평가 및 조회
  • GET /indicator_names지표 이름들 조회
  • GET /favorites즐겨찾는 종목 목록 조회
  • GET /themes테마 및 테마별 연관 종목 조회
Schéma original API
{
  "openapi": "3.1.0",
  "info": {
    "title": "EcoStox Stock Recommendation API",
    "description": "이 API는 최신 재무 및 기술 데이터를 반영하여 투자 가능성이 높은 한국 주식을 추천합니다.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://stockapi.ventura.kr"
    }
  ],
  "paths": {
    "/recommendation": {
      "post": {
        "operationId": "Recommendation",
        "summary": "주식 추천을 요청했을 때 호출",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecommendationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공적으로 주식을 추천받음",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockRecommendation"
                  }
                }
              }
            }
          },
          "409": {
            "description": "잘못된 요청 지표 및 수식이 유효한지 확인한 후 재시도 요청",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "description": "오류 메시지 반환"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/companies": {
      "post": {
        "operationId": "Company Infomaions",
        "summary": "회사 정보 조회",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ComRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공적으로 회사 정보를 받음",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CompanyInfo"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/evaluate": {
      "post": {
        "operationId": "Company Evaluated Data",
        "summary": "종목코드 및 종목 이름이 질문에 추가되면 이를 파라미터로 하여 각종 지표 조회 평가 및 조회",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ComRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공적으로 주식을 평가받음",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EvaluatedData"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/indicator_names": {
      "get": {
        "operationId": "Indicator Names",
        "summary": "지표 이름들 조회",
        "responses": {
          "200": {
            "description": "성공적으로 지표 이름을 받음",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/favorites": {
      "get": {
        "operationId": "GetFavorites",
        "summary": "즐겨찾는 종목 목록 조회",
        "responses": {
          "200": {
            "description": "즐겨찾는 종목 목록 반환",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FavoriteStock"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/themes": {
      "get": {
        "operationId": "GetThemes",
        "summary": "테마 및 테마별 연관 종목 조회",
        "responses": {
          "200": {
            "description": "성공적으로 테마 및 연관 종목을 반환",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ThemeResult"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "Condition": {
        "type": "object",
        "properties": {
          "selectionExpression": {
            "type": "string",
            "nullable": true
          },
          "scoringExpression": {
            "type": "string",
            "nullable": true
          },
          "fixedScore": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "ComRequest": {
        "type": "object",
        "properties": {
          "stock_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CompanyInfo": {
        "type": "object",
        "properties": {
          "CorpCode": {
            "type": "string",
            "description": "회사 코드",
            "nullable": true
          },
          "CorpName": {
            "type": "string",
            "description": "회사 이름",
            "nullable": true
          },
          "CorpNameEng": {
            "type": "string",
            "description": "회사 영문 이름",
            "nullable": true
          },
          "StockName": {
            "type": "string",
            "description": "주식 이름",
            "nullable": true
          },
          "StockCode": {
            "type": "string",
            "description": "주식 코드",
            "nullable": true
          },
          "CeoNm": {
            "type": "string",
            "description": "대표자 이름",
            "nullable": true
          },
          "CorpCls": {
            "type": "string",
            "description": "회사 분류 코드",
            "nullable": true
          },
          "JurirNo": {
            "type": "string",
            "description": "법인등록번호",
            "nullable": true
          },
          "BizrNo": {
            "type": "string",
            "description": "사업자등록번호",
            "nullable": true
          },
          "Adres": {
            "type": "string",
            "description": "주소",
            "nullable": true
          },
          "HmUrl": {
            "type": "string",
            "description": "홈페이지 URL",
            "nullable": true
          },
          "IrUrl": {
            "type": "string",
            "description": "IR(기업홍보) 페이지 URL",
            "nullable": true
          },
          "PhnNo": {
            "type": "string",
            "description": "전화번호",
            "nullable": true
          },
          "FaxNo": {
            "type": "string",
            "description": "팩스번호",
            "nullable": true
          },
          "IndutyCode": {
            "type": "string",
            "description": "업종 코드",
            "nullable": true
          },
          "EstDt": {
            "type": "string",
            "description": "설립일자",
            "nullable": true
          },
          "AccMt": {
            "type": "string",
            "description": "결산월",
            "nullable": true
          }
        },
        "required": [
          "CorpCode"
        ],
        "example": {
          "CorpCode": "00000000",
          "CorpName": "회사명",
          "CorpNameEng": "Company Name",
          "StockName": "주식명",
          "StockCode": "000000",
          "CeoNm": "대표자명",
          "CorpCls": "E",
          "JurirNo": "1234567890",
          "BizrNo": "123-45-67890",
          "Adres": "주소",
          "HmUrl": "http://www.example.com",
          "IrUrl": "http://ir.example.com",
          "PhnNo": "02-123-4567",
          "FaxNo": "02-123-4568",
          "IndutyCode": "12345",
          "EstDt": "20010101",
          "AccMt": "12"
        }
      },
      "RecommendationRequest": {
        "type": "object",
        "properties": {
          "industry_code": {
            "type": "string",
            "nullable": true
          },
          "stock_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Condition"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StockRecommendation": {
        "type": "object",
        "properties": {
          "EvaluatedData": {
            "type": "object",
            "properties": {
              "StockCode": {
                "type": "string",
                "description": "주식 코드(종목 코드)."
              },
              "StockName": {
                "type": "string",
                "description": "주식 이름(종목 이름)."
              },
              "FaceValuePerShare": {
                "type": "number",
                "format": "double",
                "description": "주당 액면가."
              },
              "ConsolidatedNetIncome": {
                "type": "number",
                "format": "double",
                "description": "연결 순이익."
              },
              "SeparateNetIncome": {
                "type": "number",
                "format": "double",
                "description": "별도 순이익."
              },
              "EarningsPerShare": {
                "type": "number",
                "format": "double",
                "description": "주당 순이익."
              },
              "TotalCashDividends": {
                "type": "number",
                "format": "double",
                "description": "총 현금 배당금."
              },
              "TotalStockDividends": {
                "type": "number",
                "format": "double",
                "description": "총 주식 배당금."
              },
              "CashDividendPayoutRatio": {
                "type": "number",
                "format": "double",
                "description": "현금 배당 지급 비율."
              },
              "CashDividendYield": {
                "type": "number",
                "format": "double",
                "description": "현금 배당 수익률."
              },
              "StockDividendYield": {
                "type": "number",
                "format": "double",
                "description": "주식 배당 수익률."
              },
              "CashDividendPerShare": {
                "type": "number",
                "format": "double",
                "description": "주당 현금 배당금."
              },
              "StockDividendPerShare": {
                "type": "number",
                "format": "double",
                "description": "주당 주식 배당금."
              },
              "Volatility": {
                "type": "number",
                "format": "double",
                "description": "변동성."
              },
              "WeeklyPriceChange": {
                "type": "number",
                "format": "double",
                "description": "주간 가격 변동."
              },
              "WeeklyPriceChangePercentage": {
                "type": "number",
                "format": "double",
                "description": "주간 가격 변동 비율."
              },
              "MonthlyPriceChange": {
                "type": "number",
                "format": "double",
                "description": "월간 가격 변동."
              },
              "MonthlyPriceChangePercentage": {
                "type": "number",
                "format": "double",
                "description": "월간 가격 변동 비율."
              },
              "AverageTradingVolume": {
                "type": "number",
                "format": "double",
                "description": "평균 거래량."
              },
              "EMA9": {
                "type": "number",
                "format": "double",
                "description": "9일 지수 이동 평균."
              },
              "EMA12": {
                "type": "number",
                "format": "double",
                "description": "12일 지수 이동 평균."
              },
              "EMA26": {
                "type": "number",
                "format": "double",
                "description": "26일 지수 이동 평균."
              },
              "EMA50": {
                "type": "number",
                "format": "double",
                "description": "50일 지수 이동 평균."
              },
              "EMA100": {
                "type": "number",
                "format": "double",
                "description": "100일 지수 이동 평균."
              },
              "EMA200": {
                "type": "number",
                "format": "double",
                "description": "200일 지수 이동 평균."
              },
              "MACD": {
                "type": "number",
                "format": "double",
                "description": "이동 평균 수렴/발산."
              },
              "MACDSignal": {
                "type": "number",
                "format": "double",
                "description": "MACD 신호선."
              },
              "MACDHistogram": {
                "type": "number",
                "format": "double",
                "description": "MACD 히스토그램."
              },
              "RSI": {
                "type": "number",
                "format": "double",
                "description": "상대 강도 지수."
              },
              "Oscillator": {
                "type": "number",
                "format": "double",
                "description": "오실레이터."
              },
              "BollingerBandsUpper": {
                "type": "number",
                "format": "double",
                "description": "볼린저 밴드 상한."
              },
              "BollingerBandsLower": {
                "type": "number",
                "format": "double",
                "description": "볼린저 밴드 하한."
              },
              "FiftyTwoWeekHigh": {
                "type": "number",
                "format": "double",
                "description": "52주 최고가."
              },
              "FiftyTwoWeekLow": {
                "type": "number",
                "format": "double",
                "description": "52주 최저가."
              },
              "CurrentPrice": {
                "type": "number",
                "format": "double",
                "description": "현재 가격."
              },
              "ForeignerRatio": {
                "type": "number",
                "format": "double",
                "description": "외국인 보유 비율."
              },
              "TotalQuantity": {
                "type": "number",
                "format": "double",
                "description": "총 수량."
              },
              "ShareholderEquity": {
                "type": "number",
                "format": "double",
                "description": "주주 자본."
              },
              "BV": {
                "type": "number",
                "format": "double",
                "description": "장부 가치."
              },
              "NetIncome": {
                "type": "number",
                "format": "double",
                "description": "순이익."
              },
              "Revenue": {
                "type": "number",
                "format": "double",
                "description": "매출액."
              },
              "TotalLiabilities": {
                "type": "number",
                "format": "double",
                "description": "총 부채."
              },
              "TotalAssets": {
                "type": "number",
                "format": "double",
                "description": "총 자산."
              },
              "EPS": {
                "type": "number",
                "format": "double",
                "description": "주당 이익."
              },
              "PER": {
                "type": "number",
                "format": "double",
                "description": "주가수익비율."
              },
              "BPS": {
                "type": "number",
                "format": "double",
                "description": "주당 장부가치."
              },
              "PBR": {
                "type": "number",
                "format": "double",
                "description": "주가순자산비율."
              },
              "ROE": {
                "type": "number",
                "format": "double",
                "description": "자기자본이익률."
              },
              "MarketCap": {
                "type": "number",
                "format": "double",
                "description": "시가총액."
              },
              "PriceToSalesRatio": {
                "type": "number",
                "format": "double",
                "description": "매출액 대비 주가 비율."
              },
              "IndustryPER": {
                "type": "number",
                "format": "double",
                "description": "업계 평균 PER."
              },
              "IndustryWeeklyPriceChangePercentage": {
                "type": "number",
                "format": "double",
                "description": "업계 평균 주간 가격 변동 비율."
              },
              "IndustryMonthlyPriceChangePercentage": {
                "type": "number",
                "format": "double",
                "description": "업계 평균 월간 가격 변동 비율."
              },
              "IndustryAveragePBR": {
                "type": "number",
                "format": "double",
                "description": "업계 평균 PBR."
              },
              "IndustryAverageROE": {
                "type": "number",
                "format": "double",
                "description": "업계 평균 ROE."
              },
              "HighPrice": {
                "type": "number",
                "format": "double",
                "description": "최고 가격."
              },
              "LowPrice": {
                "type": "number",
                "format": "double",
                "description": "최저 가격."
              },
              "OpeningPrice": {
                "type": "number",
                "format": "double",
                "description": "시가."
              },
              "TradingVolume": {
                "type": "number",
                "format": "double",
                "description": "거래량."
              },
              "ClosePrice": {
                "type": "number",
                "format": "double",
                "description": "종가."
              },
              "Updated": {
                "type": "string",
                "format": "date-time",
                "description": "정보 수정 날짜. 30분 이상 지연일 경우 결과에 주의 문구 삽입."
              }
            }
          },
          "Score": {
            "type": "number",
            "format": "double",
            "description": "추천 점수."
          },
          "Rank": {
            "type": "number",
            "format": "int",
            "description": "추천 순위."
          }
        }
      },
      "FavoriteStock": {
        "type": "object",
        "properties": {
          "rank": {
            "type": "integer"
          },
          "rankChange": {
            "type": "integer"
          },
          "symbolCode": {
            "type": "string"
          },
          "shortCode": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "isNew": {
            "type": "boolean"
          },
          "tradePrice": {
            "type": "number",
            "format": "double"
          },
          "change": {
            "type": "string"
          },
          "changePrice": {
            "type": "number",
            "format": "double"
          },
          "changeRate": {
            "type": "number",
            "format": "double"
          },
          "signedChangeRate": {
            "type": "number",
            "format": "double"
          },
          "accTradeVolume": {
            "type": "number",
            "format": "double"
          },
          "accTradePrice": {
            "type": "number",
            "format": "double"
          },
          "chartSlideImage": {
            "type": "string",
            "nullable": true
          },
          "boardUrl": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ThemeResult": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string"
          },
          "stocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelationStock"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RelationStock": {
        "type": "object",
        "properties": {
          "StockCode": {
            "type": "string"
          },
          "KeywordIdx": {
            "type": "string"
          },
          "Keyword": {
            "type": "string"
          },
          "Diff": {
            "type": "string"
          },
          "Price": {
            "type": "string"
          },
          "Volume": {
            "type": "string"
          },
          "ValueSum": {
            "type": "string"
          },
          "CountNews": {
            "type": "string",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "nullable": true
          },
          "TypeStock": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization"
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ]
}