=== Segment Map ===
  1: 0ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\236-362-326-362-326-236-623-326-362-362-326-326-326-361-326-632-326-362-362-236-362-362-362-326-263-621-326-623-326-362-326-263-326-362-326-326-362-326-263-362-236-6_W.mp3
  2: 1576ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\710-157-571-571-327-123-150-157-517-153-157-135-715-170-107-170-175-175-175-735-750 321-157-567-312-173-753-230-231-127-127-317-126-175-173-701-713-173-712-107-271-1_V.mp3
  3: 3152ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\326-621-326-362-621-261-621-261-623-261-621-621-621-261-621-621-623-621-326-621-621-621-261-261-326-261-623-263-623-261-263-362-261-362-632-263-261-621-261-261-261-3_W.mp3
  4: 4728ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\316-315-260-620-621-130-312-236-213-310-326-130-630-321-312-310-153-573-236-351-132-320-362-231-312-103-326-260-362-620-123-542-261-534-320-103-236-231-130-231-321-1_W.mp3
  5: 6304ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\715-157-175-173-137-175-173-173-137-173-175-173-176-137-317-173-137-137-173-317-317-317-316-316-361-163-163-136-361-157-765-715-175-715-715-754-175-751-715-714-175_W.mp3
  6: 7880ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\163-326-632-326-231-321-321-362-623-326-321-312-321-316-316-316-312-136-326-321-236-362-326-326-321-326-321-326-321-326-236-326-326-321-326-362-236-326-321-263-261-3_W.mp3
  7: 9456ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\750-175-750 751-571-531-570-175-157-517-517-173-710-107-130-130-751-571-517-517-157-571-571-753-750_W.mp3
  8: 11032ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\103-130-310-310-531-230-542-524-250-103-310-231-130-541-103-106-260-130-261-263-236-130-310-534-547-310-230-230-206-260-547-265-547-143-713-542-106-130-125-105-361-2_W.mp3
  9: 12608ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\631-637-367-367-367-362-367-367-367-361-367-361-367-361-367-367-637-367-637-367-367-361-367-367-361-361-367-367-637-367-637-367-637-361-367-362-637-671-367-367-367-3_W.mp3
  10: 14184ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\456-312-301-130-103-130-231-132-263-265-416-104-230-236-260-264-260-236-203-130-362-326-260-620-260-320-230-267-260-467-457-453-310-301-316-320-624-620-634-413-627-2_W.mp3
  11: 15760ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\312-231-263-320-136-310-310-312-105-123-260-312-320-321-310-310-216-216-213-132-312-130-103-106-130-317-106-106-103-130-103-102-312-310-103-310-103-301-103-103-301-1_V.mp3
  12: 17336ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\670-362-136-165-315-310-103-103-106-105-132-310-675-132-316-132-634-130-162-316-173-764-674-632-210-326-316-310-316-316-236-675-623-103-132-103-236-674-132-102-321-5_W.mp3
  13: 18912ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\547-547-547-541 547-547-547-547-547-547-547-547-547-547-547-547-547-457-547-547-547-547-547-547-547-547-547-541-574 547-547-574-547-547-547-547-547-547-547-547-547-5_W.mp3
  14: 20488ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\543-145-614-230-320-245-201-260-210-106-231-206-203-320-245-104-547-574-132-231-320-320-130-301-302-320-207-204-302-301-103-173-103-302-310-230-541-103-123-103-102-3_V.mp3
  15: 22064ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\103-137-175-571-357-317-735-765-371-756-537-137-106-103-547-320-320-310-236-230-132-105-547-265-534-547-260-105-103-230-564-236-213-130-320-143-310-260-103-105-106-2_W.mp3
  16: 23640ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\625-250-563-267-310-130-562-625-201-301-103-213-321-231-362-302-256-316-560-213-524-524-256-132-657-103-310-514-256-312-540-502-213-321-213-104-567-652-567-564-256-5_W.mp3
  17: 25216ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\107-203-206-310-320-310-103-103-103-103-103-321-413-625-654-312-103-317-132-613-213-126-130-310-164-312-341-362-310-130-132-310-120-102-103-123-201-123-123-132-126-1_V.mp3
  18: 26792ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\753-754-735-375-721-752-736 736-756-752-752-752-752-715-753-753-715-753-375-725-756-725-715-751-765-712 751-715-725-735-753-756-725-721-752-753-735-756-752-752-735 7_W.mp3
  19: 28368ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\321-321-320-576-645-305-615-301-312-136-103-312-312-103-321-312-312-132-312-210-163-102-103-123-316-132-241-163-103-301-241-132-103-263-162-120-126-126-162-160-160-1_W.mp3
  20: 29944ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\670-206-123-261-607-132-263-231-321-543-123-620-620-621-261-236-630-231-320-201-260-263-215-216-213-306-231-123-612-602-231-310-103-263-632-630-302-130-321-261-345-6_W.mp3
  21: 31520ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\573-751-705-705-751-751-715-751-752-753-157-753-751-175-317-715-175-705-710-701-750-750_W.mp3
  22: 33096ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\320-301-123-213-310-102-132-261-542-574-547-310-103-316-301-130-301-163-310-103-130-310-137-173-375-312-367-576-765-360-514-547 652-567 351 351-632-514 263-312 354-1_V.mp3
  23: 34672ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\574-574-574-574-754-574-574-754-574-574-754-754-574-541-541-567-547-547-547-547-547-547-574-547-574-547-574-574-574-574-574-574-517-537-537-574-574-547-547-547-547-5_W.mp3
  24: 36248ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\573-754-754-754-754-754-754-754-754-753-754-754-574-574-754 750-750-754-753-754-573-571-750-754-574-754-574-754-756-754-752 751-750-750-750-750-754-754-752-570-574-7_W.mp3
  25: 37824ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\571-574-571-514-571-517-750-105-570-103-107-213-123_W.mp3
  26: 39400ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\130-310-310-316-351-153-345-342-534-534-156-653-361-361-134-324-301-134-130-321-231-320-231-451-134-365-534-360-326-547-546-562-324-534-526-256-132-321-132-310-312-3_W.mp3
  27: 40976ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\543-534-236-301-302-312-132-231-302-312-312-302-103-134-310-135-130-130-213-132-106-130 310-154-310-132-314-312-320-132-321-310-312-617-453-310-453-645-312-301-310-6_V.mp3
  28: 42552ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\524 615-312-172-356 157-156-301 615-614-123 561-165-102 103-143_V.mp3
  29: 44128ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\675-675-675-675-637-637-675-675-672-672-675-672-675-675-672-637-675-671-673-675-675-675-637-675-673-675-637-675-672-675-673-617-675-675-675-675-675-637-637-637-637-6_W.mp3
  30: 45704ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\260 312-126-145-132-231-312-351-312-123-120-321-156-236-301-310-320-315-132-651-310-231-230-542-213-130-132-201-315-310-103-123-132-123-310-156-516-613-167-321-210 7_W.mp3
  31: 47280ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\630-316-261-260-321-103-543-523-310-231-310-260-123-231-531-310-602-625-103-316-321-103-231-312-130-206-123-541-143-260-623-624-251-312-107-210-201-543-310-213-203-5_W.mp3
  32: 48856ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\321-217-651-164-673-617-632-312-132-567-321-321-310-354-365-216-106-136-316-310-310-620-326-310-376-130-103-625-675-675-635-362-310-236-236-326-130-321-120-216-263-2_W.mp3
  33: 50432ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\263-276-237-326-362-276-362-326-326-326-236-261-361-357-617-157-156-152-135-156-123-132-136-136-136-132-236-123-273-763-765-736-765-765-763-736-376-763-376-763-672-3_W.mp3
  34: 52008ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\754-735-740-752-751-754-754-745-753-752-734-735-746-754-734 756-734-754-750-731-756-754-754-372-754-754-734-753-753-754-753-735-754-732-107-735-735-754-730-705-732-7_W.mp3
  35: 53584ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\326-326-326-362-326-362-362-326-362-326-326-623-326-362-326-326-362-236-236-236-362-326-326-362-362-263-326-326-362-236-236-326-326-362-326-632-326-362-326-362-326-2_W.mp3
  36: 55160ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\267-130-326-542-167-456-452-236-236-236-326-130-601-130-621-260-310-152-163-574-326-623-326-176-312-162-163-623-312-625-325-325-263-263-240-203-542-354-236-563-312-3_W.mp3
  37: 56736ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\135-135-315-371-321-301-531-517-516 105-105-152-571-571-175-135-175-137-532-153-507-517-105-510-105-517-103-157-513-512-157-132 157-175-137-513-751-175-157-570-170-1_V.mp3
  38: 58312ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\547-206-230-203-310-104-264-263-452-230-547-543-145-543-201-260-206-450-540-103-137-371-264-264-263-306-547-103-547-143-264-203-546-564-263-260-206-310-320-264-206-4_W.mp3
  39: 59888ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\230-106-175-106-230-310-547-267-320-236-620-457-130-102-103-547-164-123-230-103-163-540-263-620-620-103-130-163-103-301-103-543-623-413-230-102-163-627-627-103-236-1_V.mp3
  40: 61464ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\602-260-206-301-310-126-321-236-326-321-132-107-320-263-103-134-103-674-310-236-106-134-603-260-310-263-326-265-654-130-105-301-213-321-213-620-103-103-321-261-130-1_V.mp3
  41: 63040ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\106-163-351-546-310-310-236-564-514-260-312-316-143-132-260-541-130-103-103-132-130-310-107-130-130-236-310-130-103-143-260-620-263-562-625-263-260-236-547-106-310-3_W.mp3
  42: 64616ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\321-312-571-375-357-756-715-752-751-752-175-175-751-715-713-731-172-753-173-375_W.mp3
  43: 66192ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\571-571-105-135-301-102-725-275-130-120-150-175-150-315-157-150-157-517-501-517-570-531-517-150-513-571-571-531-157-571-517-150-753 574-571-547-547-574-574-574-574 5_W.mp3
  44: 67768ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\130-310-136-130-136-160-136-610-321-360-731-136-316-321-301-345-310-105-106-756-675-145-143-316-517-251-154-153-765-301-305-301-304-105-456-547-542-543-653-574-574-3_W.mp3
  45: 69344ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\326-236-362-326-236-326-263-362-362-326-263-326-326-326-362-263-362-362-236-326-236-326-326-132-362-237-326-362-236-326-236-362-362-326-326-236-362-326-357-362-237-3_W.mp3
  46: 70920ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\173-130-107-154-107-135-153-175-570-107-357-753-375-371-173-137-173-157-175-715-715-731-751-175-715 571-517-501-510-517-507-571-175-102-170-105-750-715-570-107-715-1_W.mp3
  47: 72496ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\530-132-613-162-123-413-213-574-574-361-132-312-301-316-136-534-203-103-104-105-130-106-103-213-125-547-547-625-625-546-316-231-302-567-136-103-315-547-315-351-513-1_V.mp3
  48: 74072ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\754-750-750-756 321-130-130-107-702-732-302-216-123-312-750-710-756-750-751-107-150 170-721-702-723-726-701-712-701-173-170-170-756-750-175-150-105-106 137-310-102-1_V.mp3
  49: 75648ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\602-362-632-312-236-543-531-103-321-312-354-253-310-453-320-203-260-620 302-310-103-102-132-102-135-137-132-321-312-542-154-301-126-163-260-203-361-540-205-310-546-4_W.mp3
  50: 77224ms, 576ms, D:\GitHub\WKAppBot\bin\wkappbot.hq\profiles\whisper_exp\wav\_unknown\621-451-123-301-231-264-310-136-164-210-657-203-206-203-210-623-230-231-263-130-612-261-132-120-547-541-213-601-604-230-215-542-305-125-546-265-621-263-203-213-206-5_V.mp3

=== Raw Response ===
The WkWave class in scripts/wk_wave.py is a specialized wave analysis tool that uses a technique called MAFT (Moving-Average Fourier Transform). It is designed to extract short-term oscillatory patterns from time-series data (like stock prices) by stripping away local trends.Here is a breakdown of how it works and how you can use it:1. The Core Algorithm: MAFTThe logic inside _calc_basic() (lines 105–174) follows these steps for each period p in your periods list:Detrending: It calculates a Moving Average of length p and subtracts it from the original samples. This leaves only the "residual" (the high-frequency vibration/oscillation).Fourier Analysis: It performs an rfft (Real Fast Fourier Transform) on that residual.Phase & Amplitude Extraction: It looks at the first frequency component (index 1) to determine:Amplitude: The "height" of the wave.Phase: Where we are in the cycle (e.g., peak, trough, or rising).Energy: The squared amplitude, used to weight the importance of this specific period.2. Phase InterpretationThe code uses a standard trigonometric interpretation for the phase (in radians):Phase (Degrees)Cycle PositionTrading/Action Logic0°Neutral (Rising)Upward momentum starting.90°PeakPotential Sell/Overbought.180°Neutral (Falling)Downward momentum starting.270° (-90°)TroughPotential Buy/Oversold.3. Usage ExamplesInitializing with DataYou can pass a list, a NumPy array, or a Pandas Series.Pythonfrom scripts.wk_wave import WkWave
import numpy as np

# Sample price data
prices = [100, 102, 101, 105, 107, 106, 108]
wave = WkWave(prices, periods=(3, 5, 10))

# Get the energy-weighted forecast for the next bar
print(f"Forecast: {wave.forecast}")
print(f"Dominant Period: {wave.main_period}")
Understanding the Output (meta property)The meta property returns a dictionary containing the analysis for each sub-period:subwaves: Detailed breakdown per period.main_phase: The phase of the most "energetic" wave.forecast: The weighted average of next_value across all periods.Implementation Note for your Quant ProjectIn your WkAutoQuant repository, this script seems to act as the "engine" for many of your traders (like hantoo_wave_trader_kr.py).Warning: The __init__ method (line 15) currently handles type normalization. If you pass data that isn't 1-D, it will attempt to .ravel(). Ensure your price data is strictly chronological (oldest to newest) before passing it to WkWave.Would you like me to look at how one of your trader scripts specifically utilizes these WkWave phase values to execute orders?
