v0.2.0 — preemptive IBKR pacing + transparent disk caching Three-tier preemptive rate-limit gate (historical / market_data / orders) wired into every IBKR-bound operation. Soft cap → WARN log, hard cap → 429 RATE_LIMIT_NEAR. Defaults sit BELOW IBKR's documented hard caps to leave headroom. Transparent disk caching for every endpoint that returns historical / quasi-static / piggyback-snapshottable data: - cache_bars: /rates + /ticks per-(class, symbol, timeframe) CSV (wickworks-shaped: time,open,high,low,close,tickVolume; epoch sec). Append-only. Builds long-term goldmine of market data. - cache_meta: long-TTL JSON for contract details, futures expiries, chain strike lists. - historian: live-snapshot piggyback on /tick (bid/ask/last + Greeks for options) + /chain (per-strike rows per snapshot). - exec_history: append-only JSONL ledger for fills + completed orders. All caches mount the host's ./data directory; back it up. Caches OFF in tests, ON by default in prod via config.yaml. 49 new tests, 142 total green. ruff + bandit + audit all clean. Generated clients import paths: Go: github.com/psyb0t/ibkr-httpapi/pkg/clients/go Python: pip install "git+https://github.com/psyb0t/ibkr-httpapi.git@v0.2.0#subdirectory=pkg/clients/python/ibkr-httpapi-client"