Skip to content

Commit

Permalink
campaigns
Browse files Browse the repository at this point in the history
  • Loading branch information
Zargham committed Jul 22, 2019
1 parent 3f712ab commit 1bd5156
Show file tree
Hide file tree
Showing 3 changed files with 272 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .ipynb_checkpoints/funding campaign demo-checkpoint.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 2
}
Binary file added camp_logics.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
266 changes: 266 additions & 0 deletions funding campaign demo.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from datetime import datetime, timedelta\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"#campaigns\n",
"init_date = datetime.now()\n",
"\n",
"campaigns = {1:{'name': 'ABC field test', \n",
" 'min_raise': 984.0, \n",
" 'max_raise': 1500.0, \n",
" 'cutoff_date': init_date+timedelta(days=365*2/12.0),\n",
" 'expected_time': timedelta(days=365*8/12.0)},\n",
" 2:{'name': 'Giveth field test', \n",
" 'min_raise': 726.0, \n",
" 'max_raise': 1500.0, \n",
" 'cutoff_date': init_date+timedelta(days=365*4/12),\n",
" 'expected_time': timedelta(days=365*6/12.0)},\n",
" 3:{'name': 'CV field test', \n",
" 'min_raise': 1140.0, \n",
" 'max_raise': 2000.0, \n",
" 'cutoff_date': init_date+timedelta(days=365*6/12),\n",
" 'expected_time': timedelta(days=365*12/12)},\n",
" 4:{'name': 'Analytics', \n",
" 'min_raise': 780.0, \n",
" 'max_raise': 1500.0, \n",
" 'cutoff_date': init_date+timedelta(days=365*4/12.0),\n",
" 'expected_time': timedelta(days=365*16/12.0)},\n",
" 5:{'name': 'Mobile first', \n",
" 'min_raise': 1610.0, \n",
" 'max_raise': 2500.0, \n",
" 'cutoff_date': init_date+timedelta(days=365*8/12.0),\n",
" 'expected_time': timedelta(days=365*24/12.0)},\n",
" 6:{'name': 'Easy Deploy', \n",
" 'min_raise': 1500.0, \n",
" 'max_raise': 3000.0, \n",
" 'cutoff_date': init_date+timedelta(days=365*6/12.0),\n",
" 'expected_time': timedelta(days=365*30/12.0)},\n",
" \n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1: {'cutoff_date': datetime.datetime(2019, 9, 21, 7, 16, 2, 960914),\n",
" 'expected_time': datetime.timedelta(243, 28800),\n",
" 'max_raise': 1500.0,\n",
" 'min_raise': 984.0,\n",
" 'name': 'ABC field test'},\n",
" 2: {'cutoff_date': datetime.datetime(2019, 11, 21, 3, 16, 2, 960914),\n",
" 'expected_time': datetime.timedelta(182, 43200),\n",
" 'max_raise': 1500.0,\n",
" 'min_raise': 726.0,\n",
" 'name': 'Giveth field test'},\n",
" 3: {'cutoff_date': datetime.datetime(2020, 1, 20, 23, 16, 2, 960914),\n",
" 'expected_time': datetime.timedelta(365),\n",
" 'max_raise': 2000.0,\n",
" 'min_raise': 1140.0,\n",
" 'name': 'CV field test'},\n",
" 4: {'cutoff_date': datetime.datetime(2019, 11, 21, 3, 16, 2, 960914),\n",
" 'expected_time': datetime.timedelta(486, 57600),\n",
" 'max_raise': 1500.0,\n",
" 'min_raise': 780.0,\n",
" 'name': 'Analytics'},\n",
" 5: {'cutoff_date': datetime.datetime(2020, 3, 21, 19, 16, 2, 960914),\n",
" 'expected_time': datetime.timedelta(730),\n",
" 'max_raise': 2500.0,\n",
" 'min_raise': 1610.0,\n",
" 'name': 'Mobile first'},\n",
" 6: {'cutoff_date': datetime.datetime(2020, 1, 20, 23, 16, 2, 960914),\n",
" 'expected_time': datetime.timedelta(912, 43200),\n",
" 'max_raise': 3000.0,\n",
" 'min_raise': 1500.0,\n",
" 'name': 'Easy Deploy'}}"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"campaigns"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"tranches = { tr:{'raised':0, 'status':'not_started'} for tr in range(2,7)}\n",
"tranches[1] = {'raised':0, 'status':'active'}\n",
"state = {'new_raised':0,'total_raised': 0, 'active_tranche':1,'tranches': tranches}"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'active_tranche': 1,\n",
" 'new_raised': 0,\n",
" 'total_raised': 0,\n",
" 'tranches': {1: {'raised': 0, 'status': 'active'},\n",
" 2: {'raised': 0, 'status': 'not_started'},\n",
" 3: {'raised': 0, 'status': 'not_started'},\n",
" 4: {'raised': 0, 'status': 'not_started'},\n",
" 5: {'raised': 0, 'status': 'not_started'},\n",
" 6: {'raised': 0, 'status': 'not_started'}}}"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"state"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"T = 52*3\n",
"dt = timedelta(weeks =1)\n",
"\n",
"def gen_raise(thresh = .3, scale = 10):\n",
" rv = np.random.rand()\n",
" if rv < thresh:\n",
" return 0\n",
" else :\n",
" return rv*scale"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"camp_logics.png\">"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
" \n",
"def tranche_iter_logic(week, state):\n",
" \n",
" ct = state['active_tranche']\n",
" \n",
" ct_data = state['tranches'][ct]\n",
" \n",
" #is the deadline passed:\n",
" if ct_data['raised'] > ct_data['max_raise']:\n",
" \n",
" \n",
" elif week > campaigns[ct]['cutoff_date']:\n",
" \n",
" #is the cap reached\n",
" elif \n",
" \n",
" \n",
" \n",
" return "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['active',\n",
" 'not_started',\n",
" 'not_started',\n",
" 'not_started',\n",
" 'not_started',\n",
" 'not_started']"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tranch_status"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"states = [state]\n",
"for t in range(T):\n",
" new_raise = gen_raise()\n",
" state['new_raised'] = new_raise\n",
" state['total_raised'] = state['total_raised'] + new_raise\n",
" \n",
" #\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

0 comments on commit 1bd5156

Please sign in to comment.