Skip to main content

Technical analysis and quantitative trading toolkit for retail investors taking on the market

Project description

dumbmoney

dumbmoney is a technical analysis and quantitative trading toolkit designed for retail investors. The current version provides a unified, transparent interface to fetch daily stock prices across A-shares, H-shares, and US markets by abstracting popular data packages like massive, tushare, and akshare, hiding their implementation complexity.

To use the massive or tushare providers, you must set the required environment variables MASSIVE_KEY or TUSHARE_TOKEN.

📦 Installation

Install only the core:

pip install dumbmoney

🚀 Quick Start

from dumbmoney import fetch_daily_prices, plot_kline

os.environ["TUSHARE_TOKEN"] = "xxxxxx"
os.environ["MASSIVE_KEY"] = "yyyyyy"

df = fetch_daily_prices("AAPL.US", "2025-06-01")
print(df.tail())

fig, _ = plot_kline(df, title="AAPL Daily K-Line Chart")

from matplotlib import pyplot as plt
plt.show()

✨ Features

  • 🔌 One function to fetch prices: fetch_daily_prices(symbol, start, end)
  • 🌏 Multiple markets supported
    • A-shares (.SH, .SZ)
    • H-shares (.HK)
    • US stocks (.US)
  • ⚙️ Automatic provider routing
    • A-shares → TuShare → AkShare
    • H-shares → TuShare → AkShare
    • US stocks → Massive → AkShare
  • 📐 Unified normalized output
    • open, high, low, close, volume
  • 🔁 Fallback logic
    • If one provider fails, the next takes over
  • 🧩 Extensible architecture (plug in new providers)

Important Notice

  • massive's free api key only supports retrieving data of US stocks from the most recent two years.
  • tushare's free token only supports retrieving data of A-shares.
  • akshare is free but depends on third-party data sources that may have variable reliability.

🏷️ Symbol Format

dumbmoney uses suffix-based symbol conventions:

Market Example Symbol
SH 600519.SH or 600519
SZ 000001.SZ or 000001
KCB 688235.SH or 688235
ETF_SH 513090.SH or 513090, 562500.SH or 562500, 588080.SH or 588080
ETF_SZ 159652.SZ or 159652
HK 0700.HK
US AAPL.US

Suffixes for H-shares and US stocks are required. A-share symbols may omit suffixes; however, if they are present, they must be valid and correct.

📘 API Reference

fetch_daily_prices(symbol, start, end, adjust="none")

Fetch normalized daily OHLCV prices.

  • Parameters
Name Type Description
symbol str Stock symbol with suffix (600519.SH, 0700.HK, AAPL.US)
start str Start time, e.g. "2025-01-01"
end str End time, e.g. "2025-12-01"
adjust str Adjustment mode, "none" | "forward" | "backward"
  • Returns

A pandas.DataFrame with:

Column Description
open Opening price
high High
low Low
close Close
volume Traded volume

Index is a DatetimeIndex named date.

plot_kline(data, backend="mpl", indicators=None, volume=None, title=None, **kwargs)

Plot k-line (candlestick) chart using the provided DataFrame data.

  • Parameters
Name Type Description
data pandas.DataFrame DataFrame containing OHLCV columns (open, high, low, close, volume)
backend str Charting backend to use. Currently only "mpl" (mplfinance) is supported.
indicators list or None List of technical indicators to overlay (for future implementation). Default is None.
volume bool or None Whether to plot volume below the k-line chart. Default is None (auto-detect).
title str or None Chart title. Default is None.
**kwargs - Additional keyword arguments passed to the plotting backend.
  • Returns

A tuple (fig, ax) where:

Name Type Description
fig matplotlib.figure.Figure The matplotlib Figure object for the chart.
ax matplotlib.axes.Axes The main Axes object for the k-line chart.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dumbmoney-0.2.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dumbmoney-0.2.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file dumbmoney-0.2.0.tar.gz.

File metadata

  • Download URL: dumbmoney-0.2.0.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dumbmoney-0.2.0.tar.gz
Algorithm Hash digest
SHA256 18bb948ce2a32895672d3d8bf14beab721c496115f02b5c6b3df010f1608ed9c
MD5 7bcebe0fb3b4c0a8fbe15aa11ee76c8c
BLAKE2b-256 4ec5f36092ac6947500e532a55be4b08312abc0f0d3f073b57d1f21f846249dc

See more details on using hashes here.

File details

Details for the file dumbmoney-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dumbmoney-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dumbmoney-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bff636bb6231645fa78694b0c5a164d7a3a6b7916cc668df455c5c982dc3a333
MD5 c2237f060ad1db404448400a343a9016
BLAKE2b-256 3478a59d56da0cacd3ee60d99ffb619ec9ce56b83d459e146daf8f60d7f9ecca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page