using System.Text.Json.Serialization;
namespace QuantEngine.Core.Models;
///
/// 종목별 수집 데이터 스냅샷 — Python kis_data_collection_v1.py _collect_one() 반환값 대응
///
public class CollectionSnapshot
{
/// 종목 코드 (6자리 숫자)
[JsonPropertyName("ticker")]
public string Ticker { get; set; } = string.Empty;
/// 종목명
[JsonPropertyName("name")]
public string? Name { get; set; }
/// 업종
[JsonPropertyName("sector")]
public string? Sector { get; set; }
/// 현재가
[JsonPropertyName("current_price")]
public double? CurrentPrice { get; set; }
/// 시가
[JsonPropertyName("open")]
public double? Open { get; set; }
/// 고가
[JsonPropertyName("high")]
public double? High { get; set; }
/// 저가
[JsonPropertyName("low")]
public double? Low { get; set; }
/// 이전 종가
[JsonPropertyName("prev_close")]
public double? PrevClose { get; set; }
/// 거래량
[JsonPropertyName("volume")]
public double? Volume { get; set; }
/// 등락률 (%)
[JsonPropertyName("change_pct")]
public double? ChangePct { get; set; }
/// 매도호가
[JsonPropertyName("ask_1")]
public double? Ask1 { get; set; }
/// 매수호가
[JsonPropertyName("bid_1")]
public double? Bid1 { get; set; }
/// 장중 강도 (주문량 불균형)
[JsonPropertyName("microstructure_pressure")]
public double? MicrostructurePressure { get; set; }
/// 공매도 주식 수
[JsonPropertyName("short_turnover_share")]
public double? ShortTurnoverShare { get; set; }
/// 가격 조회 상태 (OK, ERROR)
[JsonPropertyName("price_status")]
public string PriceStatus { get; set; } = "OK";
/// 호가 조회 상태 (OK, ERROR)
[JsonPropertyName("orderbook_status")]
public string OrderbookStatus { get; set; } = "OK";
/// 공매도 조회 상태 (OK, ERROR)
[JsonPropertyName("short_sale_status")]
public string ShortSaleStatus { get; set; } = "OK";
/// 수집 시각 (ISO 8601 KST)
[JsonPropertyName("collection_as_of")]
public string? CollectionAsOf { get; set; }
/// 가격 조회 에러 메시지
[JsonPropertyName("price_error")]
public string? PriceError { get; set; }
/// 호가 조회 에러 메시지
[JsonPropertyName("orderbook_error")]
public string? OrderbookError { get; set; }
/// 공매도 조회 에러 메시지
[JsonPropertyName("short_sale_error")]
public string? ShortSaleError { get; set; }
/// 상대 수익률 (20일)
[JsonPropertyName("relative_return_20d")]
public double? RelativeReturn20D { get; set; }
/// 거래량 비율 (5일)
[JsonPropertyName("volume_ratio_5d")]
public double? VolumeRatio5D { get; set; }
/// 수집 날짜 (기초 데이터)
[JsonPropertyName("Price_Date")]
public string? PriceDate { get; set; }
}