kispilot 0.2.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. {kispilot-0.2.0/src/kispilot.egg-info → kispilot-0.2.1}/PKG-INFO +1 -1
  2. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/__init__.py +1 -1
  3. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/mcp_server/analysis_tools.py +106 -16
  4. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/mcp_server/server.py +10 -3
  5. {kispilot-0.2.0 → kispilot-0.2.1/src/kispilot.egg-info}/PKG-INFO +1 -1
  6. {kispilot-0.2.0 → kispilot-0.2.1}/LICENSE +0 -0
  7. {kispilot-0.2.0 → kispilot-0.2.1}/README.md +0 -0
  8. {kispilot-0.2.0 → kispilot-0.2.1}/pyproject.toml +0 -0
  9. {kispilot-0.2.0 → kispilot-0.2.1}/setup.cfg +0 -0
  10. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/__main__.py +0 -0
  11. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/__init__.py +0 -0
  12. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/account/__init__.py +0 -0
  13. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/account/account_asset_balance.py +0 -0
  14. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/account/account_inquire_balance_rlz_pl.py +0 -0
  15. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/account/account_inquire_period_profit.py +0 -0
  16. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/account/account_inquire_period_rights.py +0 -0
  17. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/account/account_inquire_period_trade_profit.py +0 -0
  18. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/account/account_intgr_margin.py +0 -0
  19. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/config.py +0 -0
  20. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/data/__init__.py +0 -0
  21. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/data/_mst.py +0 -0
  22. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/data/index_fo.py +0 -0
  23. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/data/kosdaq.py +0 -0
  24. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/data/kospi.py +0 -0
  25. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/data/master.py +0 -0
  26. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/data/night_future.py +0 -0
  27. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/data/night_option.py +0 -0
  28. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/data/sector.py +0 -0
  29. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/futureoption/__init__.py +0 -0
  30. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/futureoption/futureoption_inquire_asking_price.py +0 -0
  31. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/futureoption/futureoption_inquire_daily_fuopchartprice.py +0 -0
  32. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/futureoption/futureoption_inquire_price.py +0 -0
  33. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/futureoption/futureoption_inquire_time_fuopchartprice.py +0 -0
  34. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/info/__init__.py +0 -0
  35. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/info/info_balance_sheet.py +0 -0
  36. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/info/info_financial_ratio.py +0 -0
  37. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/info/info_growth_ratio.py +0 -0
  38. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/info/info_income_statement.py +0 -0
  39. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/info/info_other_major_ratios.py +0 -0
  40. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/info/info_profit_ratio.py +0 -0
  41. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/info/info_search_stock_info.py +0 -0
  42. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/info/info_stability_ratio.py +0 -0
  43. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/oauth/__init__.py +0 -0
  44. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/oauth/kis_token.py +0 -0
  45. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/__init__.py +0 -0
  46. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_cash.py +0 -0
  47. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_credit.py +0 -0
  48. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_inquire_balance.py +0 -0
  49. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_inquire_credit_psamount.py +0 -0
  50. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_inquire_daily_ccld.py +0 -0
  51. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_inquire_psbl_order.py +0 -0
  52. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_inquire_psbl_sell.py +0 -0
  53. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_inquire_reserve.py +0 -0
  54. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_inquire_revise_cancel.py +0 -0
  55. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_reserve.py +0 -0
  56. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_reserve_revise_cancel.py +0 -0
  57. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/order/order_revise_cancel.py +0 -0
  58. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/__init__.py +0 -0
  59. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_asking_price.py +0 -0
  60. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_ccnl.py +0 -0
  61. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_daily_itemchartprice.py +0 -0
  62. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_daily_price.py +0 -0
  63. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_etf_component_stock_price.py +0 -0
  64. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_etf_price.py +0 -0
  65. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_investor.py +0 -0
  66. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_member.py +0 -0
  67. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_price.py +0 -0
  68. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_time_dailychartprice.py +0 -0
  69. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_time_itemchartprice.py +0 -0
  70. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_inquire_time_itemconclusion.py +0 -0
  71. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_nav_comparison_daily_trend.py +0 -0
  72. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_nav_comparison_time_trend.py +0 -0
  73. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price/price_nav_comparison_trend.py +0 -0
  74. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/__init__.py +0 -0
  75. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_daily_loan_trans.py +0 -0
  76. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_daily_short_sale.py +0 -0
  77. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_foreign_institution_total.py +0 -0
  78. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_frgnmem_pchs_trend.py +0 -0
  79. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_inquire_investor_daily_by_market.py +0 -0
  80. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_intstock_multprice.py +0 -0
  81. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_investor_program_trade_today.py +0 -0
  82. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_investor_trade_by_stock_daily.py +0 -0
  83. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_mktfunds.py +0 -0
  84. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_pbar_tratio.py +0 -0
  85. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_program_trade_by_stock.py +0 -0
  86. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/price_anal/price_anal_program_trade_by_stock_daily.py +0 -0
  87. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/__init__.py +0 -0
  88. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_credit_balance.py +0 -0
  89. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_disparity.py +0 -0
  90. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_exp_trans_updown.py +0 -0
  91. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_finance_ratio.py +0 -0
  92. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_fluctuation.py +0 -0
  93. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_market_cap.py +0 -0
  94. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_market_value.py +0 -0
  95. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_prefer_disparate_ratio.py +0 -0
  96. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_profit_asset_index.py +0 -0
  97. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_quote_balance.py +0 -0
  98. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_short_sale.py +0 -0
  99. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_volume_power.py +0 -0
  100. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/ranking_anal/ranking_anal_volume_rank.py +0 -0
  101. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/__init__.py +0 -0
  102. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_asking_price_total.py +0 -0
  103. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_ccnl_total.py +0 -0
  104. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_index_futures_asking_price.py +0 -0
  105. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_index_futures_ccnl.py +0 -0
  106. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_index_option_asking_price.py +0 -0
  107. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_index_option_ccnl.py +0 -0
  108. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_krx_ngt_futures_asking_price.py +0 -0
  109. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_krx_ngt_futures_ccnl.py +0 -0
  110. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_krx_ngt_option_asking_price.py +0 -0
  111. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_krx_ngt_option_ccnl.py +0 -0
  112. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_member_total.py +0 -0
  113. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/realtime/realtime_program_trade_total.py +0 -0
  114. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/sector/__init__.py +0 -0
  115. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/sector/sector_exp_index_trend.py +0 -0
  116. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/sector/sector_exp_total_index.py +0 -0
  117. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/sector/sector_inquire_daily_indexchartprice.py +0 -0
  118. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/sector/sector_inquire_index_category_price.py +0 -0
  119. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/sector/sector_inquire_index_daily_price.py +0 -0
  120. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/sector/sector_inquire_index_price.py +0 -0
  121. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/sector/sector_inquire_index_timeprice.py +0 -0
  122. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/sector/sector_news_title.py +0 -0
  123. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/utils/__init__.py +0 -0
  124. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/utils/api_tracker.py +0 -0
  125. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/api/utils/http_session.py +0 -0
  126. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/__init__.py +0 -0
  127. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/backtest/__init__.py +0 -0
  128. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/backtest/custom_strategy.py +0 -0
  129. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/backtest/engine.py +0 -0
  130. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/backtest/indicators_lib.py +0 -0
  131. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/backtest/metrics.py +0 -0
  132. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/backtest/strategies.py +0 -0
  133. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/main.py +0 -0
  134. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/account.html +0 -0
  135. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/css/base.css +0 -0
  136. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/favicon.svg +0 -0
  137. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/api.js +0 -0
  138. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/chart-tools.js +0 -0
  139. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/chart.js +0 -0
  140. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/indicators.js +0 -0
  141. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/layout.js +0 -0
  142. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/live.js +0 -0
  143. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/account.js +0 -0
  144. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/backtest.js +0 -0
  145. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/dashboard.js +0 -0
  146. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/etf.js +0 -0
  147. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/fo.js +0 -0
  148. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/market.js +0 -0
  149. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/ranking.js +0 -0
  150. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/stock-finance.js +0 -0
  151. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/stock-flow.js +0 -0
  152. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/stock.js +0 -0
  153. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/pages/trade.js +0 -0
  154. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/assets/js/ui.js +0 -0
  155. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/backtest.html +0 -0
  156. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/etf.html +0 -0
  157. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/fo.html +0 -0
  158. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/index.html +0 -0
  159. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/market.html +0 -0
  160. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/ranking.html +0 -0
  161. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/stock-finance.html +0 -0
  162. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/stock-flow.html +0 -0
  163. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/stock.html +0 -0
  164. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/ui/trade.html +0 -0
  165. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/utils/__init__.py +0 -0
  166. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/utils/backtest.py +0 -0
  167. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/utils/chart.py +0 -0
  168. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/utils/fo_board.py +0 -0
  169. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/utils/news.py +0 -0
  170. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/utils/realtime_hub.py +0 -0
  171. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/app/utils/utils.py +0 -0
  172. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/cli.py +0 -0
  173. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/credentials.py +0 -0
  174. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/install.py +0 -0
  175. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/mcp_server/__init__.py +0 -0
  176. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/mcp_server/prompts.py +0 -0
  177. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/mcp_server/shaping.py +0 -0
  178. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot/paths.py +0 -0
  179. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot.egg-info/SOURCES.txt +0 -0
  180. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot.egg-info/dependency_links.txt +0 -0
  181. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot.egg-info/entry_points.txt +0 -0
  182. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot.egg-info/requires.txt +0 -0
  183. {kispilot-0.2.0 → kispilot-0.2.1}/src/kispilot.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kispilot
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: 한국투자증권 Open API를 AI 에이전트(MCP)와 웹 콘솔에서 쓰기 위한 도구 모음 (비공식)
5
5
  Author: Dong-Ju An
6
6
  License-Expression: MIT
@@ -1,3 +1,3 @@
1
1
  """KISPilot — 한국투자증권 Open API 를 AI 에이전트(MCP)와 웹 콘솔에서 쓰기 위한 도구 모음 (비공식)."""
2
2
 
3
- __version__ = "0.2.0"
3
+ __version__ = "0.2.1"
@@ -11,14 +11,18 @@
11
11
  backtest_strategy_validate 커스텀 전략 검증
12
12
  backtest_strategy_list/load/save/delete 커스텀 전략 저장 관리 (데이터 폴더의 JSON)
13
13
  indicator_values 종목 하나에 지표를 계산해 최근 값 (예: RSI, MACD, 볼린저)
14
- chart_bars 일·주·월·년봉 최근 N개 (yfinance 전체 + KIS 최근 거래일)
14
+ chart_bars 일·주·월·년봉 · 분봉 최근 N개 (주식·지수, KOSPI200 선물·옵션)
15
15
  stock_news 주식 관련 뉴스 제목 (종목코드를 주면 그 종목 기사만) + 제목 검색 링크
16
+ fo_futures_board KOSPI200 선물 월물 전광판 (주간 / 야간) — 선물 종목코드도 여기서 찾는다
17
+ fo_option_expiries KOSPI200 옵션 만기 목록 (일반 · 미니 · 위클리)
18
+ fo_option_board KOSPI200 옵션 전광판 (ATM 근처 콜 · 풋) — 옵션 종목코드도 여기서 찾는다
19
+ market_session 지금 장 구간 · 호가 유형 (주식) + 선물·옵션 주간/야간
16
20
  """
17
21
  from __future__ import annotations
18
22
 
19
23
  import dataclasses
20
24
  import json
21
- from datetime import date, timedelta
25
+ from datetime import date, datetime, timedelta, timezone
22
26
  from typing import Any, Callable, Literal, Optional
23
27
 
24
28
  STRATEGY_HINT = (
@@ -30,7 +34,7 @@ STRATEGY_HINT = (
30
34
  def register(mcp, *, execute: Callable, to_json: Callable, surface_errors: Callable, ToolError, ToolAnnotations,
31
35
  batchable: Optional[dict] = None) -> int:
32
36
  from kispilot.app.utils import backtest as bt
33
- from kispilot.app.utils import chart
37
+ from kispilot.app.utils import chart, fo_board
34
38
 
35
39
  read_only = ToolAnnotations(readOnlyHint=True, destructiveHint=False, openWorldHint=True)
36
40
  local_write = ToolAnnotations(readOnlyHint=False, destructiveHint=False, openWorldHint=False)
@@ -475,22 +479,28 @@ def register(mcp, *, execute: Callable, to_json: Callable, surface_errors: Calla
475
479
 
476
480
  @mcp.tool(annotations=read_only, structured_output=False)
477
481
  @surface_errors
478
- def chart_bars(code: str, tf: Literal["D", "W", "M", "Y"] = "D", count: int = 60,
479
- kind: Literal["stock", "index"] = "stock") -> str:
480
- """일·주·월·년봉 최근 N개 (yfinance 전체 기록 + KIS 최근 거래일 보정, 웹 콘솔 차트와 같은 데이터).
482
+ def chart_bars(code: str, tf: Literal["1m", "5m", "30m", "D", "W", "M", "Y"] = "D", count: int = 60,
483
+ kind: Literal["stock", "index", "fo"] = "stock", session: Literal["day", "night"] = "day") -> str:
484
+ """차트 봉 최근 N개 — 웹 콘솔 차트와 같은 데이터.
485
+ 주식·지수: yfinance 전체 기록 + KIS 최근 거래일 보정. KOSPI200 선물·옵션(kind="fo"): KIS 기간별 시세·분봉 (년봉 없음).
481
486
 
482
487
  Args:
483
- code: 종목 6자리, 또는 지수 "0001"(KOSPI) / "1001"(KOSDAQ) / "2001"(KOSPI 200) — 지수는 kind="index".
484
- tf: D 일 / W 주 / M 월 / Y 년. 기본 D.
488
+ code: 종목 6자리, 지수 "0001"(KOSPI) / "1001"(KOSDAQ) / "2001"(KOSPI 200) — 지수는 kind="index",
489
+ 선물·옵션 단축코드(예: A01612, B01611A06) — kind="fo" (코드는 fo_futures_board / fo_option_board 로 찾는다).
490
+ tf: 1m 1분 / 5m 5분 / 30m 30분 / D 일 / W 주 / M 월 / Y 년. 기본 D.
485
491
  count: 최근 몇 개 (1~500). 기본 60.
486
- kind: stock 또는 index.
492
+ kind: stock / index / fo.
493
+ session: kind="fo" 일 때 day 주간 / night 야간. 야간 일봉의 날짜는 그 야간장이 시작한 날.
487
494
 
488
495
  Returns:
489
- {code, tf, sources, bars:[{time, open, high, low, close, volume}]} JSON.
496
+ {code, tf, sources, bars:[{time, open, high, low, close, volume}]} JSON. 분봉 time 은 "YYYY-MM-DD HH:MM"(한국 시간).
490
497
  """
491
- data = guard(chart.build, code.strip().upper(), tf, kind, kis_call)
498
+ data = guard(chart.build, code.strip().upper(), tf, kind, kis_call, session)
492
499
  n = max(1, min(int(count), 500))
493
- return to_json({"code": data["code"], "tf": tf, "sources": data["sources"], "bars": data["bars"][-n:]})
500
+ bars = data["bars"][-n:]
501
+ if data["intraday"]: # 분봉 time 은 한국 시각을 UTC 로 취급한 유닉스 초 → 읽기 쉬운 문자열로
502
+ bars = [b | {"time": datetime.fromtimestamp(b["time"], timezone.utc).strftime("%Y-%m-%d %H:%M")} for b in bars]
503
+ return to_json({"code": data["code"], "tf": tf, "sources": data["sources"], "bars": bars})
494
504
 
495
505
  @mcp.tool(annotations=read_only, structured_output=False)
496
506
  @surface_errors
@@ -512,15 +522,84 @@ def register(mcp, *, execute: Callable, to_json: Callable, surface_errors: Calla
512
522
  rows = news.fetch(kis_call, code, max(1, min(int(count), 50)))
513
523
  return to_json({"code": code.strip(), "news": rows})
514
524
 
525
+ # ── KOSPI200 선물·옵션 전광판 (웹 콘솔 선물/옵션 화면과 같은 app/utils/fo_board.py) ──
526
+
527
+ def fo_guard(fn: Callable, *args):
528
+ try:
529
+ return fn(*args)
530
+ except (ValueError, fo_board.BoardError) as e:
531
+ raise ToolError(str(e)) from e
532
+
533
+ def fo_quote(q: Optional[dict], keys: tuple[str, ...]) -> Optional[dict]:
534
+ return None if q is None else {k: q.get(k) for k in ("code", *keys, "error") if q.get(k) is not None}
535
+
536
+ @mcp.tool(annotations=read_only, structured_output=False)
537
+ @surface_errors
538
+ def fo_futures_board(session: Literal["day", "night"] = "day") -> str:
539
+ """KOSPI200 선물 월물 전광판 — 월물마다 종목코드 · 현재가 · 등락 · 거래량 · 미결제약정 · 베이시스 · 잔존일, 그리고 KOSPI200 지수.
540
+ 선물 종목코드를 찾을 때도 쓴다. 일반 선물(분기 만기)과 미니 선물(매월 만기). 만기 지난 월물은 빠진다.
541
+
542
+ Args:
543
+ session: day 주간(08:45~15:45) / night 야간(18:00~다음 날 06:00, 미니 선물 없음). 장이 닫혀 있으면 마지막 거래 값.
544
+
545
+ Returns:
546
+ {session, market_div, index, rows:[{product, expiry, code, price, change, change_rate, volume, open_interest, basis, days_left}]} JSON.
547
+ market_div 는 이 장에서 futureoption_inquire_* 에 넣을 값 (주간 F, 야간 CM).
548
+ """
549
+ d = fo_guard(fo_board.futures, session, kis_call)
550
+ keys = ("price", "change", "change_rate", "volume", "open_interest", "oi_change", "basis", "theory", "days_left")
551
+ rows = [{"product": r["product_label"], "expiry": r["expiry_label"], **fo_quote(r, keys)} for r in d["rows"]]
552
+ return to_json({"session": session, "market_div": d["market_div"], "index": d["index"], "rows": rows, "as_of": d["as_of"]})
553
+
554
+ @mcp.tool(annotations=read_only, structured_output=False)
555
+ @surface_errors
556
+ def fo_option_expiries(session: Literal["day", "night"] = "day",
557
+ product: Literal["regular", "mini", "weekly_thu", "weekly_mon"] = "regular") -> str:
558
+ """KOSPI200 옵션 만기 목록 (가까운 순). fo_option_board 의 expiry 로 쓴다.
559
+
560
+ Args:
561
+ session: day 주간 / night 야간.
562
+ product: regular 일반(매월 둘째 목요일 만기) / mini 미니 / weekly_thu 위클리 목요일 만기 / weekly_mon 위클리 월요일 만기.
563
+
564
+ Returns:
565
+ [{expiry, label, strikes}] JSON. expiry 예: 202612(월물), 2610W3(2026년 10월 셋째 주 위클리). strikes 는 행사가 개수.
566
+ """
567
+ return to_json(fo_guard(fo_board.expiries, session, product))
568
+
569
+ @mcp.tool(annotations=read_only, structured_output=False)
570
+ @surface_errors
571
+ def fo_option_board(expiry: str, session: Literal["day", "night"] = "day",
572
+ product: Literal["regular", "mini", "weekly_thu", "weekly_mon"] = "regular", n: int = 10) -> str:
573
+ """KOSPI200 옵션 전광판 — 기준가(주간 KOSPI200 지수, 야간 최근월 선물)에 가까운 행사가 2n+1 개의 콜 · 풋 시세.
574
+ 옵션 종목코드를 찾을 때도 쓴다 (행사가로 코드를 계산할 수 없음). 종목마다 조회해 n=10 이면 약 3초 걸린다.
575
+
576
+ Args:
577
+ expiry: 만기 (fo_option_expiries 의 expiry, 예: 202612 · 2610W3).
578
+ session: day 주간 / night 야간.
579
+ product: regular 일반 / mini 미니 / weekly_thu 위클리(목) / weekly_mon 위클리(월).
580
+ n: ATM 위아래 행사가 수 (1~15). 기본 10.
581
+
582
+ Returns:
583
+ {reference, atm, market_div, rows:[{strike, call:{code, price, change_rate, volume, open_interest, iv, delta}, put:{...}}]} JSON.
584
+ 행사가 높은 순. market_div 는 이 장에서 futureoption_inquire_* 에 넣을 값 (주간 O, 야간 EU).
585
+ 거래가 드문 행사가는 price 가 오래된 값이거나 volume 0 일 수 있다.
586
+ """
587
+ d = fo_guard(fo_board.build, session, product, expiry.strip().upper(), n, kis_call)
588
+ keys = ("price", "change_rate", "volume", "open_interest", "theory", "iv", "delta")
589
+ rows = [{"strike": float(r["strike"]), "call": fo_quote(r["call"], keys), "put": fo_quote(r["put"], keys)} for r in d["rows"]]
590
+ return to_json({"session": session, "product": d["product_label"], "expiry": d["expiry_label"],
591
+ "market_div": d["market_div"], "reference": d["reference"], "atm": float(d["atm"]),
592
+ "strikes_total": d["strikes_total"], "rows": rows, "as_of": d["as_of"]})
593
+
515
594
  @mcp.tool(annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False, openWorldHint=False),
516
595
  structured_output=False)
517
596
  @surface_errors
518
597
  def market_session() -> str:
519
598
  """지금(한국 시간) 장 운영 구간과 그 구간에서 쓸 수 있는 주문 호가 유형(ord_dvsn)을 알려준다. 주문 전에 확인한다.
520
- 공휴일은 반영하지 않는다.
599
+ KOSPI200 선물·옵션의 주간/야간 구간(futures_options)도 함께 알려준다. 공휴일은 반영하지 않는다.
521
600
 
522
601
  Returns:
523
- {now_kst, session, label, order_types:[{code, label}], note} JSON.
602
+ {now_kst, session, label, order_types:[{code, label}], note, futures_options:{session, label, note}} JSON.
524
603
  """
525
604
  return to_json(_market_session())
526
605
 
@@ -529,7 +608,7 @@ def register(mcp, *, execute: Callable, to_json: Callable, surface_errors: Calla
529
608
  batchable["chart_bars"] = (lambda kw: json.loads(chart_bars(**kw)), "code", True)
530
609
  batchable["stock_news"] = (lambda kw: json.loads(stock_news(**kw)), "code", True)
531
610
 
532
- count = 14
611
+ count = 17
533
612
  return count
534
613
 
535
614
 
@@ -561,7 +640,18 @@ def _market_session(now=None) -> dict:
561
640
  s = ("closed", "장 마감", [], "예약주문(order_reserve_*, 실전 전용)은 접수할 수 있습니다.")
562
641
  sid, label, order_types, note = s
563
642
  return {"now_kst": kst.strftime("%Y-%m-%d %H:%M (%a)"), "session": sid, "label": label,
564
- "order_types": order_types, "note": note or None}
643
+ "order_types": order_types, "note": note or None, "futures_options": _fo_session(kst)}
644
+
645
+
646
+ def _fo_session(kst) -> dict:
647
+ """KOSPI200 선물·옵션 장 구간 (웹 콘솔 선물/옵션 화면과 같은 구간). 주간 08:45~15:45, 야간 월~금 18:00~다음 날 06:00."""
648
+ t, wd = kst.hour * 100 + kst.minute, kst.weekday() # 월=0
649
+ if wd <= 4 and 845 <= t < 1545:
650
+ return {"session": "day", "label": "주간장 (08:45~15:45)", "note": "session=\"day\", market_div 선물 F · 옵션 O"}
651
+ if (wd <= 4 and t >= 1800) or (1 <= wd <= 5 and t < 600):
652
+ return {"session": "night", "label": "야간장 (18:00~다음 날 06:00)", "note": "session=\"night\", market_div 선물 CM · 옵션 EU (미니 선물 없음)"}
653
+ return {"session": "closed", "label": "선물·옵션 장 마감",
654
+ "note": "주간·야간 모두 마지막 거래 값을 조회할 수 있다 (08:45~18:00 은 주간, 그 밖은 야간이 가까운 장)"}
565
655
 
566
656
 
567
657
  def _summarize(r: dict, max_trades: int) -> dict:
@@ -50,7 +50,9 @@ from kispilot.api import config # noqa: E402
50
50
  from kispilot.api.oauth import kis_token # noqa: E402
51
51
  from kispilot.mcp_server import shaping # noqa: E402
52
52
 
53
- _PACKAGES = ["account", "info", "order", "price", "price_anal", "ranking_anal", "sector"]
53
+ _PACKAGES = ["account", "info", "order", "price", "price_anal", "ranking_anal", "sector", "futureoption"]
54
+ # 웹 엔드포인트로는 쓰지만 MCP 도구로는 등록하지 않는 함수 — 차트 봉은 chart_bars(kind="fo") 가 대신한다 (도구 수 줄이기)
55
+ _SKIP_TOOLS = {("futureoption", "inquire_daily_fuopchartprice"), ("futureoption", "inquire_time_fuopchartprice")}
54
56
 
55
57
  # 계좌에 변화를 일으키는 주문 도구 (나머지는 모두 조회).
56
58
  _ORDER_FUNCS = {
@@ -75,7 +77,7 @@ _ORDER_NOTE = (
75
77
  "11/12 IOC/FOK지정가, 13/14 IOC/FOK시장가, 21 중간가, 22 스톱지정가."
76
78
  )
77
79
 
78
- _INSTRUCTIONS = """한국투자증권 Open API(국내주식) 도구 모음.
80
+ _INSTRUCTIONS = """한국투자증권 Open API(국내주식 · KOSPI200 선물옵션) 도구 모음.
79
81
  - 종목코드는 6자리(예: 005930). 종목명만 알면 먼저 search_stock_code 로 코드를 찾는다. 업종/지수 코드는 search_sector_code.
80
82
  - KIS 날짜 인자는 YYYYMMDD 문자열. 각 도구 설명의 Args 를 따른다.
81
83
  - 설명에 '모의투자 미지원, 실전 계좌 전용' 이 있는 도구는 mode 인자가 없고 항상 실전 키로 조회한다(조회라 안전).
@@ -96,7 +98,10 @@ _INSTRUCTIONS = """한국투자증권 Open API(국내주식) 도구 모음.
96
98
  전략·파라미터 여러 개 비교는 backtest_run 을 반복하지 말고 backtest_compare 한 번으로, 여러 종목 비중·리밸런싱은 backtest_portfolio 로.
97
99
  - 뉴스는 stock_news 를 쓴다 (종목 뉴스는 code 에 종목코드, 시장 뉴스는 비움). sector_news_title 은 거르지 않은 원본이다.
98
100
  - 지표 최근 값은 indicator_values, 일·주·월·년봉은 chart_bars (KIS 호출 한도와 무관하게 긴 기간을 본다).
99
- - 주문 전에는 market_session 으로 지금 장 구간과 쓸 수 있는 호가 유형(정규장 00/01…, NXT 애프터마켓 41/44/47)을 확인한다."""
101
+ - 주문 전에는 market_session 으로 지금 장 구간과 쓸 수 있는 호가 유형(정규장 00/01…, NXT 애프터마켓 41/44/47)을 확인한다.
102
+ - KOSPI200 선물·옵션(조회만, 주문 도구 없음): 종목코드는 fo_futures_board(선물 월물) · fo_option_expiries → fo_option_board(옵션)
103
+ 결과에서 찾는다 (옵션 코드는 행사가로 계산할 수 없다). 개별 시세는 futureoption_inquire_price · futureoption_inquire_asking_price 에
104
+ market_div 를 주간 F(선물)/O(옵션), 야간 CM/EU 로 넣는다. 차트는 chart_bars(kind="fo", session). 장 구간은 market_session 의 futures_options."""
100
105
 
101
106
  mcp = MCPServer("kispilot", instructions=_INSTRUCTIONS)
102
107
 
@@ -349,6 +354,8 @@ def _register_kis_tools() -> int:
349
354
  continue
350
355
  if not fn.__module__.startswith(f"kispilot.api.{pkg}."):
351
356
  continue # 패키지 __init__ 에 섞여 들어온 외부 함수 제외
357
+ if (pkg, name) in _SKIP_TOOLS:
358
+ continue
352
359
  _make_tool(pkg, name, fn)
353
360
  count += 1
354
361
  return count
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kispilot
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: 한국투자증권 Open API를 AI 에이전트(MCP)와 웹 콘솔에서 쓰기 위한 도구 모음 (비공식)
5
5
  Author: Dong-Ju An
6
6
  License-Expression: MIT
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes