banknifty-trading · lora
A Laya typed-decision model, fine-tuned with System One Studio on an Apple silicon Mac. It answers the questions below in a single forward pass, with calibrated probabilities and zero generated tokens.
Base model: convaiinnovations/laya · method: lora, proper objective · trained in
501 minutes on an Apple silicon Mac.
Measured on the held-out test split
| Metric | Base model | This model |
|---|---|---|
| Accuracy | 33.7% | 48.6% [47.1%–50.2%] |
| Calibration error (ECE) | 0.225 | 0.154 |
| Log loss | 1.247 | 1.620 |
| Brier score | 0.772 | 0.666 |
| Decisions scored | 4116 | 4116 |
Fine-tuning fixed 1414 test decisions the base model got wrong and broke 798 it got right (exact McNemar p < 0.001).
Test rows were never trained on. Accuracy intervals are Wilson intervals; the paired test is an exact McNemar test between the base and the fine-tuned model on the same rows.
Use it
pip install systemonemodels
systemone pull banknifty-trading-lora-0930-164021
import json
import laya_mlx as laya # pip install laya-mlx, on Apple silicon
from systemone import snapshot_download
path = snapshot_download("banknifty-trading-lora-0930-164021")
agent = laya.load(str(path))
questions = json.loads((path / "questions.json").read_text())
print(agent.predict("your text here", questions)["answers"])
Ask it these questions: the instructions and option texts are part of the model's input, so changing them changes the task it was tuned for.
{
"alpha_5d": {
"type": "score",
"instructions": "Over the next 5 trading days, how will this stock do against the NSE bank index, scaled by its own volatility, ranked within these 14 banks?",
"criteria": [
"0 bottom fifth",
"1 below middle",
"2 middle",
"3 above middle",
"4 top fifth"
]
},
"outperform_5d": {
"type": "noul",
"instructions": "Will this stock beat the NSE bank index over the next 5 trading days?"
},
"vol_expansion_5d": {
"type": "noul",
"instructions": "Will daily volatility over the next 5 trading days exceed 1.25x the trailing 20-day level?"
},
"drawdown_tail_5d": {
"type": "noul",
"instructions": "Will the close fall more than 1.5 scaled sigmas below today's close on any of the next 5 trading days?"
},
"action": {
"type": "choice",
"instructions": "Given the next 5 trading days, what position fits this stock versus the other banks?",
"criteria": {
"LONG": "",
"SHORT": "",
"NO_TRADE": ""
}
},
"regime_5d": {
"type": "choice",
"instructions": "Which regime will the NSE bank index be in over the next 5 trading days?",
"criteria": {
"TREND_UP": "",
"TREND_DOWN": "",
"RANGE": "",
"HIGH_VOL": ""
}
}
}
The same folder also loads in the upstream PyTorch laya package on Linux and NVIDIA, and
System One Studio can export it to ONNX.
Provenance
{
"base_model": "convaiinnovations/laya",
"hyperparameters": {
"method": "lora",
"objective": "proper",
"epochs": 4,
"batch_size": 32,
"grad_accum": 2,
"lr": 0.0002,
"head_lr": 0.0001,
"lora_rank": 16,
"lora_alpha": 32,
"lora_dropout": 0.05,
"dora": false,
"rslora": false,
"loraplus_ratio": 1,
"lora_layers": 0,
"full_layers": 4,
"head_dropout": 0.1,
"weight_decay": 0.01,
"warmup": 0.06,
"max_grad_norm": 1.0,
"shuffle_options": true,
"class_weighting": "none",
"patience": 2,
"grad_checkpoint": "auto",
"precision": "bfloat16",
"seed": 13
},
"train_decisions": 66216,
"best_epoch": 4,
"temperature": [
1.0855,
1.1888,
1.1693
],
"temperature_by_options": {
"score:3-5": 1.1888,
"noul:2": 1.1693,
"choice:3-5": 1.0855
},
"dataset_sha256": "7c79516d729e16571d7db0be34c810aeb1d8b858333db4c1ff0e550b6d520ec2",
"trained_on": "2026-10-01T01:11:44"
}
License and attribution
Apache-2.0. Laya and its pretrained weights are by
Convai Innovations; this checkpoint is a
fine-tune of convaiinnovations/laya and carries the same licence. Fine-tuned and published with
System One Studio.