Metadata-Version: 2.4
Name: numin2
Version: 1.0.10
Summary: numin package
Author-email: Gautam Shroff <gautam.shroff@iiitd.ac.in>
Project-URL: Homepage, https://github.com/gmshroff/ai_fin
Project-URL: Issues, https://github.com/gmshroff/ai_fin/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: anvil_uplink
Requires-Dist: import_ipynb
Requires-Dist: ipython
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: pandas_ta
Requires-Dist: pytz
Requires-Dist: requests

# numin2 Package

**numin2** is a Python package designed for algorithmic trading and backtesting providing an API called **Numin2API**.

**numin (v1)** is a different package!!

**numin2** is under development; features available are documented below

## Features

- **Data Retrieval:** Download training, round, and validation data.
- **Prediction Submission:**  TBD
- **Real-Time Round Management:** TBD
- **Backtesting:** Backtesting cross-sectional predictions vs targets for Nifty50
- **File Management:** TBD
- **Returns Summary:** TBD

## Supported Methods

- **Data Download:**
    - `Numin2API().get_data_for_month(self,year,month,batch_size=4,window_size=100,target_type='rank'):`
    -   Returns batches of sequences (lists) for the given year and month of Nifty 50 or n returns
    -   Dimension of each sequence is window,n. Returns NuminDataset of shape batch_size,window_size,n for features. Default n=50. (Later n will be a parameter).
    -   Targets are next day returns / ranked returns of shape batch_size,n
    
    - `Numin2API().download_data(outfile,type='daily',features='returns')`
    -   Download data for a given type and features
    -   type can be 'daily','intraday'
    -   features can be 'returns' (close returns),'open_close' (open-close returns), or 'ohlcv'
    -   outfile is the name of the parquet file to save the data   
    
    - `get_range_dataloader(data_path: str, start_year: int, start_month: int,
                         end_year: int, end_month: int,
                         batch_size: int = 32, window_size: int = 100,
                         target_type: str = 'raw', top_k: int = 10)`
    -   Returns a torch dataloader for the given range of years and months of Nifty 50 or n returns
    -   Dimension of each day is window,n. Returns tensor of shape batch_size,window_size,n for features. Default n=50. (Later n will be a parameter).
    -   Targets are next day returns / ranked returns of shape batch_size,n 
   
    - `get_dataloader(data_path: str, batch_size: int = 32, window_size: int = 100,
                         target_type: str = 'raw', top_k: int = 10)`
    -   Returns a torch dataloader for the given range of years and months of Nifty 50 or n returns
    -   Dimension of each day is window,n. Returns tensor of shape batch_size,window_size,n for features. Default n=50. (Later n will be a parameter).
    -   Targets are next day returns / ranked returns of shape batch_size,n 

    - `Numin2API()fetch_intraday_raw_data(delta=50,features='returns')`
    -  fetches current intraday data given delta time in minutes before current time
    -  returns dataframe that can be appended to the consolidated data file or used in memory
    -  features can be returns or ohlcv

- **Backytesting**
    - `backtest_positions(positions,targets,txn_costs=.9)`
    - `backtest_positions(positions,targets,txn_costs=.1)`
    - Takes a batch of positions for 50 stocks
    - Each position is a list of length 51, 0 position for cash, rest interpreted as weight with which capital is allocated. So 1 0 0 0 .. means no positions all cash. Sum must be non-zero.
    - Targets are returns (real numbers) for each of these stocks ove the batch.
    - Returns a dict such as {'daily_pnl','total_profit','sharpe_ratio,'mean_daily_return'}

## Installation

Install numin2 using pip:

```bash
pip install numin2
