Models

Trading

Models here represents any interaction between a user and stocks

class trading.models.TradeBucket(*args, **kwargs)[source]

Bases: django.db.models.base.Model

Same as trade but for buckets

current_value()[source]

The value of the trade on the specific date

class trading.models.TradeStock(*args, **kwargs)[source]

Bases: django.db.models.base.Model

A Trade represents a single exchange of a stock for money

current_value()[source]

Get value calculates the total value of the trade respecting the date

class trading.models.TradingAccount(*args, **kwargs)[source]

Bases: django.db.models.base.Model

A TradingAccount is owned by a user, we associate stock trades with it.

available_buckets(bkt)[source]

Find the available buckets that have quantity > 0

available_cash(update=True)[source]

Returns the available cash for the trading account

available_stocks(stk)[source]

Find available stock

has_enough_bucket(bucket, quantity_bucket)[source]

Check if you have enough bucket to make a trade

has_enough_cash(trade_value)[source]

Check if you have enough cash to make a trade

has_enough_stock(stock, quantity_stock)[source]

Check if you have enough stock to trade

holding_value()[source]

Calculates the value of all equity held by the user

total_value()[source]

Total value of the trading account

trade_bucket(bucket, quantity)[source]

Creates a new trade for the bucket and this account

trade_stock(stock, quantity)[source]

Trades a stock for the account

trading_balance()[source]

The stock values from account

Authentication

Models keeps track of all the persistent data around the user profile

class authentication.models.Profile(*args, **kwargs)[source]

Bases: django.db.models.base.Model

Profile is an extension of django.contrib.auth.models.User, that allows us to store additional values per User.

default_acc()[source]

This method retrieves the default account for the profile. If none exists, a new one will be created with the name ‘default’.

Returns:The default trading.models.TradingAccount.
class authentication.models.UserBank(*args, **kwargs)[source]

Bases: django.db.models.base.Model

The UserBank wraps a connection to Plaid. It stores the access token for the User. At the same time it also caches past queries to reduce initial load time.

account_name(update=True)[source]

Returns the account name

current_balance(update=True)[source]

Returns the latest balance for the bank account. If update is set, then the balance will be synced with the original bank account.

Parameters:update (bool) – Whether to sync with the remote bank account.
Returns:float of the current balance for the account
expenditure(days=30, update=True)[source]

Returns the expenditures in the given timespan

historical_data(*args, **kwargs)[source]

Fetches the historical data (see authentication.plaid_wrapper.PlaidAPI.historical_data())

Returns:list of tuples for the historical data.
income(days=30, update=True)[source]

Returns the income in the given timespan

plaid()[source]

This method instanciates a new authentication.plaid_wrapper.PlaidAPI with the stored access token.

Returns:authentication.plaid_wrapper.PlaidAPI for the User.
authentication.models.create_user_profile(instance, created, **_)[source]

This method will be called every time a django.contrib.auth.models.User is saved. It will create a authentication.models.Profile to associate with the user.

Parameters:
  • instance (django.contrib.auth.models.User) – The User instance that was saved.
  • created – True if the instance was just created.
  • type – bool
authentication.models.save_user_profile(instance, **_)[source]

This method ensures that the authentication.models.Profile is kept in sync with the User (django.contrib.auth.models.User)

Parameters:instance (django.contrib.auth.models.User) – The User instance that was saved.

Stocks

Models keeps track of all the persistent data around stocks

class stocks.models.DailyStockQuote(*args, **kwargs)[source]

Bases: django.db.models.base.Model

DailyStockQuote is one day in the performance of a stock, for example 2nd July GOOGL value is 281.31$

class stocks.models.InvestmentBucket(*args, **kwargs)[source]

Bases: django.db.models.base.Model

An investment bucket represents a collection of stocks to invest in

static accessible_buckets(profile)[source]

Finds all buckets that the user could view

add_attribute(text, is_good=True)[source]

Adds an attribute to an investment bucket

change_config(new_config)[source]

Changes the configuration of the investment bucket to new_config

static create_new_bucket(name, public, owner, available=1000.0)[source]

Creates a new InvestmentBucket

get_stock_configs(date=None)[source]

Get all associated configs

historical(count=None, skip=None)[source]

Fetches the historical value of the bucket.

value_on(date=None)[source]

The value of the bucket on a specific day

class stocks.models.InvestmentBucketDescription(*args, **kwargs)[source]

Bases: django.db.models.base.Model

An investment bucket represents a collection of stocks to invest in

change_description(text)[source]

Changes the description to the given text

class stocks.models.InvestmentStockConfiguration(*args, **kwargs)[source]

Bases: django.db.models.base.Model

Represents the configuration of how much of a stock to invest for a bucket

value_on(date=None)[source]

Returns the current value of the stock configuration

class stocks.models.Stock(*args, **kwargs)[source]

Bases: django.db.models.base.Model

Stock represents a single stock. For example GOOGL

static create_new_stock(ticker, name)[source]

Creates a new stock

static find_stock(text, first=None)[source]

Finds the stocks that contain >text<

latest_quote(date=None)[source]

Returns the latest quote for the stock

quote_in_range(start=None, end=None)[source]

Returns a list of daily stock quotes in the given timerange

trades_for_profile(profile)[source]

Returns all trades the user made with this stock

stocks.models.pre_save_any(sender, instance, *_args, **_kwargs)[source]

Ensures that all constrains are met