Skip to main content

ForexGrand Strategy Modelling Core

ForexGrand Strategy Modelling Core is a Python package for building forex strategy modelling workflows. It includes utilities for loading market data from Cloudflare R2, preparing TFRecord datasets, training models, evaluating model quality, and packaging trained models for deployment.

The distribution name is fg-strategy-modelling-core; the Python import package is forexgrand_core.

Features

  • Cloudflare R2-backed storage access through the S3-compatible API.
  • A runtime configuration helper so users do not have to manually export environment variables.
  • Data loading and local caching for symbol market data.
  • Dataset generation utilities for train, evaluation, and test workflows.
  • Training pipelines for neural-network, KNN, XGBoost, and no-train target models.
  • Model evaluation, performance checks, and model publishing helpers.
  • Extensible preprocessing classes for custom feature pipelines.

Installation

Install from PyPI:

pip install fg-strategy-modelling-core

Install from source for development:

git clone https://github.com/forexgrand/fg-strategy-modelling-core.git
cd fg-strategy-modelling-core
pip install -e ".[dev]"

Command Line Interface

Installing the package provides an fg_core command with data workflow subcommands:

fg_core download_data EURUSD forex --bucket forexgrand-data --source mt5
fg_core generate_train_data EURUSD forex --sequence-length 2800 --stride 100
fg_core preprocess_data prices.parquet preprocess.py --output data/processed.pkl.gz

preprocess.py must define preprocess_fn(dataframe). The input can be CSV, Parquet, or a pickle file, and the preprocessing result is saved as a gzip-compressed pickle. Each command prints a JSON object containing its output path and summary information. Storage credentials and other runtime settings use the same environment variables as the Python API.

Configure Cloudflare R2

The package currently supports Cloudflare R2 storage. Configure it at the start of your script with configure_r2:

from forexgrand_core import configure_r2

settings = configure_r2(
    account_id="your-cloudflare-account-id",
    access_key_id="your-r2-access-key-id",
    secret_access_key="your-r2-secret-access-key",
    bucket_name="forexgrand-data",
    train_bucket_name="forexgrand-train",
    eval_bucket_name="forexgrand-eval",
    test_bucket_name="forexgrand-test",
    model_upload_bucket="forexgrand-models",
)

You can pass endpoint="https://<account-id>.r2.cloudflarestorage.com" instead of account_id if you already have the full endpoint.

configure_r2 sets these environment variables for the current Python process and returns a fresh Settings object:

Variable Purpose
S3_STORAGE_OPTION Always set to cloudflare
S3_ENDPOINT Cloudflare R2 S3 API endpoint
S3_ACCESS_KEY R2 access key ID
S3_SECRET_KEY R2 secret access key
S3_REGION_NAME R2 region, defaults to auto
S3_BUCKET_NAME Main data bucket
TRAIN_BUCKET_NAME Training dataset bucket
EVAL_BUCKET_NAME Evaluation dataset bucket
TEST_BUCKET_NAME Test dataset bucket
MODEL_UPLOAD_BUCKET Trained model upload bucket

If bucket-specific names are omitted, bucket_name is reused for all buckets.

Load Market Data

from forexgrand_core import configure_r2
from forexgrand_core.data_manager import DataManager

configure_r2(
    account_id="your-cloudflare-account-id",
    access_key_id="your-r2-access-key-id",
    secret_access_key="your-r2-secret-access-key",
    bucket_name="forexgrand-data",
)

manager = DataManager(base_bucket_name="forexgrand-data")
df, properties = manager.load_data(
    symbol_pair="EURUSD",
    instrument_group="forex",
)

Generate Training Data

import tensorflow as tf
from forexgrand_core import configure_r2
from forexgrand_core.pipeline.no_train_trainer import NoTrainTrainer
from forexgrand_core.pipeline.preprocessing.base_preprocessor import PreprocessBase
from forexgrand_core.schemas import SymbolIn, TimeBasedTarget


class Preprocess(PreprocessBase):
    def preprocess(self, data, training=False):
        return {"direction": tf.zeros(tf.shape(data["close"])[0], dtype=tf.int64)}

    def features_metadata(self):
        return {"direction": tf.io.FixedLenFeature([], tf.int64)}

configure_r2(
    account_id="your-cloudflare-account-id",
    access_key_id="your-r2-access-key-id",
    secret_access_key="your-r2-secret-access-key",
    bucket_name="forexgrand-data",
)

trainer = NoTrainTrainer(
    symbols=[SymbolIn(symbol="EURUSD", group="forex")],
    sequence_length=2800,
    preprocessor_class=Preprocess,
    target_model_type=TimeBasedTarget(stop_minutes=60, mode="prices"),
    run_performance_test=False,
    hot_reload_data=False,
    upload_models=True,
    target_percentile=99,
    use_dataframe_format=False,
)
results = trainer.run()

For data generation APIs, pass source explicitly when the data is not under the DATA_SOURCE environment value:

data_gen.load_single_data(..., source="metaquotes")
data_gen.load_data(..., source="metaquotes")

Validate Configuration

Configuration is not validated on package import, so import forexgrand_core works before credentials are available. Validate explicitly when you want a clear setup error:

from forexgrand_core.env_validator import validate_environment_on_import

validate_environment_on_import()

Build And Publish To PyPI

Install build tools:

python -m pip install --upgrade build twine

Build the source distribution and wheel:

python -m build

Check the package:

python -m twine check dist/*

Upload to TestPyPI first:

python -m twine upload --repository testpypi dist/*

Upload to PyPI:

python -m twine upload dist/*

Development

Run tests:

pytest

Build locally:

python -m build

Check imports:

import forexgrand_core
from forexgrand_core import configure_r2, Settings

License

MIT

Download files

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

Source Distribution

fg_strategy_modelling_core-0.1.1.tar.gz (89.1 kB view details)

Uploaded Source

Built Distribution

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

fg_strategy_modelling_core-0.1.1-py3-none-any.whl (115.6 kB view details)

Uploaded Python 3

File details

Details for the file fg_strategy_modelling_core-0.1.1.tar.gz.

File metadata

File hashes

Hashes for fg_strategy_modelling_core-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4874e5f15d14c68a969b3d9b565dbbdcde78a783e1c510153239f7ad6d94bcdc
MD5 2c2db0c928ddb3867afa39cbf2cc0b21
BLAKE2b-256 b8588e6c598282d411a93e759122636afcfcbdffb83b2490443f85f30d30b4e1

See more details on using hashes here.

File details

Details for the file fg_strategy_modelling_core-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for fg_strategy_modelling_core-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 20bf9a142140095a495d926e3ac0243ae21d9a219c95fa0c78036d3ca77407ce
MD5 45534ba71f1c1bf693ba6ff00bac1150
BLAKE2b-256 ae44dde585c19fc492f624f58122ac82809af44fb2982213f8a5e22f007f8ece

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.5

2 files

0.2.4

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page