calculate_kama
Compute the Kaufman Adaptive Moving Average (KAMA) to adapt to market volatility and reduce noise in financial price data for technical analysis.
Instructions
Calculate Kaufman Adaptive Moving Average (KAMA).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Implementation Reference
- src/mcp_talib/core/server.py:194-207 (handler)MCP tool handler for calculate_kama, decorated with @mcp.tool() for registration and execution logic delegating to KAMA indicator.@mcp.tool() async def calculate_kama(close: List[float], timeperiod: int = 10) -> Dict[str, Any]: try: indicator = registry.get_indicator("kama") if not indicator: raise ValueError("KAMA indicator not found") market_data = MarketData(close=close) result = await indicator.calculate(market_data, {"timeperiod": timeperiod}) if result.success: return {"success": True, "values": result.values, "metadata": result.metadata} return {"success": False, "error": result.error_message} except Exception as e: return {"success": False, "error": str(e)}
- Input schema defining parameters for KAMA indicator: close_prices (array) and timeperiod (int, default 10).@property def input_schema(self) -> Dict[str, Any]: return {"type": "object", "properties": {"close_prices": {"type": "array", "items": {"type": "number"}}, "timeperiod": {"type": "integer", "default": 10}}, "required": ["close_prices"]}
- Core implementation of KAMA calculation using TA-Lib's ta.KAMA function.async def calculate(self, market_data: MarketData, options: Dict[str, Any] = None) -> IndicatorResult: if options is None: options = {} timeperiod = options.get("timeperiod", 10) close = np.asarray(market_data.close, dtype=float) try: out = ta.KAMA(close, timeperiod=timeperiod) return IndicatorResult(indicator_name=self.name, success=True, values={"kama": out.tolist()}, metadata={"timeperiod": timeperiod, "input_points": len(close), "output_points": len(out)}) except Exception as e: return IndicatorResult(indicator_name=self.name, success=False, values={}, error_message=str(e))
- src/mcp_talib/indicators/__init__.py:32-32 (registration)Registration of KAMAIndicator class in the central indicator registry.registry.register("kama", KAMAIndicator)
- Tool specification schema in dynamic MCP server, defining params and defaults for calculate_kama."kama": { "description": "Kaufman Adaptive Moving Average (KAMA)", "params": {"close": List[float], "timeperiod": int}, "defaults": {"timeperiod": 10}, "market_data_args": {"close": "close"}, },